O modelo ORYKSA (compatível com OpenAI)
Use a ORYKSA como o modelo de IA de qualquer automação, no lugar da OpenAI ou do OpenRouter. Os nodes do seu n8n falam com YouTube, Instagram, LinkedIn, Google Drive ou Google Sheets com as suas contas; a ORYKSA escreve, resume, classifica, extrai e decide qual ferramenta chamar. O consumo sai das interações do seu plano.
Dois modelos
| Modelo | O que é |
|---|---|
oryksa | O modelo geral. Segue o seu prompt de sistema e as suas mensagens exatamente como você envia. Suporta ferramentas, saída em JSON e streaming. Não sabe nada da sua conta e nunca age nela. É este que substitui a OpenAI. |
oryksa-assistant | O seu próprio assistente ORYKSA, com o conhecimento e os dados do seu negócio. Só responde. As ferramentas são ignoradas. |
Qualquer outro nome de modelo (por exemplo gpt-4o, já escrito em um fluxo) é respondido pelo oryksa, para os fluxos existentes continuarem funcionando.
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": "Você escreve posts para o LinkedIn. Curtos, uma ideia, sem hashtags."},
{"role": "user", "content": "Vídeo novo: 5 erros ao dar preço aos seus 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": "Você escreve posts para o LinkedIn. Curtos, uma ideia, sem hashtags."},
{"role": "user", "content": "Vídeo novo: 5 erros ao dar preço aos seus serviços."},
],
)
print(out.choices[0].message.content, out.usage.total_tokens)O que é suportado
| Recurso | Suporte |
|---|---|
messages | system, developer, user, assistant e tool, inteiras e em ordem. Texto e imagens (image_url com https ou data:image, até 4). |
tools, tool_choice | Chamada de funções no formato da OpenAI: a resposta traz tool_calls e finish_reason: "tool_calls". |
response_format | json_object e json_schema. |
stream | Server-sent events de verdade, pedaço a pedaço, incluindo chamadas de ferramentas, terminados por [DONE]. stream_options.include_usage é suportado. |
usage | Contagem real de tokens. As suas interações vêm no campo extra oryksa. |
temperature, top_p, stop, seed, max_tokens, max_completion_tokens | Suportados. |
n | Só 1. |
functions, function_call | Não suportados: use tools. |
Ferramentas
Envie as ferramentas que o seu fluxo tem. Quando o modelo quer uma, ele responde com a chamada; o seu fluxo executa e devolve o resultado em uma mensagem tool. Cada resposta do modelo gasta uma interação, então um agente que dá 4 voltas gasta 4.
{
"model": "oryksa",
"messages": [{"role": "user", "content": "Adicione a Ana com 3 unidades na planilha"}],
"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, peça um formato fixo:
"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
| Limite | Valor |
|---|---|
| Texto em um pedido (mensagens, definições de ferramentas, argumentos) | 32 000 caracteres |
| Resposta | 2 000 tokens (um max_tokens mais alto é limitado a este valor; uma resposta que não cabe termina com finish_reason: "length") |
| Pedidos | 60 por minuto por conta |
| Imagens | 4 por pedido |
Acima de um limite a API responde 400 e informa o campo em param. Nada é cortado em silêncio.
Interações
Uma interação para 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
- No n8n, crie uma credencial do tipo OpenAI. Em API Key cole a sua chave
oryk_live_e em Base URL escrevahttps://api.oryksa.com/v1. - Em qualquer node que receba um modelo de chat (AI Agent, Basic LLM Chain, Information Extractor, Text Classifier, Summarization Chain), adicione um OpenAI Chat Model com essa credencial e escolha o modelo
oryksa. - A opção Use Responses API pode ficar ligada ou desligada: a ORYKSA responde nos dois formatos.
- Conecte os seus outros nodes (YouTube, Google Sheets, Google Drive, LinkedIn) com as suas contas, como faria com qualquer outro modelo.
Erros
| Código | O que é |
|---|---|
400 invalid_request | O corpo não é válido. param informa o campo. |
400 input_too_large | Mais de 32 000 caracteres de texto. |
400 content_policy | O pedido foi recusado pelo filtro de segurança de conteúdo. |
402 interaction_limit_reached | Sem interações neste período. |
429 rate_limited | Mais de 60 pedidos por minuto. |
503 model_unavailable | O modelo não está disponível agora. Tente daqui a pouco. |
Identificar as solicitações no extrato de consumo
No node HTTP Request, ative Send Headers e adicione:
X-Oryksa-Source=n8nX-Oryksa-Workflow={{ encodeURIComponent($workflow.name) }}X-Oryksa-Workflow-Id={{ $workflow.id }}X-Oryksa-Execution-Id={{ $execution.id }}
No node OpenAI só dá para colocar um cabeçalho fixo, na credencial: adicione X-Oryksa-Source = n8n. O extrato mostra n8n, sem o nome do workflow. Para ver cada workflow, use o node HTTP Request.
O Make e o Zapier funcionam do mesmo jeito, com make ou zapier em X-Oryksa-Source.
Responses API
POST https://api.oryksa.com/v1/responses é o formato Responses da OpenAI em cima do mesmo modelo de /v1/chat/completions. Serve para os nodes e bibliotecas que já usam esse formato: mude 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 (busca na web, busca em arquivos, interpretador de código) e conversas salvas. A ORYKSA não guarda nada: store é sempre false e previous_response_id dá erro 400. Envie 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 de 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 seu 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 busca por significado e bases de conhecimento (por exemplo os nodes de vetores do n8n).
Envie 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 é aceito e ignorado: o modelo é sempre oryksa-embeddings.
Custo: 1 interação por pedido, qualquer que seja 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 misture, 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"]}'
