{"name":"Conductor Deck API","description":"Read-only HTTP API for Conductor Deck, a visual automation builder for Elgato Stream Deck. Everything under the keyless section below answers an anonymous request — no account, no key, no form. The account section reads one user's own data and needs a credential they issue themselves.","api_version":"1","base_url":"https://www.conductordeck.com/api/v1","documentation_url":"https://www.conductordeck.com/developers","openapi_url":"https://www.conductordeck.com/openapi.json","authentication":{"keyless":{"description":"Every endpoint under the keyless section needs no credential. This is the surface to try first; it requires nothing from a human.","scope":"public:read"},"api_key":{"description":"A read-only key the account holder mints themselves, sent as 'Authorization: Bearer cd_live_…'.","issued_at":"https://www.conductordeck.com/settings/api-keys","self_serve":true},"oauth2":{"description":"OAuth 2.1 authorization code with PKCE, for agents that should ask for access rather than be handed a key. Public clients, S256 required, no refresh tokens, 8-hour access tokens sent as 'Authorization: Bearer cd_oat_…'.","issuer":"https://www.conductordeck.com","metadata":"https://www.conductordeck.com/.well-known/oauth-authorization-server","dynamic_client_registration":"https://www.conductordeck.com/api/oauth/register"},"scopes":["workflows:read","runs:read"],"protected_resource_metadata":"https://www.conductordeck.com/.well-known/oauth-protected-resource"},"rate_limits":{"policy":"public","limit":120,"window_seconds":60,"headers":["RateLimit-Limit","RateLimit-Remaining","RateLimit-Reset","RateLimit-Policy"],"on_exceeded":"HTTP 429 with a Retry-After header.","documentation":"https://www.conductordeck.com/developers#rate-limits"},"errors":{"shape":"{ \"error\": { \"code\", \"message\", \"hint\", \"documentation_url\", \"request_id\" } }","content_type":"application/json","documentation":"https://www.conductordeck.com/developers#errors"},"versioning":{"strategy":"url_path","current_version":"1","version_header":"X-API-Version","base_path":"/api/v1","documentation":"https://www.conductordeck.com/developers/versioning","breaking_change_policy":"A breaking change ships as a new version prefix (/api/v2). The previous version keeps working; it is never changed in place.","deprecation_signalling":{"headers":["Deprecation (RFC 9745)","Sunset (RFC 8594)"],"description":"A deprecated endpoint answers with a Deprecation header, a Sunset header carrying the removal date, and a Link rel=\"deprecation\" pointing at the migration notes. No endpoint is deprecated today, so no endpoint currently sends them.","minimum_notice_days":180},"additive_changes":"New fields may be added to a response without a version bump. Parse defensively: ignore fields you do not recognise."},"endpoints":{"keyless":[{"path":"/api/v1/health","method":"GET","summary":"Liveness of the versioned API. Cheap enough to poll."},{"path":"/api/v1/integrations","method":"GET","summary":"Search the apps Conductor Deck can connect to."},{"path":"/api/v1/integrations/{slug}","method":"GET","summary":"One integration, with its triggers and actions."},{"path":"/api/v1/templates","method":"GET","summary":"Built-in workflow templates."},{"path":"/api/v1/templates/{id}","method":"GET","summary":"One workflow template, including its step graph."},{"path":"/api/mcp","method":"POST","summary":"Remote MCP server over Streamable HTTP (JSON-RPC 2.0)."}],"account":[{"path":"/api/v1/me","method":"GET","summary":"Which account the credential belongs to, and what it can reach."},{"path":"/api/v1/me/workflows","method":"GET","summary":"The credential owner's workflows.","scope":"workflows:read"},{"path":"/api/v1/me/runs","method":"GET","summary":"The credential owner's workflow run history.","scope":"runs:read"}]}}