Update Hosted API

Beta

Update a hosted API (merge-patch). Switching to public is refused while a run route exists: an anonymous caller must not start runs that spend the workspace’s budget. Dark launch: requires the hosted_apis_access entitlement (402 hosted_apis_not_in_plan otherwise).

Authentication

AuthorizationBearer

Enter your API key with the Bearer prefix, e.g. ‘Bearer sk_…’.

Path parameters

api_idstringRequired

Hosted API id (prefixed external id, api_...).

Headers

Speechify-VersionstringOptional

Request

This endpoint expects an object.
namestringOptional
descriptionstringOptional<=1000 characters
auth_modeenumOptional
cors_originslist of stringsOptional
enabledbooleanOptional
A paused API answers 503 to every consumer request.
daily_run_capintegerOptional1-100000

Response headers

Speechify-Request-IdstringOptional
Unique identifier for this request, present on every response (2xx and non-2xx alike). If the caller sends a `Speechify-Request-Id` request header the server echoes it back (sanitized and length-capped) so one logical request can be traced end-to-end; otherwise the server generates a fresh value. Log it on every response and quote it in support requests - it is the stable handle that ties your observation to Speechify's server-side logs, and it matches the `request_id` field in the error envelope. The legacy alias `X-Request-ID` carries the same value and is still accepted on requests, until 2027-07-24. Prefer the un-prefixed name (RFC 6648).

Response

OK
idstringformat: "^api_[0-9a-hjkmnp-tv-z]{26}$"
slugstring
hostnamestring

The public host, <slug>.<hosted-api domain>; empty where no domain is configured.

base_urlstring
namestring
descriptionstring
auth_modeenum

consumer_key: every request presents a ck_ bearer minted for this API. public: no credential; only read resolvers may be served, and the per-IP limiter is the only bound.

cors_originslist of strings

Browser origins allowed to call the API (* for any). Empty for server-to-server only.

enabledboolean
daily_run_capinteger1-100000

Runs the API’s run routes may start per UTC day; the spend ceiling behind a leaked consumer key.

project_idstring or nullformat: "^proj_[0-9a-hjkmnp-tv-z]{26}$"
created_atdatetime
updated_atdatetime

Errors

400
Bad Request Error
401
Unauthorized Error
402
Payment Required Error
404
Not Found Error