Skip to main content
POST
/
api
/
v1
/
teams
/
{team_id}
/
integrations
/
{provider}
/
config
Save Config
curl --request POST \
  --url https://api.example.com/api/v1/teams/{team_id}/integrations/{provider}/config \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "config": {}
}'
{
  "provider": "<string>",
  "status": "<string>",
  "account_name": "<string>"
}

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Path Parameters

team_id
string<uuid>
required
provider
string
required

Body

application/json

Multi-field config payload.

config accepts Any values (not just str) so nested structures like Keystatic's content_paths — a {task_type: path} dict — can round-trip through the API and JSONB column without forcing the frontend to JSON.stringify them. The pre-2026-06-02 shape was dict[str, str] which (a) made the frontend serialise nested dicts to JSON strings and then (b) made the publish-leg resolver crash on those strings with AttributeError: 'str' object has no attribute 'get' — the CMT publish loop incident.

The backend resolver (KeystaticAdapter._resolve_content_path) still defensively handles JSON-stringified shapes for back-compat with credentials saved before this widening (PR #1835). New saves go in as native dicts via this widened schema.

config
Config · object
required

Response

Successful Response

provider
string
required
status
string
required
account_name
string
required