ORYKSAORYKSADevelopers
Obter chaves de API

O modelo ORYKSA (compatível com OpenAI)

Usa a ORYKSA como o modelo de IA de qualquer automação, em vez da OpenAI ou do OpenRouter. Os nodes do teu n8n falam com o YouTube, Instagram, LinkedIn, Google Drive ou Google Sheets com as tuas contas; a ORYKSA escreve, resume, classifica, extrai e decide que ferramenta chamar. O consumo sai das interações do teu plano.

POST/v1/chat/completions
GET/v1/models

Dois modelos

ModeloO que é
oryksaO modelo geral. Segue o teu prompt de sistema e as tuas mensagens exatamente como as envias. Suporta ferramentas, saída em JSON e streaming. Não sabe nada da tua conta e nunca age nela. É este que substitui a OpenAI.
oryksa-assistantO teu próprio assistente ORYKSA, com o conhecimento e os dados do teu negócio. Só responde. As ferramentas são ignoradas.

Qualquer outro nome de modelo (por exemplo gpt-4o, já escrito num fluxo) é respondido pelo oryksa, para os fluxos existentes continuarem a funcionar.

curl https://api.oryksa.com/v1/chat/completions \
  -H "Authorization: Bearer oryk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "oryksa",
    "messages": [
      {"role": "system", "content": "Escreves posts para o LinkedIn. Curtos, uma ideia, sem hashtags."},
      {"role": "user", "content": "Vídeo novo: 5 erros ao dar preço aos teus serviços."}
    ]
  }'
import os
from openai import OpenAI

client = OpenAI(api_key=os.environ["ORYKSA_API_KEY"], base_url="https://api.oryksa.com/v1")
out = client.chat.completions.create(
    model="oryksa",
    messages=[
        {"role": "system", "content": "Escreves posts para o LinkedIn. Curtos, uma ideia, sem hashtags."},
        {"role": "user", "content": "Vídeo novo: 5 erros ao dar preço aos teus serviços."},
    ],
)
print(out.choices[0].message.content, out.usage.total_tokens)

O que é suportado

FuncionalidadeSuporte
messagessystem, developer, user, assistant e tool, inteiras e por ordem. Texto e imagens (image_url com https ou data:image, até 4).
tools, tool_choiceChamada de funções no formato da OpenAI: a resposta traz tool_calls e finish_reason: "tool_calls".
response_formatjson_object e json_schema.
streamServer-sent events verdadeiros, pedaço a pedaço, incluindo chamadas de ferramentas, terminados por [DONE]. stream_options.include_usage é suportado.
usageContagem real de tokens. As tuas interações vêm no campo extra oryksa.
temperature, top_p, stop, seed, max_tokens, max_completion_tokensSuportados.
nSó 1.
functions, function_callNão suportados: usa tools.

Ferramentas

Envia as ferramentas que o teu fluxo tem. Quando o modelo quer uma, responde com a chamada; o teu fluxo executa-a e devolve o resultado numa mensagem tool. Cada resposta do modelo gasta uma interação, por isso um agente que dá 4 voltas gasta 4.

{
  "model": "oryksa",
  "messages": [{"role": "user", "content": "Acrescenta a Ana com 3 unidades à folha"}],
  "tools": [{
    "type": "function",
    "function": {
      "name": "sheets_append",
      "description": "Append a row to the sheet",
      "parameters": {"type": "object", "properties": {"row": {"type": "array", "items": {"type": "string"}}}, "required": ["row"]}
    }
  }]
}
{
  "id": "chatcmpl-8f1c2a7e5b9d4c3fa1e0b6d2c4f7a9e1",
  "object": "chat.completion",
  "created": 1791072000,
  "model": "oryksa",
  "choices": [{
    "index": 0,
    "message": {
      "role": "assistant",
      "content": null,
      "tool_calls": [{"id": "call_1", "type": "function", "function": {"name": "sheets_append", "arguments": "{\"row\": [\"Ana\", \"3\"]}"}}]
    },
    "finish_reason": "tool_calls"
  }],
  "usage": {"prompt_tokens": 96, "completion_tokens": 18, "total_tokens": 114},
  "oryksa": {"interactions_spent": 1, "interactions_remaining": 2873, "interactions_limit": 3000}
}

Saída em JSON

Para extração e classificação, pede uma forma fixa:

"response_format": {
  "type": "json_schema",
  "json_schema": {
    "name": "lead",
    "strict": true,
    "schema": {
      "type": "object",
      "properties": {"name": {"type": "string"}, "email": {"type": "string"}},
      "required": ["name", "email"],
      "additionalProperties": false
    }
  }
}

Limites

LimiteValor
Texto num pedido (mensagens, definições de ferramentas, argumentos)32 000 caracteres
Resposta2 000 tokens (um max_tokens mais alto é limitado a este valor; uma resposta que não cabe termina com finish_reason: "length")
Pedidos60 por minuto por conta
Imagens4 por pedido

Acima de um limite a API responde 400 e diz o campo em param. Nada é cortado em silêncio.

Interações

Uma interação por cada resposta que o modelo gera, pela mesma contagem de todos os outros canais. Quando o plano não tem mais, a API responde 402 interaction_limit_reached.

Usar no n8n

  1. No n8n, cria uma credencial do tipo OpenAI. Em API Key cola a tua chave oryk_live_ e em Base URL escreve https://api.oryksa.com/v1.
  2. Em qualquer node que receba um modelo de chat (AI Agent, Basic LLM Chain, Information Extractor, Text Classifier, Summarization Chain), junta um OpenAI Chat Model com essa credencial e escolhe o modelo oryksa.
  3. A opção Use Responses API pode ficar ligada ou desligada: a ORYKSA responde nos dois formatos.
  4. Liga os teus outros nodes (YouTube, Google Sheets, Google Drive, LinkedIn) com as tuas contas, como farias com qualquer outro modelo.

Erros

CódigoO que é
400 invalid_requestO corpo não é válido. param diz o campo.
400 input_too_largeMais de 32 000 caracteres de texto.
400 content_policyO pedido foi recusado pelo filtro de segurança de conteúdo.
402 interaction_limit_reachedSem interações neste período.
429 rate_limitedMais de 60 pedidos por minuto.
503 model_unavailableO modelo não está disponível agora. Tenta daqui a pouco.

Identificar os pedidos no extrato de consumo

No node HTTP Request, liga Send Headers e acrescenta:

  • X-Oryksa-Source = n8n
  • X-Oryksa-Workflow = {{ encodeURIComponent($workflow.name) }}
  • X-Oryksa-Workflow-Id = {{ $workflow.id }}
  • X-Oryksa-Execution-Id = {{ $execution.id }}

No node OpenAI só dá para pôr um cabeçalho fixo, na credencial: acrescenta X-Oryksa-Source = n8n. O extrato mostra n8n, sem o nome do workflow. Para ver cada workflow, usa o node HTTP Request.

O Make e o Zapier funcionam da mesma forma, com make ou zapier em X-Oryksa-Source.

Responses API

POST https://api.oryksa.com/v1/responses é o formato Responses da OpenAI por cima do mesmo modelo de /v1/chat/completions. Serve para os nodes e bibliotecas que já usam esse formato: muda só o endereço base e a chave.

O que funciona: input (texto ou lista de mensagens), instructions, ferramentas de função (tools, tool_choice, e os itens function_call e function_call_output na conversa), saída em JSON (text.format com json_object ou json_schema), max_output_tokens, temperature, top_p e stream.

O que não existe: as ferramentas próprias da OpenAI (pesquisa na web, pesquisa em ficheiros, interpretador de código) e conversas guardadas. A ORYKSA não guarda nada: store é sempre false e previous_response_id dá erro 400. Envia a conversa inteira em cada pedido.

Custo: 1 interação por resposta, igual a /v1/chat/completions. Limites: os mesmos (32 000 caracteres de texto por pedido, resposta até 2 000 tokens, 60 pedidos por minuto). Nada é cobrado quando o pedido falha.

Os modelos são os mesmos: oryksa (modelo geral; qualquer outro nome é tratado como oryksa) e oryksa-assistant (o teu assistente, só resposta).

curl https://api.oryksa.com/v1/responses \
  -H "Authorization: Bearer oryk_live_..." -H "Content-Type: application/json" \
  -d '{"model": "oryksa", "instructions": "Answer in one sentence.", "input": "What is an embedding?"}'

Embeddings

POST https://api.oryksa.com/v1/embeddings transforma textos em vetores, no formato da OpenAI, para pesquisa por significado e bases de conhecimento (por exemplo os nodes de vetores do n8n).

Envia input (um texto ou uma lista de textos; até 256 textos e 32 000 caracteres no total por pedido). Opcionais: dimensions e encoding_format (float ou base64). O campo model é aceite e ignorado: o modelo é sempre oryksa-embeddings.

Custo: 1 interação por pedido, seja qual for o número de textos. Nada é cobrado quando o pedido falha.

Importante: os vetores só se comparam com vetores feitos pelo mesmo modelo. Não mistures, na mesma base, vetores da ORYKSA com vetores de outro fornecedor.

curl https://api.oryksa.com/v1/embeddings \
  -H "Authorization: Bearer oryk_live_..." -H "Content-Type: application/json" \
  -d '{"input": ["first text", "second text"]}'