Crea una clave
En tu perfil, pestaña API. La clave empieza por sk-slafy- y solo se muestra una vez, guárdala.
Chat Completions, Responses, Images y Messages con una sola clave. Aquí están las direcciones, modelos, endpoints y errores; la configuración de Cursor, Claude Code, Codex y otros IDE está en Integraciones.
En tu perfil, pestaña API. La clave empieza por sk-slafy- y solo se muestra una vez, guárdala.
Los ID de los modelos están abajo y en la página de precios. Por ejemplo, claude-sonnet-5-5.
Para el formato OpenAI la dirección es https://slafy.co/v1; para Anthropic, https://slafy.co. La clave se envía como Bearer o x-api-key.
https://slafy.co/v1https://slafy.co; el SDK añade /v1 por sí soloAuthorization: Bearer sk-slafy-… o x-api-key: sk-slafy-…GET /v1/models; precios en la página Preciosreasoning_effort (en Responses, reasoning.effort): low, medium, high, xhigh, max o ultra; es el máximo para el modelo elegido. Si el modelo no admite el valor, Slafy usará el más cercano, y en los modelos sin ajuste de esfuerzo eliminará el parámetroPython y Node.js, cualquier modelo mediante Chat Completions
from openai import OpenAI
client = OpenAI(base_url="https://slafy.co/v1", api_key="sk-slafy-tu_clave")
r = client.chat.completions.create(
model="claude-sonnet-5-5",
messages=[{"role": "user", "content": "Hola"}],
)
print(r.choices[0].message.content)import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://slafy.co/v1", apiKey: process.env.SLAFY_API_KEY });
const r = await client.chat.completions.create({
model: "gpt-6-luna",
messages: [{ role: "user", content: "Hola" }],
});
console.log(r.choices[0].message.content);Python y Node.js, modelos Claude mediante Messages
import anthropic
client = anthropic.Anthropic(base_url="https://slafy.co", api_key="sk-slafy-tu_clave")
m = client.messages.create(
model="claude-sonnet-5-5",
max_tokens=1024,
messages=[{"role": "user", "content": "Hola"}],
)
print(m.content[0].text)import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({ baseURL: "https://slafy.co", apiKey: process.env.SLAFY_API_KEY });
const m = await client.messages.create({
model: "claude-sonnet-5-5",
max_tokens: 1024,
messages: [{ role: "user", content: "Hola" }],
});
console.log(m.content[0].text);Comprueba la clave y el modelo desde la terminal
curl https://slafy.co/v1/chat/completions \
-H "Authorization: Bearer sk-slafy-tu_clave" \
-H "Content-Type: application/json" \
-d '{"model": "claude-sonnet-5-5", "messages": [{"role": "user", "content": "Hola"}]}'curl https://slafy.co/v1/messages \
-H "x-api-key: sk-slafy-tu_clave" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{"model": "claude-sonnet-5-5", "max_tokens": 512, "stream": true,
"messages": [{"role": "user", "content": "Cuéntame un chiste"}]}'El modelo dibuja dentro de la respuesta o mediante la Images API
Una imagen cuesta 0,199 $, es decir, 500.000 tokens del saldo. Los errores y las solicitudes rechazadas no se cobran.
Añade la herramienta {"type": "image_generation"} a una solicitud de Responses. El modelo decide cuándo dibujar y devuelve la imagen en un elemento image_generation_call (PNG en base64, campo result). Así dibujan Codex y los agentes hechos con el SDK de OpenAI.
curl https://slafy.co/v1/responses \
-H "Authorization: Bearer sk-slafy-tu_clave" \
-H "Content-Type: application/json" \
-d '{"model": "gpt-6-astra", "input": "Dibuja un icono de app: una ballena azul, estilo plano",
"tools": [{"type": "image_generation", "quality": "low"}]}'Los modelos GPT pueden dibujar: gpt-6.1-sol, gpt-6.1-terra, gpt-6-astra, gpt-6-luna. Al precio de la imagen se suman los tokens del texto de la respuesta.
from openai import OpenAI
import base64
client = OpenAI(base_url="https://slafy.co/v1", api_key="sk-slafy-tu_clave")
r = client.images.generate(model="gpt-image-2.5-sunburst", prompt="Una ballena azul, estilo plano", size="1024x1024")
open("whale.png", "wb").write(base64.b64decode(r.data[0].b64_json))Los nombres gpt-image-2, gpt-image-1, dall-e-3 también funcionan: Slafy los envía a gpt-image-2.5-sunburst. Así, los scripts y skills hechos para OpenAI funcionan sin cambios.
ID para el campo model y formatos de API con los que funciona cada modelo. Los precios están en la página de precios.
claude-opus-5-5chat/completions · responses · messagesclaude-sonnet-5-5chat/completions · responses · messagesclaude-haiku-5-5chat/completions · responses · messagesclaude-fable-5-1chat/completions · responses · messagesgpt-6.1-solchat/completions · responses · messagesgpt-6.1-terrachat/completions · responsesgpt-6-astrachat/completions · responses · messagesgpt-6-lunachat/completions · responses · messagesgpt-image-2.5-sunburstimagesgemini-4-argonchat/completionsgemini-3.8-flashchat/completionsgrok-4.7chat/completions · responses · messagesdeepseek-v4-prochat/completionsdeepseek-v4.1-flash-1017chat/completionskimi-k3.1-prochat/completionsglm-5.3chat/completions · responses · messagesglm-5.3-flashchat/completions · responses · messages| Método y ruta | Formato |
|---|---|
POST /v1/chat/completions | OpenAI Chat Completions, con streaming |
POST /v1/responses | OpenAI Responses, streaming y la herramienta image_generation |
POST /v1/messages | Anthropic Messages, con streaming |
POST /v1/messages/count_tokens | Anthropic, recuento de tokens, gratis |
POST /v1/images/generations | OpenAI Images, respuesta en b64_json |
POST /v1/images/edits | OpenAI Images, multipart/form-data |
GET /v1/models | Lista de modelos disponibles |
Qué modelo funciona con qué endpoint lo puedes ver en los precios.
| HTTP | Código | Qué hacer |
|---|---|---|
| 401 | invalid_api_key | Clave no encontrada o desactivada. Cópiala completa desde tu perfil. |
| 402 | insufficient_balance | Te has quedado sin tokens; recarga el saldo. |
| 402 | key_limit_reached | La clave ha alcanzado su límite de gasto; súbelo en la pestaña API. |
| 404 | model_not_found | No existe ese modelo. Comprueba el nombre con GET /v1/models. |
| 429 | rate_limit_exceeded | Demasiado rápido. Vuelve a intentarlo en unos segundos. |
| 5xx | upstream_error | Fallo por parte del modelo; la solicitud no se cobra. Vuelve a intentarlo. |
Cada respuesta incluye la cabecera x-request-id, con la que puedes encontrar la solicitud en el historial.