> ## Documentation Index
> Fetch the complete documentation index at: https://tabillo.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart

> Make your first API call in under 2 minutes.

## 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`):

```bash theme={null}
# 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"
```

<Tip>
  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.
</Tip>

## Step 3 — Create an initiative

```bash theme={null}
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

```bash theme={null}
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.
