Skip to content
Subako Docs
English
Esc
↑↓navigate↵open⌘Jpreview

Update a model provider

Changes a BYOK provider in place. An omitted field is left as it stands, including api_key: send one only to rotate the credential. The key is write-only – it is sealed on arrival and no response carries it – and rotating it keeps the provider’s id, so agent versions already published against it go on resolving.

PATCH/v1/model-providers/{model_provider_id}
Authorization
AuthorizationBearer token · headerrequired
Path parameters
model_provider_idstring<uuid>required
Model provider id
Request body
requiredapplication/json
api_keystring | null
A new upstream credential, sealed and put in place of the stored one. Write-only: no route answers with a key, so there is nothing to read back and nothing to compare against. The provider keeps its id, so every agent version already naming it goes on resolving.
min length 1 · max length 16384
base_urlstring | null
max length 2048
descriptionstring | null
max length 1024
display_namestring | null
max length 200
Responses
200The updated provider; the API key is never returned.
One of:
object
created_atstring<date-time>required
descriptionstringrequired
display_namestringrequired
formatModelProviderFormatBodyrequired
The wire format a provider speaks, which decides the shape of the model settings an agent config may carry for it.
Allowed:anthropicopenai_responses
idstring<uuid>required
updated_atstring<date-time>required
When the provider last changed: a rename, a new endpoint, or a new key.
modelsPlatformModelBody[]required
Models available through this platform provider.
Show properties
Array of PlatformModelBody
descriptionstringrequired
display_namestringrequired
modelstringrequired
priceany | ModelPriceBodyrequired
Show properties
One of:
any
any
ModelPriceBody
One of:
object
formatstringrequired
Allowed:anthropic
per_tokenAnthropicPriceBodyrequired
Show properties
cache_readinteger<int64>required
cache_writeinteger<int64>required
inputinteger<int64>required
outputinteger<int64>required
object
formatstringrequired
Allowed:openai_responses
per_tokenOpenaiResponsesPriceBodyrequired
`input` prices the input neither read from nor written to the cache, `cached_input` the part read and `cache_write` the part written; `output` prices every output token, reasoning included.
Show properties
cache_writeinteger<int64>required
cached_inputinteger<int64>required
inputinteger<int64>required
outputinteger<int64>required
typestringrequired
Allowed:platform
object
created_atstring<date-time>required
descriptionstringrequired
display_namestringrequired
formatModelProviderFormatBodyrequired
The wire format a provider speaks, which decides the shape of the model settings an agent config may carry for it.
Allowed:anthropicopenai_responses
idstring<uuid>required
updated_atstring<date-time>required
When the provider last changed: a rename, a new endpoint, or a new key.
base_urlstringrequired
Where the proxy sends this provider's calls, as the workspace set it. Its API key never comes back.
workspace_idstring<uuid>required
typestringrequired
Allowed:byok
400Malformed body, path parameter, a field outside its bound, or a base URL the network policy refuses.
errorErrorDetailrequired
What went wrong: a `code` to branch on and a `message` to show. The message is written for a person and may change; the code will not.
Show properties
codeErrorCoderequired
The machine-readable half of an error response, and the field a client branches on. Closed: every error carries exactly one of these.
Allowed:unauthorizedforbiddennot_foundinvalid_requestconflictclient_outdatedprecondition_failedtoo_many_requestsinternal
messagestringrequired
401Missing, malformed, or invalid bearer token.
errorErrorDetailrequired
What went wrong: a `code` to branch on and a `message` to show. The message is written for a person and may change; the code will not.
Show properties
codeErrorCoderequired
The machine-readable half of an error response, and the field a client branches on. Closed: every error carries exactly one of these.
Allowed:unauthorizedforbiddennot_foundinvalid_requestconflictclient_outdatedprecondition_failedtoo_many_requestsinternal
messagestringrequired
403Caller lacks model_provider.manage, or the provider is a platform row, which only the operator changes.
errorErrorDetailrequired
What went wrong: a `code` to branch on and a `message` to show. The message is written for a person and may change; the code will not.
Show properties
codeErrorCoderequired
The machine-readable half of an error response, and the field a client branches on. Closed: every error carries exactly one of these.
Allowed:unauthorizedforbiddennot_foundinvalid_requestconflictclient_outdatedprecondition_failedtoo_many_requestsinternal
messagestringrequired
404No such provider, or the caller cannot see it.
errorErrorDetailrequired
What went wrong: a `code` to branch on and a `message` to show. The message is written for a person and may change; the code will not.
Show properties
codeErrorCoderequired
The machine-readable half of an error response, and the field a client branches on. Closed: every error carries exactly one of these.
Allowed:unauthorizedforbiddennot_foundinvalid_requestconflictclient_outdatedprecondition_failedtoo_many_requestsinternal
messagestringrequired
Try it
Server
Authorization
Parameters
Bodyapplication/json
Request
curl -X PATCH "https://api.us.cloud.subako.ai/v1/model-providers/497f6eca-6276-4993-bfeb-53cbbbba6f08" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "api_key": "string",
  "base_url": "string",
  "description": "string",
  "display_name": "string"
}'
Response
{
  "created_at": "2019-08-24T14:15:22Z",
  "description": "string",
  "display_name": "string",
  "format": "anthropic",
  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  "updated_at": "2019-08-24T14:15:22Z",
  "models": [
    {
      "description": "string",
      "display_name": "string",
      "model": "string",
      "price": {}
    }
  ],
  "type": "platform"
}