Skip to main content

Step 1 — Generate an API key

In your Tabillo workspace go to Settings → API Keys → Generate new key. Copy the key.

Step 2 — Get your reference data

Before creating initiatives you need valid IDs for products, statuses, and timeframe period keys. Run these three calls (replace your-slug and your-key):
# Get sub-product IDs
curl https://crossproductroadmapbackend.vercel.app/api/v1/products \
  -H "Authorization: Bearer your-key" \
  -H "x-tenant-slug: your-slug"

# Get status IDs
curl https://crossproductroadmapbackend.vercel.app/api/v1/statuses \
  -H "Authorization: Bearer your-key" \
  -H "x-tenant-slug: your-slug"

# Get timeframe period keys (e.g. "2026_01" for Jan 2026)
curl https://crossproductroadmapbackend.vercel.app/api/v1/timeframes \
  -H "Authorization: Bearer your-key" \
  -H "x-tenant-slug: your-slug"

# Get user IDs (required for ownerId)
curl https://crossproductroadmapbackend.vercel.app/api/v1/users \
  -H "Authorization: Bearer your-key" \
  -H "x-tenant-slug: your-slug"
Period keys depend on how your workspace timeframes are configured. Monthly workspaces use keys like 2026_01, quarterly use 2026_Q1, custom use whatever labels you defined. Always call GET /timeframes first to get the exact keys.

Step 3 — Create an initiative

curl -X POST https://crossproductroadmapbackend.vercel.app/api/v1/initiatives \
  -H "Authorization: Bearer your-key" \
  -H "x-tenant-slug: your-slug" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "My first API initiative",
    "subProductId": "SUB_PRODUCT_ID",
    "statusId": "STATUS_ID",
    "startQuarter": "2026_01",
    "endQuarter": "2026_03",
    "ownerId": "USER_ID",
    "notes": "Created via the Tabillo API"
  }'
The response includes the full initiative object with its id. You can use that ID to update or retrieve it later.

Step 4 — Update an initiative

curl -X PATCH https://crossproductroadmapbackend.vercel.app/api/v1/initiatives/INITIATIVE_ID \
  -H "Authorization: Bearer your-key" \
  -H "x-tenant-slug: your-slug" \
  -H "Content-Type: application/json" \
  -d '{"statusId": "NEW_STATUS_ID"}'
Only the fields you include are changed.