Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/concentrate:concentrate-chat-completions-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Concentrate Chat API
version: '2026-10-29'
description: 'GENERATED FROM DOCUMENTATION by API Evangelist on 2026-10-29: 20 operation(s) read from 26 public documentation page(s) (each operation names its page in x-source). This is not the provider''s published contract; Concentrate has published no machine-readable contract that the pipeline could find. Engine: anthropic.'
x-evidence-tiers:
code-example: 19
documentation: 1
pages-with-code: 25
pages-read: 26
x-generated-from: documentation
x-provenance: generated
x-authored-by: API Evangelist
x-generated: '2026-10-29'
x-generator: generate-contract-from-docs.py
x-engine: anthropic
x-sources:
- https://concentrate.ai/docs/api-reference/endpoint/errors
- https://concentrate.ai/docs/api-reference/endpoint/health
- https://concentrate.ai/docs/api-reference/endpoint/headers
- https://concentrate.ai/docs/api-reference/endpoint/decisions
- https://concentrate.ai/docs/api-reference/endpoint/get-model
- https://concentrate.ai/docs/api-reference/endpoint/streaming
- https://concentrate.ai/docs/api-reference/endpoint/systemone
- https://concentrate.ai/docs/api-reference/endpoint/web-search
- https://concentrate.ai/docs/api-reference/endpoint/list-models
- https://concentrate.ai/docs/api-reference/endpoint/multi-modal
- https://concentrate.ai/docs/api-reference/endpoint/auto-routing
- https://concentrate.ai/docs/api-reference/endpoint/tool-calling
- https://concentrate.ai/docs/api-reference/endpoint/service-tiers
- https://concentrate.ai/docs/api-reference/endpoint/create-message
- https://concentrate.ai/docs/api-reference/endpoint/list-providers
- https://concentrate.ai/docs/api-reference/endpoint/create-response
- https://concentrate.ai/docs/api-reference/endpoint/chat-completions
- https://concentrate.ai/docs/api-reference/endpoint/supported-models
- https://concentrate.ai/docs/api-reference/endpoint/get-provider-info
- https://concentrate.ai/docs/api-reference/endpoint/structured-output
- https://concentrate.ai/docs/api-reference/endpoint/zero-data-retention
- https://concentrate.ai/docs/api-reference/endpoint/guardrails-redaction
- https://concentrate.ai/docs/api-reference/endpoint/list-models-by-author
- https://concentrate.ai/docs/api-reference/endpoint/list-models-by-provider
- https://concentrate.ai/docs/api-reference/introduction
- https://concentrate.ai/docs/getting-started/quickstart
servers:
- url: https://api.concentrate.ai
security:
- bearer: []
tags:
- name: Chat Completions
paths:
/v1/chat/completions:
get:
operationId: get_v1_chat_completions
tags:
- Chat Completions
summary: GET /v1/chat/completions
x-source: https://concentrate.ai/docs/api-reference/endpoint/chat-completions
responses:
'200':
description: Success (status as documented)
x-evidence:
kind: code-example
language: curl
snippet: "curl);\nif ($err) {\n echo \"cURL Error #:\" . $err;\n} else {\n echo $response;\n} package main\nimport (\n \"fmt\"\n \"strings\"\n \"net/http\"\n \"io\"\n)\nfunc main() {\n url := \"https://api.concentrate.ai/v1/chat/completions/\"\n payload := strings.NewReader(\"{\\n \\\"messages\\\": [\\n {\\n \\\"content\\\": \\\"<string>\\\",\\n \\\"name\\\": \\\"<string>\\\"\\n }\\n ],\\n \\\"model\\\": \\\"<string>\\\",\\n \\\"frequency_penalty\\\": 0,\\n \\\"functions\\\": ["
post:
operationId: post_v1_chat_completions
tags:
- Chat Completions
summary: POST /v1/chat/completions
x-source: https://concentrate.ai/docs/api-reference/endpoint/headers
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PostV1ChatCompletionsRequest'
responses:
'201':
description: Success (status as documented)
x-evidence:
kind: code-example
language: curl
snippet: "curl https://api.concentrate.ai/v1/chat/completions -H \"Authorization: Bearer $CONCENTRATE_API_KEY \" -H \"Content-Type: application/json\" -H \"x-concentrate-compat-headers: litellm,openrouter\" -d '{ \n \"model\": \"anthropic/claude-opus-4-6\", \n \"messages\": [{\"role\": \"user\", \"content\": \"Say hello in one word\"}] \n }' \n Names are case-insensitive, spaces around them are ignored, and unknown names are s"
/v1/chat/completions/:
post:
operationId: postV1ChatCompletions
tags:
- Chat Completions
summary: OpenAI Chat Completions API compatibility endpoint for Cursor, Opencode, and…
x-source: https://concentrate.ai/docs/api-reference/endpoint/chat-completions
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PostV1ChatCompletionsRequest2'
responses:
'200':
description: Success (status as documented)
content:
application/json:
schema:
$ref: '#/components/schemas/PostV1ChatCompletionsResponse'
x-evidence:
kind: documentation
x-operation-id-source: normalized
x-operation-id-original: post_v1_chat_completions
components:
schemas:
PostV1ChatCompletionsResponse:
type: object
properties:
id:
type: string
model:
type: string
description: The model used for the chat completion.
created:
type: number
description: The Unix timestamp (in seconds) of when the chat completion was created.
object:
type: string
description: The object type, which is always 'chat.completion' or 'chat.completion.chunk'.
choices:
type: object
description: A list of chat completion choices. Can contain more than one if n is greater than 1.
usage:
type: object
description: Usage statistics for the completion request.
cost:
type: object
description: The cost of the completion request.
metadata:
type: object
description: Set of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format.
service_tier:
type: string
description: Specifies the processing type used for serving the request.
redact:
type: object
PostV1ChatCompletionsRequest2:
type: object
properties:
messages:
type: object
description: 'A list of messages comprising the conversation so far. Minimum array length: 1'
model:
type: string
description: Model identifier. Use /v1/models to list all available models. Supports canonical names (e.g. gpt-5.2, claude-opus-4-6), aliases, and provider-prefixed formats (e.g. openai/gpt-5.2). Use "auto" for automatic model selection.
frequency_penalty:
type: number
description: Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim.
function_call:
type: string
description: 'Deprecated in favor of the tool_calls parameter. Will be converted to tool_choice. Available options: none, auto'
functions:
type: object
description: Deprecated in favor of the tools parameter. Will be converted to tools when used.
logit_bias:
type: object
description: Unsupported. Modify the likelihood of specified tokens appearing in the completion.
logprobs:
type: boolean
description: Whether to return log probabilities of the output tokens. If true, logprobs will be included in the response.
max_completion_tokens:
type: number
description: The maximum number of tokens that can be generated in the chat completion. The total length of input tokens and generated tokens is limited by the model's context length.
max_tokens:
type: number
description: Deprecated, use max_completion_tokens instead.
metadata:
type: object
description: Set of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format.
modalities:
type: string
description: 'Unsupported. A list of modalities that the model supports. The model will use these modalities when processing the request. Available options: text, audio'
n:
type: integer
description: Unsupported. How many chat completion choices to generate for each input message.
parallel_tool_calls:
type: boolean
description: Whether to enable parallel function calling during tool use.
prediction:
type: object
description: Unsupported. Specifies the model should predict a specified content, then continue generating naturally.
presence_penalty:
type: number
description: Unsupported. Number between -2.0 and 2.0. Positive values penalize new tokens based on whether they appear in the text so far, increasing the model's likelihood to talk about new topics.
prompt_cache_key:
type: string
description: Optional custom identifier for managing prompt cache entries.
prompt_cache_options:
type: object
description: OpenAI prompt-cache behavior for this request.
prompt_cache_retention:
type: string
description: 'The legacy OpenAI prompt-cache retention policy. Earlier OpenAI models use this field for in-memory or 24-hour retention. GPT-5.6 and later use prompt_cache_options.ttl instead. Available options: in-memory, in_memory, 24h'
reasoning_effort:
type: string
description: 'Constrains effort on reasoning for reasoning models. Reducing reasoning effort can result in faster responses and fewer tokens used on reasoning in a response. Available options: none, minimal, low, medium, high, xhigh, max'
response_format:
type: object
description: An object specifying the format that the model must output.
safety_identifier:
type: string
description: Unique identifier to help detect when content may violate usage policies.
seed:
type: integer
description: Unsupported. If specified, our system will make a best effort to sample deterministically, such that repeated requests with the same seed and parameters should return the same result.
service_tier:
type: string
description: 'Specifies which tier to use for processing the request. Available options: auto, default, fast, flex, priority, scale, ultrafast'
stop:
type: string
description: Unsupported. Up to 4 sequences where the API will stop generating further tokens.
store:
type: boolean
description: If true, the model's response will be stored for reuse by other requests.
stream:
type: boolean
description: If true, partial message deltas will be sent. Tokens will be sent as data-only server-sent events as they become available.
stream_options:
type: object
description: Stream options configuration.
temperature:
type: number
description: What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic.
tool_choice:
type: string
description: 'Controls which (if any) function is called by the model. Available options: none, auto, required'
tools:
type: object
description: A list of tools the model may call.
top_logprobs:
type: integer
description: An integer between 0 and 20 specifying the number of most likely tokens to return at each token position, each with an associated log probability.
top_p:
type: number
description: An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass.
user:
type: string
description: A unique identifier representing your end-user, which can help OpenAI to monitor and detect abuse.
verbosity:
type: string
description: 'Constrains the verbosity of the model''s response. Lower values will result in more concise responses, while higher values will result in more verbose responses. Currently supported values are low, medium, and high. Available options: low, medium, high'
web_search_options:
type: object
description: Options for web search integration.
routing:
type: object
description: Concentrate routing configuration controlling how requests are routed across models and providers.
required:
- messages
- model
PostV1ChatCompletionsRequest:
type: object
properties:
model:
type: string
messages:
type: array
items:
type: object
properties:
role:
type: string
content:
type: string
securitySchemes:
bearer:
type: http
scheme: bearer