List AI Providers
Returns one row per supported AI provider (claude, openai), in the platform's pick order: its stored configuration, or a not-configured stub for a provider that has never been saved. configured tells the two apart. The response is a plain array, not paginated.
Unlike custody and spot quote providers, several AI providers may be enabled at once. Each serves the AI features listed in its features:
tokenization_suggestion— fills a new token's form from a free-text description;support_assistant— answers a support conversation first;tokenization_image— draws an asset image for a new token's form (onlyopenaican serve it).
When a feature is used, the provider the caller names answers (it must be enabled and serve the feature); otherwise the first enabled provider serving it, in the order of this list. There is no static configuration behind these rows: a provider that is not filled in here cannot be called.
The API key never comes back. Only api_key_set and the key's last four characters (api_key_last4).
Platform owner only. The caller's node (the node of the access token) must be the platform root node; any other caller is refused with 403 / 10005.
Required permission: ai-provider:view
Request
GET /v2/admin/ai-providers
Headers
| Name | Description |
|---|---|
Authorization | Required. Bearer <access_token> |
Example
curl --request GET \
--url '{{baseUrl}}/v2/admin/ai-providers' \
--header 'Authorization: Bearer <access_token>'
Response
[
{
"provider": "claude",
"base_url": "https://api.anthropic.com",
"model": "claude-sonnet-4-5",
"image_model": "",
"timeout": 60,
"max_tokens": 1024,
"is_enabled": true,
"features": ["tokenization_suggestion", "support_assistant"],
"api_key_set": true,
"api_key_last4": "Qx3A",
"configured": true,
"created_at": "2026-10-24T09:03:17.442Z",
"updated_at": "2026-10-30T15:41:08.106Z"
},
{
"provider": "openai",
"base_url": "",
"model": "",
"image_model": "",
"timeout": 0,
"max_tokens": 0,
"is_enabled": false,
"features": [],
"api_key_set": false,
"api_key_last4": "",
"configured": false
}
]
Response Fields
| Field | Type | Description |
|---|---|---|
provider | string | Provider key: claude or openai |
base_url | string | API base URL. A saved provider always shows the effective URL (the vendor's own when none was given) |
model | string | Model used for text features |
image_model | string | Model used for tokenization_image |
timeout | integer | Request timeout in seconds |
max_tokens | integer | Maximum length of a reply, in tokens |
is_enabled | boolean | Master switch. A disabled provider serves no feature but keeps its features |
features | array | AI features this provider serves: tokenization_suggestion, support_assistant, tokenization_image |
api_key_set | boolean | Whether an API key is stored |
api_key_last4 | string | Last four characters of the stored key; empty when none is stored or the key is four characters or shorter |
configured | boolean | true for a saved provider, false for a not-configured stub |
created_at | string | Creation time (ISO 8601). Omitted on a stub |
updated_at | string | Last update time (ISO 8601). Omitted on a stub |
Errors
| Status | Code | Description |
|---|---|---|
| 403 | 10005 | The caller is not the platform owner (domain 2) |
See Errors for the error format and common codes.