Skip to main content

Documentation Index

Fetch the complete documentation index at: https://productlane.mintlify.dev/docs/llms.txt

Use this file to discover all available pages before exploring further.

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 - 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.
  • Bearer token auth on every endpoint - see Authentication.
  • Stable error envelope with codes, messages, and a request_id - see Errors.
  • X-Request-Id on every response (success or failure) - quote it in support tickets.

What’s in the box

AreaHighlights
ThreadsList, create, update; status (open / snoozed / done); messages, internal comments
ContactsCRUD, lookup by id or by email
CompaniesCRUD, lookup by external_id or domain
ProjectsCRUD; list available statuses
IssuesCRUD; list Linear workflow states
TagsCRUD on tags and tag groups
ChangelogsCRUD and tags
DocsHelp-center articles and groups
PortalRead the public roadmap and a contact’s portal view
MembersList members, invite, change role, remove, manage pending invites
FilesMultipart upload to the CDN for attachments and inline media
WebhooksSubscribe 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:
curl -H "Authorization: Bearer $PRODUCTLANE_V2_KEY" \
  https://productlane.com/api/v2/me
Response:
{
  "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 - minting keys, scopes, the bearer header.
  • Errors - every error code and what to do about it.
  • Rate limits - limits, headers, and how to pace yourself.
  • Pagination - the cursor pattern every list uses.
  • Webhooks - subscribe to events instead of polling.