Documentación de la API
API Many ofrece todos los modelos con una URL base y una clave. Los endpoints de texto siguen los formatos de OpenAI y Anthropic, así que los SDK oficiales funcionan sin cambios; imagen, video y música se ejecutan como tareas asíncronas.
URL base https://apimany.com/v1
Inicio rápido
- Inicia sesión y crea una clave en Claves API.
- Añade saldo desde $10 en Saldo.
- Envía tu primera solicitud:
curl https://apimany.com/v1/chat/completions \
-H "Authorization: Bearer $APIMANY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "claude-sonnet-5-5", "messages": [{"role": "user", "content": "Hello"}]}'Autenticación
Envía tu clave en la cabecera Authorization como token Bearer. Las claves son secretas: llama a la API desde tu servidor, nunca desde un navegador o una app móvil.
Authorization: Bearer sk_apimany_xxxxxxxxxxxxxxxx
# Anthropic-style clients may send the key as:
x-api-key: sk_apimany_xxxxxxxxxxxxxxxxSDK
Usa el SDK oficial de OpenAI (Python, Node.js, Go, Java, .NET) con base_url https://apimany.com/v1, o el SDK oficial de Anthropic con base_url https://apimany.com. Para los endpoints multimedia sirve cualquier cliente HTTP.
Facturación
Cada solicitud reserva su coste máximo de tu saldo al empezar y se liquida al terminar:
- Texto: se cobra por los tokens de entrada, en caché y de salida que informa el modelo, a los precios por millón de su página.
- Imágenes: se cobra por imagen según la resolución o calidad elegida; los modelos de imagen por tokens se liquidan según el uso informado.
- Video: se cobra por segundo según la resolución elegida (o por clip en los modelos de duración fija).
- Las solicitudes fallidas, rechazadas o caducadas no se cobran: la reserva se devuelve completa.
Envía una cabecera Idempotency-Key (1–200 caracteres) para reintentar con seguridad: una clave repetida devuelve el registro original en lugar de ejecutarse de nuevo.
Chat completions POST/v1/chat/completions
Chat compatible con OpenAI para todos los modelos de lenguaje, incluidos Claude, Gemini, DeepSeek, Grok, Qwen y Kimi. Streaming, herramientas, modo JSON e imágenes siguen el formato de OpenAI. Las respuestas en streaming incluyen el uso en el último fragmento.
curl https://apimany.com/v1/chat/completions \
-H "Authorization: Bearer $APIMANY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-v4.1-flash",
"stream": true,
"messages": [
{"role": "system", "content": "You are concise."},
{"role": "user", "content": "Summarize HTTP/3 in two sentences."}
]
}'Anthropic Messages POST/v1/messages
Los modelos Claude también aceptan la API Messages nativa de Anthropic, con streaming, herramientas, pensamiento extendido y caché de prompts. Las cabeceras anthropic-version y anthropic-beta se reenvían.
import anthropic
client = anthropic.Anthropic(base_url="https://apimany.com", api_key="YOUR_API_KEY")
message = client.messages.create(
model="claude-opus-5-5",
max_tokens=1024,
messages=[{"role": "user", "content": "Write a haiku about APIs."}],
)
print(message.content[0].text)Responses POST/v1/responses
La API Responses de OpenAI para los modelos que la admiten.
curl https://apimany.com/v1/responses \
-H "Authorization: Bearer $APIMANY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "gpt-6.1-sol", "input": "Explain recursion to a child."}'Embeddings POST/v1/embeddings
curl https://apimany.com/v1/embeddings \
-H "Authorization: Bearer $APIMANY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "text-embedding-3-small", "input": ["first text", "second text"]}'Imágenes POST/v1/images/generations
Texto a imagen y edición de imágenes. Cada modelo documenta sus campos (tamaño, resolución, calidad, imágenes de referencia) en su página; envíalos tal como aparecen. La llamada devuelve una tarea al instante:
curl https://apimany.com/v1/images/generations \
-H "Authorization: Bearer $APIMANY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "A watercolor fox in a snowy forest",
"size": "16:9",
"resolution": "2k",
"image_urls": ["https://example.com/style-reference.png"]
}'{
"id": "2c7f9a8e-0d1b-4b5e-9a5d-6f0c1e2d3a4b",
"object": "generation.task",
"model": "seedance-2.5",
"status": "pending",
"reserved_usd": 2.16,
"task_id": "2c7f9a8e-0d1b-4b5e-9a5d-6f0c1e2d3a4b"
}Videos POST/v1/videos/generations
Texto a video, imagen a video, referencias, ediciones y extensiones, según el modelo. Los modelos por segundo reservan la duración pedida y se liquidan según el clip entregado.
curl https://apimany.com/v1/videos/generations \
-H "Authorization: Bearer $APIMANY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.5",
"prompt": "Slow dolly-in on a neon alley after rain",
"resolution": "720p",
"duration": 8,
"size": "16:9",
"callback_url": "https://your-app.com/webhooks/apimany"
}'Música POST/v1/music/generations
curl https://apimany.com/v1/music/generations \
-H "Authorization: Bearer $APIMANY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "suno", "custom": false, "version": "v6", "prompt": "Late-night lo-fi piano with soft rain"}'Tareas y consultas GET/v1/tasks/{id}
Consulta cada 3–10 segundos hasta que el estado sea completed o failed. Estados: pending, processing, completed, failed. Las tareas completadas muestran URL firmadas válidas 30 días; descarga lo que quieras conservar.
curl https://apimany.com/v1/tasks/TASK_ID -H "Authorization: Bearer $APIMANY_API_KEY"Webhooks
Añade callback_url (HTTPS público) a cualquier solicitud multimedia y enviaremos la tarea terminada por POST, con hasta seis reintentos escalonados. Verifica X-Apimany-Signature con el secreto de webhooks de tu página de claves API.
import crypto from 'node:crypto'
// Express-style handler; keep the raw body for the signature check.
export function verify(rawBody, headers, secret) {
const timestamp = headers['x-apimany-timestamp']
const expected = crypto.createHmac('sha256', secret.replace(/^whsec_/, ''))
.update(`${timestamp}.${rawBody}`).digest('hex')
return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(headers['x-apimany-signature']))
}
// Payload: { "event": "task.completed" | "task.failed", "data": { ...task, "record": { ... } } }Transcripción POST/v1/audio/transcriptions
Voz a texto compatible con OpenAI con subida multipart (hasta 25 MB).
curl https://apimany.com/v1/audio/transcriptions \
-H "Authorization: Bearer $APIMANY_API_KEY" \
-F model=gpt-4o-transcribe \
-F [email protected] \
-F response_format=jsonModelos GET/v1/models
Lista pública de todos los modelos con tipo, endpoint y precios; filtra con ?kind=chat|image|video|audio|embedding.
# Every model with its pricing (no key needed)
curl https://apimany.com/v1/models
# Only video models
curl "https://apimany.com/v1/models?kind=video"
# One model with its parameters
curl https://apimany.com/v1/models/seedance-2.5Registros GET/v1/records
Cada llamada (texto, multimedia y audio) tiene un registro con estado, uso, coste y resultados. Filtra por model, kind, status, api_key_id o since.
curl "https://apimany.com/v1/records?limit=20&kind=video&status=completed" \
-H "Authorization: Bearer $APIMANY_API_KEY"
curl https://apimany.com/v1/records/RECORD_ID -H "Authorization: Bearer $APIMANY_API_KEY"Saldo GET/v1/account/balance
curl https://apimany.com/v1/account/balance -H "Authorization: Bearer $APIMANY_API_KEY"
# { "object": "balance", "currency": "usd", "balance_usd": 42.17, "debt_usd": 0 }Errores
Los errores usan el formato de OpenAI, así que las excepciones de los SDK funcionan como siempre.
{
"error": {
"message": "Your balance is too low for this request. Top up and try again.",
"type": "insufficient_quota",
"param": null,
"code": "insufficient_balance"
}
}| HTTP | code | Significado |
|---|---|---|
| 400 | invalid_request | Falta un parámetro o no está permitido para este modelo. No se cobró nada. |
| 401 | invalid_api_key | Falta la clave, es incorrecta o está revocada. |
| 402 | insufficient_balance | Tu saldo no cubre la reserva de esta solicitud. |
| 404 | model_not_found | El ID del modelo no existe. Lista los modelos con GET /v1/models. |
| 409 | idempotency_replay | Esta Idempotency-Key ya se usó; consulta el registro anterior. |
| 413 | request_too_large | El cuerpo de la solicitud supera el límite. Envía los archivos como URL. |
| 429 | rate_limited | Demasiadas solicitudes por minuto para esta clave. Reintenta con espera progresiva. |
| 502 | generation_failed | Todos los canales de este modelo fallaron. No se cobró nada; reintenta en breve. |
| 503 | model_unavailable | El modelo no está disponible temporalmente. |
Límites
- Cuerpo de la solicitud: hasta 25 MB para texto y 40 MB para multimedia. Envía archivos grandes como URL HTTPS.
- Subidas del playground: imágenes hasta 10 MB, video hasta 100 MB y audio hasta 50 MB.
- Límite: 120 solicitudes por minuto por cuenta de forma predeterminada. Contáctanos para límites mayores.
- Los archivos generados se guardan 30 días. Las tareas que nunca terminan se revisan y se reembolsan.
- Las capacidades y límites de cada modelo dependen de su fabricante.