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

# Introduction

> The Productlane v2 API at a glance.

The Productlane v2 API gives you programmatic access to threads, contacts, companies, changelogs, help-center articles, projects, issues, tags, the customer portal, and workspace members. It also delivers events to your servers via webhooks.

If you're integrating for the first time, start here. If you have v1 in production, see the [migration guide](/api-v2/meta/migration-guide) - v1 sunsets on **November 20, 2026**.

## Base URL

```
https://productlane.com/api/v2
```

## Conventions

* **JSON** request and response bodies.
* **`snake_case`** field names everywhere.
* **ISO 8601** strings for every date.
* **Cursor pagination** on every list endpoint - see [Pagination](/api-v2/pagination).
* **Bearer token** auth on every endpoint - see [Authentication](/api-v2/authentication).
* **Stable error envelope** with codes, messages, and a `request_id` - see [Errors](/api-v2/errors).
* **`X-Request-Id`** on every response (success or failure) - quote it in support tickets.

## What's in the box

| Area       | Highlights                                                                              |
| ---------- | --------------------------------------------------------------------------------------- |
| Threads    | List, create, update; status (`open` / `snoozed` / `done`); messages, internal comments |
| Contacts   | CRUD, lookup by id or by email                                                          |
| Companies  | CRUD, lookup by `external_id` or `domain`                                               |
| Projects   | CRUD; list available statuses                                                           |
| Issues     | CRUD; list Linear workflow states                                                       |
| Tags       | CRUD on tags and tag groups                                                             |
| Changelogs | CRUD and tags                                                                           |
| Docs       | Help-center articles and groups                                                         |
| Portal     | Read the public roadmap and a contact's portal view                                     |
| Members    | List members, invite, change role, remove, manage pending invites                       |
| Files      | Multipart upload to the CDN for attachments and inline media                            |
| Webhooks   | Subscribe to resource events with HMAC-signed deliveries (configured in the dashboard)  |

## Verify your setup

A single call confirms your key works and tells you which workspace and scopes it has:

```bash theme={null}
curl -H "Authorization: Bearer $PRODUCTLANE_V2_KEY" \
  https://productlane.com/api/v2/me
```

Response:

```json theme={null}
{
  "workspace_id": "wks_abc123",
  "api_key_id": "key_def456",
  "scopes": ["threads:read", "threads:write", "contacts:read"],
  "linear_team_ids": ["lt_..."],
  "default_linear_team_id": "lt_..."
}
```

`linear_team_ids` is empty and `default_linear_team_id` is `null` when Linear isn't connected.

If that returns a 401, your key is missing or malformed. If it returns `410 unsupported_key_version`, you've passed a v1 key - mint a v2 one in **Settings → Integrations → API**.

## Where to go next

* [Authentication](/api-v2/authentication) - minting keys, scopes, the bearer header.
* [Errors](/api-v2/errors) - every error code and what to do about it.
* [Rate limits](/api-v2/rate-limits) - limits, headers, and how to pace yourself.
* [Pagination](/api-v2/pagination) - the cursor pattern every list uses.
* [Webhooks](/api-v2/webhooks) - subscribe to events instead of polling.
