Get LLM Provider
Endpoint
GET /apiops/projects/{projectName}/llm-providers/{providerName}/
Authentication
Requires a Personal API Access Token.
Header
Authorization: Bearer YOUR_TOKEN
Request
Headers
| Header | Value | Required |
|---|---|---|
| Authorization | Bearer {token} | Yes |
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| projectName | string | Yes | Project name |
| providerName | string | Yes | LLM provider name |
Query Parameters
None
Response
Success Response (200 OK)
The single provider is returned as the only element of resultList. Unlike the list endpoint, the usedByRefs field is populated with the names of API proxies that reference this provider.
{
"status": "SUCCESS",
"resultList": [
{
"id": "6712a3f4e1b2c3d4e5f60011",
"projectId": "660f1e2a9c4b5a6d7e8f9012",
"projectName": "MyProject",
"name": "deepseek-primary",
"description": "DeepSeek production provider",
"enabled": true,
"providerType": "DEEPSEEK",
"endpoint": "https://api.deepseek.com/v1",
"apiVersion": "v1",
"organizationId": null,
"authScheme": "BEARER",
"authHeaderName": "Authorization",
"credentialSource": "GATEWAY",
"apiKeyLocation": "HEADER",
"apiKeyPrefix": null,
"allowClientOverride": false,
"apiKeySet": true,
"apiSecretSet": false,
"serviceAccountJsonSet": false,
"supportedModels": [
{
"modelId": "deepseek-chat",
"displayName": "DeepSeek Chat",
"contextWindow": 64000,
"maxOutputTokens": 8192,
"pricePerMillionInput": 0.27,
"pricePerMillionOutput": 1.10,
"capabilities": ["function_calling"],
"modality": "TEXT",
"enabled": true,
"aclEnabled": false,
"aclEntries": []
}
],
"onlyListedModels": false,
"lastHealthCheckAt": "2026-07-13T09:15:00Z",
"healthStatus": "HEALTHY",
"lastLatencyMs": 240,
"deploymentType": "CLOUD",
"builtIn": false,
"metadata": [],
"usedByRefs": ["chat-proxy", "summarizer-proxy"]
}
],
"resultCount": 1
}
Response Fields
| Field | Type | Description |
|---|---|---|
| status | string | Response status: SUCCESS or FAILURE |
| resultList | array | Single-element list containing the requested provider |
| resultCount | integer | Always 1 on success |
LLM Provider Object Fields
| Field | Type | Description |
|---|---|---|
| id | string | Internal identifier (read-only) |
| projectId | string | Project identifier (read-only) |
| projectName | string | Project name (read-only) |
| name | string | Provider name (unique within the project) |
| description | string | Free-text description |
| enabled | boolean | Whether the provider is active |
| providerType | string | Provider type enum constant (e.g. OPENAI, ANTHROPIC, AZURE_OPENAI, BEDROCK, VERTEX, DEEPSEEK, GROQ, VLLM, OLLAMA) |
| endpoint | string | Base API URL |
| wireProtocol | string | Wire protocol the adapter speaks (OPENAI_COMPATIBLE, ANTHROPIC, BEDROCK, VERTEX, COHERE). Taken from the provider type or the connection settings. Writable through create and update. See note below. |
| defaultChatCompletionPath | string | Chat-completion path appended to endpoint. Writable through create and update. |
| defaultEmbeddingPath | string | Embedding path. Writable through create and update. |
| defaultAudioTranscriptionPath | string | Audio-transcription path. Writable through create and update. |
| defaultAudioSpeechPath | string | Text-to-speech path. Writable through create and update. |
| defaultImageGenerationPath | string | Image-generation path. Writable through create and update. |
| defaultResponsesPath | string | Responses-API path. Writable through create and update. |
| apiVersion | string | Provider API version |
| organizationId | string | Organization identifier (optional) |
| authScheme | string | Auth scheme enum constant (BEARER, API_KEY_HEADER, BASIC, AWS_SIGV4, OAUTH2, NONE, CUSTOM) — see Credential Type by authScheme |
| authHeaderName | string | Header used to carry the credential |
| credentialSource | string | Who supplies the credential: GATEWAY or CLIENT. Never null in the response — legacy records default to GATEWAY |
| apiKeyLocation | string | Where the API key travels: HEADER or QUERY. Never null in the response — legacy records default to HEADER |
| apiKeyPrefix | string | Stored value prefix; null means the auth scheme's own prefix is used, "" means the raw key with no prefix |
| allowClientOverride | boolean | true if an incoming request's own auth header is kept instead of the stored credential (GATEWAY mode only); null/false otherwise |
| apiKeySet | boolean | true if an apiKey is configured (secret value never returned) |
| apiSecretSet | boolean | true if an apiSecret is configured (secret value never returned) |
| serviceAccountJsonSet | boolean | true if a GCP Vertex service-account JSON is configured (secret value never returned via APIops) |
| supportedModels | array | The models of the provider, with prices, enabled switch and access control — see Supported Model Fields |
| coldStartRetryEnabled | boolean | Deprecated, has no effect. Returned for compatibility only |
| onlyListedModels | boolean | true if the gateway refuses a model ID that is not in supportedModels; null/false otherwise (unlisted model IDs are passed to the provider as is) |
| lastHealthCheckAt | string | ISO-8601 timestamp of the last health probe (read-only) |
| healthStatus | string | Last probe result enum constant (UNKNOWN, HEALTHY, DOWN) (read-only) |
| lastLatencyMs | integer | Last probe round-trip time in milliseconds (read-only) |
| deploymentType | string | Deployment type enum constant (CLOUD, ON_PREM, OTHER); a report-only label, OTHER for custom providers |
| builtIn | boolean | true for system-provided built-in templates (read-only). |
| metadata | array | Custom key/value metadata entries; secret values are nulled |
| usedByRefs | array[string] | Names of API proxies referencing this provider (populated only by this endpoint) |
wireProtocol and the six default*Path fields are stored with the connection, and the gateway reads
this copy. You can write them through create and update. A write that omits them, or sends a blank path,
keeps the stored values. A write that changes providerType does not keep them; the new type's own apply.
The effective request URL is endpoint + the path for the modality being called. Both halves support
Apinizer variable resolution (${env.name} and #{contextVar}), resolved at request time, so one
connection definition can point at different paths per environment. A path left empty falls back to
the provider type's built-in default.
EnumStatus
SUCCESS- Operation successfulFAILURE- Operation failed
Error Response (400 Bad Request)
{
"status": "FAILURE",
"resultMessage": "LLM provider (name: deepseek-primary) was not found!"
}
or
{
"status": "FAILURE",
"resultMessage": "LLM provider name can not be empty!"
}
Error Response (401 Unauthorized)
{
"status": "FAILURE",
"resultMessage": "Token is not valid!"
}
cURL Example
curl -X GET \
"https://demo.apinizer.com/apiops/projects/MyProject/llm-providers/deepseek-primary/" \
-H "Authorization: Bearer YOUR_TOKEN"
Notes and Warnings
- Secret Masking (INV-06):
apiKey,apiSecretandserviceAccountJsonare never returned in plaintext; onlyapiKeySet/apiSecretSet/serviceAccountJsonSetflags- Secret metadata values are returned as
null
- Name-based Lookup:
providerNameis matched case-insensitively against the providername- A non-existent name returns a
400 Bad Requestwith a "was not found" message
- Usage References:
usedByRefslists API proxies referencing this provider; use it to check impact before deleting
Related Documentation
- List LLM Providers - List all providers in a project
- Update LLM Provider - Update an existing provider
- Delete LLM Provider - Delete a provider
- LLM Providers API - Resource overview and permissions