Skip to content

REST API

Stackify provides a versioned REST API for programmatic access to cards, fields, and records.

Base URL

https://app.stackify.se/api/v1

Authentication

All API requests must include an API key in the Authorization header:

Authorization: Bearer tvk_live_...

See API keys for how to create and manage keys.

Core resources

Cards

Method Path Description
GET /workspaces/{wid}/cards List all cards in the workspace
GET /workspaces/{wid}/cards/{cid} Get a single card
POST /workspaces/{wid}/cards Create a card
PATCH /workspaces/{wid}/cards/{cid} Update card name or description
DELETE /workspaces/{wid}/cards/{cid} Delete a card

Fields

Method Path Description
GET /workspaces/{wid}/cards/{cid}/fields List fields (with types and options)
POST /workspaces/{wid}/cards/{cid}/fields Add a field
PATCH /workspaces/{wid}/cards/{cid}/fields/{fid} Update a field
DELETE /workspaces/{wid}/cards/{cid}/fields/{fid} Delete a field

Records

Method Path Description
GET /workspaces/{wid}/cards/{cid}/records List records (paginated)
POST /workspaces/{wid}/cards/{cid}/records Create a record
PATCH /workspaces/{wid}/cards/{cid}/records/{rid} Update a record
DELETE /workspaces/{wid}/cards/{cid}/records/{rid} Delete a record

Pagination

Records are returned with cursor-based pagination. Pass the next_cursor value from one response as the cursor query parameter in the next request:

GET /workspaces/{wid}/cards/{cid}/records?limit=100&cursor=01HZ...

Example: list records

curl https://app.stackify.se/api/v1/workspaces/YOUR_WORKSPACE_ID/cards/YOUR_CARD_ID/records \
  -H "Authorization: Bearer tvk_live_YOUR_KEY"

Response:

{
  "records": [
    {
      "id": "01HZ...",
      "data": {
        "FIELD_ID_1": "Project Alpha",
        "FIELD_ID_2": 42,
        "FIELD_ID_3": "2025-06-01"
      },
      "created_at": "2025-05-30T10:00:00Z"
    }
  ],
  "next_cursor": "01HZ..."
}

Example: create a record

curl -X POST https://app.stackify.se/api/v1/workspaces/YOUR_WORKSPACE_ID/cards/YOUR_CARD_ID/records \
  -H "Authorization: Bearer tvk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "data": {
      "FIELD_ID_1": "New project",
      "FIELD_ID_2": 10
    }
  }'

Field IDs

Record data is keyed by field ID, not field name. Use GET /fields to retrieve the mapping of field names to IDs:

curl https://app.stackify.se/api/v1/workspaces/{wid}/cards/{cid}/fields \
  -H "Authorization: Bearer tvk_live_..."

Error format

Errors follow RFC 7807 (Problem Details):

{
  "type": "https://stackify.se/errors/record-not-found",
  "title": "Record not found",
  "status": 404,
  "detail": "Record 01HZ... does not exist in card 01HY..."
}

OpenAPI specification

The full OpenAPI 3.0 specification is available at:

GET https://app.stackify.se/api/v1/openapi.json
GET https://app.stackify.se/api/v1/openapi.yaml

Use the spec to generate client libraries or to connect Stackify to platforms like UiPath Connector Builder.

Rate limits

Rate limits apply per API key based on your subscription tier. The response includes standard rate-limit headers:

X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 998
X-RateLimit-Reset: 1717160400