ORYKSAORYKSADevelopers
Obtener claves de API

El modelo ORYKSA (compatible con OpenAI)

Usa ORYKSA como el modelo de IA de cualquier automatización, en lugar de OpenAI u OpenRouter. Los nodes de tu n8n hablan con YouTube, Instagram, LinkedIn, Google Drive o Google Sheets con tus cuentas; ORYKSA escribe, resume, clasifica, extrae y decide qué herramienta llamar. El consumo sale de las interacciones de tu plan.

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

Dos modelos

ModeloQué es
oryksaEl modelo general. Sigue tu prompt de sistema y tus mensajes exactamente como los envías. Admite herramientas, salida en JSON y streaming. No sabe nada de tu cuenta y nunca actúa en ella. Es el que sustituye a OpenAI.
oryksa-assistantTu propio asistente ORYKSA, con el conocimiento y los datos de tu negocio. Solo responde. Las herramientas se ignoran.

Cualquier otro nombre de modelo (por ejemplo gpt-4o, ya escrito en un flujo) lo responde oryksa, para que los flujos existentes sigan 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": "Escribes publicaciones para LinkedIn. Cortas, una idea, sin hashtags."},
      {"role": "user", "content": "Vídeo nuevo: 5 errores al poner precio a tus servicios."}
    ]
  }'
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": "Escribes publicaciones para LinkedIn. Cortas, una idea, sin hashtags."},
        {"role": "user", "content": "Vídeo nuevo: 5 errores al poner precio a tus servicios."},
    ],
)
print(out.choices[0].message.content, out.usage.total_tokens)

Qué se admite

FunciónSoporte
messagessystem, developer, user, assistant y tool, enteros y en orden. Texto e imágenes (image_url con https o data:image, hasta 4).
tools, tool_choiceLlamada a funciones en el formato de OpenAI: la respuesta trae tool_calls y finish_reason: "tool_calls".
response_formatjson_object y json_schema.
streamServer-sent events de verdad, trozo a trozo, incluidas las llamadas a herramientas, terminados por [DONE]. Se admite stream_options.include_usage.
usageRecuento real de tokens. Tus interacciones vienen en el campo extra oryksa.
temperature, top_p, stop, seed, max_tokens, max_completion_tokensAdmitidos.
nSolo 1.
functions, function_callNo admitidos: usa tools.

Herramientas

Envía las herramientas que tiene tu flujo. Cuando el modelo quiere una, responde con la llamada; tu flujo la ejecuta y devuelve el resultado en un mensaje tool. Cada respuesta del modelo gasta una interacción, así que un agente que da 4 vueltas gasta 4.

{
  "model": "oryksa",
  "messages": [{"role": "user", "content": "Añade a Ana con 3 unidades a la hoja"}],
  "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}
}

Salida en JSON

Para extracción y clasificación, pide una forma fija:

"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
    }
  }
}

Límites

LímiteValor
Texto en una petición (mensajes, definiciones de herramientas, argumentos)32 000 caracteres
Respuesta2 000 tokens (un max_tokens más alto se limita a este valor; una respuesta que no cabe termina con finish_reason: "length")
Peticiones60 por minuto por cuenta
Imágenes4 por petición

Por encima de un límite la API responde 400 e indica el campo en param. Nunca se corta nada en silencio.

Interacciones

Una interacción por cada respuesta que genera el modelo, con el mismo recuento que todos los demás canales. Cuando el plan no tiene más, la API responde 402 interaction_limit_reached.

Usarlo en n8n

  1. En n8n, crea una credencial de tipo OpenAI. En API Key pega tu clave oryk_live_ y en Base URL escribe https://api.oryksa.com/v1.
  2. En cualquier node que reciba un modelo de chat (AI Agent, Basic LLM Chain, Information Extractor, Text Classifier, Summarization Chain), añade un OpenAI Chat Model con esa credencial y elige el modelo oryksa.
  3. La opción Use Responses API puede estar activada o desactivada: ORYKSA responde en los dos formatos.
  4. Conecta tus otros nodes (YouTube, Google Sheets, Google Drive, LinkedIn) con tus cuentas, como harías con cualquier otro modelo.

Errores

CódigoQué es
400 invalid_requestEl cuerpo no es válido. param indica el campo.
400 input_too_largeMás de 32 000 caracteres de texto.
400 content_policyLa petición fue rechazada por el filtro de seguridad de contenido.
402 interaction_limit_reachedSin interacciones en este periodo.
429 rate_limitedMás de 60 peticiones por minuto.
503 model_unavailableEl modelo no está disponible ahora. Inténtalo en un momento.

Identificar las peticiones en el extracto de consumo

En el node HTTP Request, activa Send Headers y añade:

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

En el node OpenAI solo se puede poner una cabecera fija, en la credencial: añade X-Oryksa-Source = n8n. El extracto muestra n8n, sin el nombre del workflow. Para ver cada workflow, usa el node HTTP Request.

Make y Zapier funcionan igual, con make o zapier en X-Oryksa-Source.

Responses API

POST https://api.oryksa.com/v1/responses es el formato Responses de OpenAI sobre el mismo modelo de /v1/chat/completions. Sirve para los nodes y bibliotecas que ya usan ese formato: cambia solo la dirección base y la clave.

Lo que funciona: input (texto o lista de mensajes), instructions, herramientas de función (tools, tool_choice, y los elementos function_call y function_call_output en la conversación), salida en JSON (text.format con json_object o json_schema), max_output_tokens, temperature, top_p y stream.

Lo que no existe: las herramientas propias de OpenAI (búsqueda web, búsqueda en archivos, intérprete de código) y conversaciones guardadas. ORYKSA no guarda nada: store es siempre false y previous_response_id devuelve un error 400. Envía la conversación entera en cada petición.

Coste: 1 interacción por respuesta, igual que /v1/chat/completions. Límites: los mismos (32 000 caracteres de texto por petición, respuesta de hasta 2 000 tokens, 60 peticiones por minuto). No se cobra nada cuando la petición falla.

Los modelos son los mismos: oryksa (modelo general; cualquier otro nombre se trata como oryksa) y oryksa-assistant (tu asistente, solo respuesta).

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 convierte textos en vectores, en el formato de OpenAI, para búsqueda por significado y bases de conocimiento (por ejemplo los nodes de vectores de n8n).

Envía input (un texto o una lista de textos; hasta 256 textos y 32 000 caracteres en total por petición). Opcionales: dimensions y encoding_format (float o base64). El campo model se acepta y se ignora: el modelo es siempre oryksa-embeddings.

Coste: 1 interacción por petición, sea cual sea el número de textos. No se cobra nada cuando la petición falla.

Importante: los vectores solo se comparan con vectores hechos por el mismo modelo. No mezcles, en la misma base, vectores de ORYKSA con vectores de otro proveedor.

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