BETA
Documentation
Create model response
POST/v1/responses
Same generic proxy as chat completions, but targets the OpenAI Responses protocol (input / max_output_tokens instead of messages / max_tokens) — what Codex CLI and similar agents use.
Request body
model
required, string — a catalog id from GET /v1/models
input
required — string or content-part array
max_output_tokens
optional, number — capped server-side to what your balance can cover
cURL example
terminal
curl https://apily.pro/v1/responses \
-H "Authorization: Bearer apily_your-api-key" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-5.6-sol","input":"ping","max_output_tokens":20}'Error responses
| Symptom | Cause | Fix |
|---|---|---|
401 Missing API key | No auth header was sent. | Apily accepts Authorization: Bearer … and x-api-key: …. |
401 Invalid API key | Key copied with stray spaces, truncated, or revoked. | Copy the key whole from the API page in your Apily account, the apily_ prefix included. |
403 Email not verified | Your Apily account's email address isn't verified yet. | Verify your email from the banner in the Apily app, then retry. |
404 Model not found | The model ID isn't in the Apily catalog. | Copy the exact ID from GET /v1/models or the Models page in your account. |
503 Model temporarily unavailable | The model exists, but no upstream provider is reachable right now. | Retry in a moment — it usually recovers within a minute. Switch models if it keeps happening. |
402 Insufficient balance | Your token balance can't cover the request's estimated cost. | Top up your balance on the Billing page in your Apily account. |
429 Too many requests | Your account sent more than 600 /v1/* requests in a minute — all of your API keys share one budget. The body is { error: { message, type: "rate_limit_error", code: "rate_limit_exceeded" }, retryAfterSeconds }. | Wait the Retry-After header (or retryAfterSeconds) before retrying, and lower request concurrency. |
502 Upstream error | The upstream provider returned an unexpected error. | Retry the request; try a different model if it persists. |