spicyapiDocs
Main content

OpenAPI and endpoint index

Downloadable OpenAPI 3.1 contract, every public endpoint, and the production origin.

Copyable reference clients

Download zero-dependency examples covering model discovery, task creation, failed-task retry, status reads, every terminal state, bounded waiting, idempotency and errors. Once accepted, a task cannot be canceled.

These are documentation examples, not published npm/PyPI packages. Ten minutes is a local wait bound, not a production SLA.

The machine-readable public contract is available as OpenAPI 3.1 YAML. Use it to generate a client or validate your integration against the current public endpoints.

Production API origin

https://api.spicyapi.ai is the only production origin declared by OpenAPI servers[0].url. Task APIs use /api/v1; protocol compatibility uses /v1.

These platform APIs support model selection, estimates and spend monitoring without opening the Console. The model catalog includes account pricing; use an exact-input quote when the price depends on parameters. Usage is scoped to the authenticated API key. Key creation, rotation and budget settings remain in the Console.

Model discovery, pricing and account APIs

MethodPathPurpose
GET/api/v1/modelsRead callable models, account prices, and optional schemas
GET/api/v1/models/{model}Read one model and its complete JSON Schema
POST/api/v1/jobs/quoteQuote the exact request for five minutes without creating a task or holding funds
GET/api/v1/chat/creditRead available, held, and total balance
GET/api/v1/usageRead current-key calls and settled USD spending by date and model

Generation and task APIs

MethodPathPurpose
GET/api/v1/jobsList the current API key's task history with cursor pagination
POST/api/v1/jobs/createTaskCreate an asynchronous generation task
GET/api/v1/jobs/recordInfoRead a task owned by the caller
POST/api/v1/jobs/retryCreate a new task from a failed or expired task; historical canceled records remain compatible
POST/api/v1/jobs/streamRun a text model and stream the answer over SSE

Media APIs

MethodPathPurpose
POST/api/v1/common/upload-urlIssue a direct media-upload ticket
POST/api/v1/files/{fileId}/commitVerify and commit a direct upload, returning the task-ready spicy:// URI
POST/api/v1/common/download-urlIssue a short-lived task-output download URL

Authentication and envelopes

Every endpoint accepts Authorization: Bearer sk-spicy-…; the compatibility endpoints (/v1, /v1beta) also accept x-api-key, as sent by Anthropic SDKs, and x-goog-api-key, as sent by Google GenAI SDKs. A key in the URL query string is never accepted. Task API JSON responses share the {code,msg,data,request_id} envelope. A task's outcome is expressed by data.state, not the envelope code.

Contract changes

  • Do not preserve model parameters as a permanent hard-coded snapshot; read inputSchema from /models/{model}.
  • Be tolerant of unknown response fields, but never guess unknown request fields.
  • Feed the OpenAPI YAML into code generation or contract tests before release.

Compatibility endpoints

MethodPathProtocol
GET/v1/modelsModels
POST/v1/chat/completionsChat Completions
POST/v1/responsesResponses
POST/v1/messagesMessages
POST/v1beta/models/{model}:generateContentGemini generateContent
POST/v1beta/models/{model}:streamGenerateContentGemini streamGenerateContent
POST/v1/videosVideos
GET/v1/videos/{videoId}Video status
GET/v1/videos/{videoId}/contentVideo content

On this page