← Tack Docs

Quickstart

This guide walks you through a complete Tack integration in five steps. By the end, you will have a workspace, a project board with lists, a card with labels, and a comment thread.

Prerequisites

  • A ProductCraft account with an API key
  • Any HTTP client (curl, fetch, Postman, etc.)

Step 1

Create a Workspace

A Workspace is the top-level container. It maps to a team, an organization, or a customer in a multi-tenant product. All projects, cards, and labels live inside a Workspace.

curl -X POST https://api.productcraft.co/tack/v1/workspaces \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "acme-eng",
    "display_name": "Acme Engineering"
  }'

Response:

{
  "id": "ws_01HQ3...",
  "name": "acme-eng",
  "display_name": "Acme Engineering",
  "created_at": "2026-02-20T10:00:00Z"
}

Step 2

Create a Project with Lists

A Project is a named board. You can seed it with Lists (columns) at creation time. Lists define the stages in your workflow.

curl -X POST https://api.productcraft.co/tack/v1/workspaces/acme-eng/projects \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "q1-roadmap",
    "display_name": "Q1 Roadmap",
    "lists": [
      { "name": "backlog", "display_name": "Backlog" },
      { "name": "in-progress", "display_name": "In Progress" },
      { "name": "review", "display_name": "Review" },
      { "name": "done", "display_name": "Done" }
    ]
  }'

Response:

{
  "id": "proj_01HQ3...",
  "workspace_id": "ws_01HQ3...",
  "name": "q1-roadmap",
  "display_name": "Q1 Roadmap",
  "lists": [
    { "id": "list_01HQ3A...", "name": "backlog", "display_name": "Backlog", "position": 0 },
    { "id": "list_01HQ3B...", "name": "in-progress", "display_name": "In Progress", "position": 1 },
    { "id": "list_01HQ3C...", "name": "review", "display_name": "Review", "position": 2 },
    { "id": "list_01HQ3D...", "name": "done", "display_name": "Done", "position": 3 }
  ],
  "created_at": "2026-02-20T10:01:00Z"
}

Step 3

Create Labels

Labels are workspace-level tags you can attach to any card. Create a few to categorize your work.

curl -X POST https://api.productcraft.co/tack/v1/workspaces/acme-eng/labels \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "backend",
    "color": "#3b82f6"
  }'

Response:

{
  "id": "lbl_01HQ3...",
  "workspace_id": "ws_01HQ3...",
  "name": "backend",
  "color": "#3b82f6",
  "created_at": "2026-02-20T10:02:00Z"
}

Step 4

Create a Card

A Card is a unit of work. It lives in a specific List, carries a title and markdown body, and can have assignees, labels, a priority, and a due date.

curl -X POST https://api.productcraft.co/tack/v1/workspaces/acme-eng/projects/q1-roadmap/cards \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Integrate payment provider",
    "body": "Set up Stripe checkout flow for the billing page.\n\n## Acceptance criteria\n- Checkout session creation\n- Webhook handler for payment events\n- Success and failure redirects",
    "list": "backlog",
    "priority": "high",
    "assignees": ["usr_01HQ3..."],
    "labels": ["backend"],
    "due_at": "2026-03-15T00:00:00Z"
  }'

Response:

{
  "id": "card_01HQ3...",
  "project_id": "proj_01HQ3...",
  "list_id": "list_01HQ3A...",
  "title": "Integrate payment provider",
  "body": "Set up Stripe checkout flow...",
  "priority": "high",
  "position": 0,
  "assignees": ["usr_01HQ3..."],
  "labels": ["backend"],
  "due_at": "2026-03-15T00:00:00Z",
  "completed_at": null,
  "created_at": "2026-02-20T10:03:00Z",
  "updated_at": "2026-02-20T10:03:00Z"
}

Step 5

Move a Card and Add a Comment

When work starts, move the card to the next list. Add a comment to leave context for your team (or your AI agent).

# Move the card to "In Progress"
curl -X POST https://api.productcraft.co/tack/v1/workspaces/acme-eng/projects/q1-roadmap/cards/card_01HQ3.../move \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "list": "in-progress",
    "position": 0
  }'
# Add a comment
curl -X POST https://api.productcraft.co/tack/v1/workspaces/acme-eng/projects/q1-roadmap/cards/card_01HQ3.../comments \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "body": "Started implementation. Using Stripe Checkout Sessions API. ETA: 2 days."
  }'

Comment response:

{
  "id": "cmt_01HQ3...",
  "card_id": "card_01HQ3...",
  "author_id": "usr_01HQ3...",
  "body": "Started implementation. Using Stripe Checkout Sessions API. ETA: 2 days.",
  "created_at": "2026-02-20T10:05:00Z"
}

Query the activity feed

Every action you took in this quickstart was recorded in the activity feed. Query it to see the full history of your project.

GET https://api.productcraft.co/tack/v1/workspaces/acme-eng/projects/q1-roadmap/activity?limit=5

The activity feed returns every card creation, move, update, and comment in chronological order. Use it for audit trails, AI agent context, or building your own change log.