Skip to main content
OpenAI-compatible inference for Particle-1, DeepSeek V4.1 Flash, and GLM 5.3 Flash — one API, standard SDKs, 1M-token context. Start with particle-1 for chat, agentic coding, and tool use. It is the default model in these guides and examples; set the model field explicitly in your requests. The Particle Inference API is served at https://api.particle.ai/v1. For Chat Completions, point an OpenAI-compatible SDK or agent framework at that base URL and authenticate with a Particle API key. For agents that need user updates during generation, use our Responses WebSocket API and mid-turn steering quickstart. For inference on US GPUs only, use https://us.api.particle.ai/v1 with the same API key. See Regional endpoints for configuration examples and GPU eligibility. python

What’s available

Chat Completions

POST /v1/chat/completions — multi-turn chat with tools, reasoning controls, streaming, and file references.

Responses & mid-turn steering

wss://api.particle.ai/v1/responses — send a user update while a response is running and follow its automatic continuation. Start with Python or Node.js.

Completions

POST /v1/completions — single-prompt text completion with the same sampling and streaming controls.

List Models

GET /v1/models — the models your key can currently reach.

Files

OpenAI-compatible upload/list/retrieve/delete, plus {"type":"file"} chat content parts.

Models

Send particle-1 in requests. The model is listed by /v1/models and returned in responses as particle-ai/particle-1. For DeepSeek, the current public ID is deepseek-ai/deepseek-v41-flash-1017; earlier DeepSeek IDs remain accepted on requests but are not listed by /v1/models. See the model catalog for model-specific IDs and aliases.

Core behavior

  • Reasoning by default. All three models are reasoning models. If you omit reasoning_effort, requests run at the default effort (high) and reasoning tokens appear in usage.completion_tokens_details.reasoning_tokens. On DeepSeek and Particle-1, set "reasoning_effort": "none" to disable thinking. GLM always reasons — reasoning-off selectors are rejected with 400. See Reasoning controls.
  • Safe sampling defaults. If you send no tail control (top_p, top_k, min_p), the gateway applies top_p=0.85 to keep long agentic generations stable. Any explicit value you send — including top_p=1.0 — is honored unchanged.
  • Bounded output. If you omit both max_tokens and max_completion_tokens, the gateway supplies 32000 so an unbounded generation cannot run forever. Your explicit limits are preserved.
  • Streaming with keep-alives. During long reasoning pauses, the stream carries real empty chat.completion.chunk frames after 15s of silence so client watchdogs and proxies don’t kill the connection. See Streaming.
  • Prompt-cache affinity. Send prompt_cache_key to keep a conversation’s repeated prefix on the same server — large savings on multi-turn agentic workloads. See Prompt caching.
  • Regular or Flex service. Set "service_tier": "flex" for 50% lower input, cached input, and output token prices with lower priority when busy. Use regular service for latency-sensitive requests, or Flex when you can tolerate waiting or retrying. See Service tiers.

Capacity and errors

Capacity is checked before a request is accepted: a request is either dispatched or, when the service is busy, it waits in a priority queue. The regular tier’s default wait limit is 30 seconds; Flex allows a longer wait. A 429 means the queue timed out or the service confirmed it was full — it is always safe to retry after Retry-After. Anything degraded is a 503. Full mapping in Errors & retries.

Data handling

Your credentials terminate at the gateway and are never shared with any downstream service. Usage is recorded per key with exact token counts, and your prepaid balance is debited atomically with terminal usage. The zero-data-retention posture is described in Data retention.