Public API
Read and manage Deck product data, run supported asynchronous work, and execute scoped Build mutations from external tools and scripts.
Public API
Deck’s Public API gives your team a stable way to read and manage Deck product data, run supported asynchronous work, and execute scoped Build mutations. It is built for internal tools, automations, reporting pipelines, partner integrations, and workflows that need direct access to feedback intelligence and the Build workflow.
What you can do
- verify a key and inspect the resolved organization and role
- list and retrieve themes with insight counts
- fetch insights with theme, sentiment, and category filters
- work with categories, segments, contacts, feedback, interviews, surveys, NPS data, and CSV uploads
- inspect integrations and start supported import, sync, synthesis, generation, and processing jobs
- read Projects and their document sections, external links, and evidence references
- create, update, and archive Projects through resource-style endpoints
- read initiatives and their structured content sections
- execute approved Build write mutations for Projects, initiatives, and opportunities
- access subtheme analysis for eligible organizations
- generate your own client from Deck’s OpenAPI specification
Before you start
To use the Public API, all of the following must be true:
- your organization has Public API enabled in Settings → Deck API
- your current org role is allowed by the API access policy
- you have created an API key in Deck
Write access requires write scope. Resource-style Project writes use POST /projects, PATCH /projects/{projectId}, and DELETE /projects/{projectId}. Action-based Build mutations use POST /build/projects, POST /build/initiatives, and POST /build/opportunities and require Idempotency-Key.
Quickstart
1. Create an API key
Go to Settings → Deck API and create a key for your user account.
Keys start with a dk_ prefix, for example:
dk_us_...dk_eu_...dk_au_...
2. Verify the key
Use the /me endpoint first:
curl --request GET \
--url https://api.getdeck.io/api/v1/me \
--header "Authorization: Bearer dk_us_your_key_here"Successful response:
{
"data": {
"org_id": "org_123",
"user_id": "user_123",
"role": "org:admin",
"scope": "read"
}
}3. Fetch your first resource
curl --request GET \
--url "https://api.getdeck.io/api/v1/themes?limit=10" \
--header "Authorization: Bearer dk_us_your_key_here"Base URL
Production:
https://api.getdeck.io/api/v1Authentication
You can send your API key using either:
Authorization: Bearer dk_us_...or
X-API-Key: dk_us_...Available resources
| Endpoint | Purpose |
|---|---|
/me, /context, /org-members, /dashboard, /search | Verify access and query shared organization data |
/themes, /subthemes, /insights, /categories, /segments | Explore and maintain synthesized feedback intelligence |
/contacts, /feedback, /interviews, /surveys, /nps | Read customer and feedback-source data |
/csv-uploads, /integrations, /jobs | Manage supported imports and integrations, then poll async work |
/projects, /initiatives, /opportunities | Read and manage Build resources and their links |
/build/projects, /build/initiatives, /build/opportunities | Execute bounded, write-scoped Build actions |
/support/cs | Read customer-service ticket data |
/openapi | Fetch the complete OpenAPI 3.1 contract |
Pagination
Deck uses two pagination styles:
- Cursor pagination for the resource endpoints that return chronological lists, including themes, insights, Projects, and initiatives
- Offset pagination for subthemes
Treat cursor values as opaque. Do not parse or construct them yourself.
OpenAPI spec
The Public API contract is published at:
/api/v1/openapiUse it to:
- inspect the latest schema
- find the exact methods, request bodies, filters, and response fields for every endpoint family
- generate typed clients
- import requests into your API tools