Skip to content

AI Providers ​

AI providers are the underlying model vendors powering the platform. The provider is resolved automatically from the selected model — you do not need to specify a provider directly in most API calls.

Endpoints ​

MethodPathDescriptionAuthRate Limit
GET/ai/providersList available providersJWT + Entitlement120/60s (shared global limit)
GET/ai/providers/:idGet provider detailsJWT + Entitlement120/60s (shared global limit)

Active Providers ​

Every registered provider is listed, whether or not your plan can use it — check isAccessible, not isActive, to know what you can actually call. isActive describes whether the provider is enabled on the platform at all (true for all of these); isAccessible describes whether your plan grants access to it.

ProviderKeyAccessible on Free plan
GooglegoogleYes — always accessible on every plan
OpenAIopenaiNo — requires a paid plan with the openai model entitlement
AnthropicanthropicNo — requires a paid plan with the anthropic model entitlement
Mistral AImistralNo — requires a paid plan with the mistral model entitlement
DeepSeekdeepseekNo
Kimi (Moonshot)kimiNo
Local / OllamalocalNo
SpaceXAI (xAI Grok)spacexaiNo
NVIDIA NIMnvidiaNo

Free plan: only google is accessible. Upgrading grants access to additional providers per your plan's entitlements.


GET /ai/providers ​

List all active AI providers.

Authentication: JWT Bearer token + active AI entitlement required.
Rate limit: 60/min

Request ​

Query Parameters ​

ParameterTypeRequiredDescription
keystringNoFilter by provider key (e.g. google)
limitnumberNoItems per page
offsetnumberNoPagination offset

Response ​

Response Example ​

json
{
  "data": [
    {
      "key": "google",
      "displayName": "Google",
      "isActive": true,
      "isAccessible": true,
      "baseUrl": "https://generativelanguage.googleapis.com",
      "docsUrl": "https://ai.google.dev/gemini-api/docs"
    },
    {
      "key": "openai",
      "displayName": "OpenAI",
      "isActive": true,
      "isAccessible": false,
      "baseUrl": "https://api.openai.com/v1",
      "docsUrl": "https://developers.openai.com/api/docs/"
    }
  ],
  "meta": {
    "total": 9,
    "limit": 20,
    "offset": 0,
    "hasNextPage": false
  }
}

Response Fields ​

FieldTypeDescription
keystringMachine-readable provider key
displayNamestringDisplay name
isActivebooleanWhether the provider is enabled on the platform at all — not plan-dependent
isAccessiblebooleanWhether your plan grants access to this provider for chat/AI runs
baseUrlstring | nullThe provider's own API base URL
docsUrlstring | nullLink to the provider's own API documentation

Code Examples ​

bash
curl https://api.chainabit.com/api/v1/ai/providers \
  -H "Authorization: Bearer $TOKEN"
javascript
const res = await fetch(`${BASE_URL}/ai/providers`, {
  headers: { Authorization: `Bearer ${TOKEN}` },
});
const { data } = await res.json();
python
import requests

res = requests.get(
    f"{BASE_URL}/ai/providers",
    headers={"Authorization": f"Bearer {TOKEN}"},
)
data = res.json()["data"]

GET /ai/providers/:id ​

Get details about a specific provider by its UUID.

Authentication: JWT Bearer token + active AI entitlement required.
Rate limit: 60/min

Request ​

Path params: id — from a GET /ai/providers response's data[].id. No query parameters.

Response ​

Response Example ​

json
{
  "data": {
    "id": "cm9provider01",
    "key": "google",
    "displayName": "Google",
    "isActive": true,
    "isAccessible": true,
    "baseUrl": "https://generativelanguage.googleapis.com",
    "docsUrl": "https://ai.google.dev/gemini-api/docs",
    "createdAt": "2026-01-01T00:00:00.000Z"
  }
}

Response Fields ​

Same fields as GET /ai/providers above, plus:

FieldTypeDescription
idstringProvider UUID
createdAtstringISO 8601

Code Examples ​

bash
curl https://api.chainabit.com/api/v1/ai/providers/<provider-id> \
  -H "Authorization: Bearer $TOKEN"
javascript
const res = await fetch(`${BASE_URL}/ai/providers/${providerId}`, {
  headers: { Authorization: `Bearer ${TOKEN}` },
});
const { data } = await res.json();
python
import requests

res = requests.get(
    f"{BASE_URL}/ai/providers/{provider_id}",
    headers={"Authorization": f"Bearer {TOKEN}"},
)
data = res.json()["data"]

Notes ​

  • Every registered provider is returned regardless of your plan — filter by isAccessible on the client side if you only want to show providers the caller can actually use.
  • Provider availability (isActive) is managed at the platform level and cannot be changed through the API. Your plan's accessibility (isAccessible) is managed through your subscription.
  • To filter models by provider, use the provider query parameter on GET /ai/models.

Built with purpose.