# Productlane Docs ## Docs - [Authentication](https://productlane.mintlify.dev/docs/api-v2/authentication.md): Mint a v2 API key and authorize every request. - [Create a changelog tag](https://productlane.mintlify.dev/docs/api-v2/changelogs/create-a-changelog-tag.md): Create a tag that can be attached to changelogs. Provide at least one of `color` or `icon`: with only `color`, the dashboard renders a colored dot; with `icon` (a Lucide icon name), it renders the icon in that color. Requires the Scale plan and the changelogs:write scope. - [Create changelog](https://productlane.mintlify.dev/docs/api-v2/changelogs/create-changelog.md): Create a changelog. Pass `language` to create a translation row instead of populating the base row. Requires the changelogs:write scope. - [Delete a changelog tag](https://productlane.mintlify.dev/docs/api-v2/changelogs/delete-a-changelog-tag.md): Hard-delete a changelog tag. The tag is also unlinked from every changelog it was applied to. Requires the Scale plan and the changelogs:write scope. - [Delete changelog](https://productlane.mintlify.dev/docs/api-v2/changelogs/delete-changelog.md): Soft-delete a changelog. Requires the changelogs:write scope. - [Get changelog](https://productlane.mintlify.dev/docs/api-v2/changelogs/get-changelog.md): Fetch a changelog by id. Requires the changelogs:read scope. - [List changelog tags](https://productlane.mintlify.dev/docs/api-v2/changelogs/list-changelog-tags.md): List tags that can be attached to changelogs. Requires the changelogs:read scope. - [List changelogs](https://productlane.mintlify.dev/docs/api-v2/changelogs/list-changelogs.md): List changelogs in the workspace. Cursor-paginated. Requires the changelogs:read scope. - [Send a changelog broadcast](https://productlane.mintlify.dev/docs/api-v2/changelogs/send-a-changelog-broadcast.md): Broadcast an existing changelog to subscribers via email and/or Slack. Pass `email: true` to send to subscribed contacts (requires the email integration enabled) and/or `slack: true` to post to the configured Slack channels (requires Slack connect). At least one channel is required. This endpoint ne… - [Update a changelog tag](https://productlane.mintlify.dev/docs/api-v2/changelogs/update-a-changelog-tag.md): Patch a changelog tag's name, color, or icon. Pass `icon: null` to remove the icon and render a colored dot. Requires the Scale plan and the changelogs:write scope. - [Update changelog](https://productlane.mintlify.dev/docs/api-v2/changelogs/update-changelog.md): Update a changelog. Pass `language` to upsert a translation row; non-translatable fields always apply to the base. Requires the changelogs:write scope. - [Create company](https://productlane.mintlify.dev/docs/api-v2/companies/create-company.md): Create a company. Linear customer is provisioned asynchronously once a domain is set. Requires the companies:write scope. - [Delete company](https://productlane.mintlify.dev/docs/api-v2/companies/delete-company.md): Soft-delete a company. Linear customer is deleted asynchronously and threads that lost the company link are reindexed. Requires the companies:write scope. - [Get company](https://productlane.mintlify.dev/docs/api-v2/companies/get-company.md): Fetch a company by id. Requires the companies:read scope. - [Get Linear customer options](https://productlane.mintlify.dev/docs/api-v2/companies/get-linear-customer-options.md): Get available Linear customer statuses and tiers for your workspace. Returns null if Linear is not connected. Authentication is required. - [List companies](https://productlane.mintlify.dev/docs/api-v2/companies/list-companies.md): List companies in the workspace. Cursor-paginated. Requires the companies:read scope. - [Merge a company into another](https://productlane.mintlify.dev/docs/api-v2/companies/merge-a-company-into-another.md): Merge source_id into the path company. Moves the source's threads, contacts, and upvotes to the survivor, fills the survivor's empty properties, then deletes the source. Merges the linked Linear customers when both exist. Requires the companies:write scope. - [Update company](https://productlane.mintlify.dev/docs/api-v2/companies/update-company.md): Update a company. Linear identity fields are synced asynchronously. Requires the companies:write scope. - [Block a sender](https://productlane.mintlify.dev/docs/api-v2/contacts/block-a-sender.md): Block an email address (`type: "EMAIL"`) or an entire domain (`type: "DOMAIN"`). Blocked senders cannot create new threads or post on existing ones. Requires the contacts:write scope. - [Create contact](https://productlane.mintlify.dev/docs/api-v2/contacts/create-contact.md): Create a contact. Requires the contacts:write scope. - [Delete contact](https://productlane.mintlify.dev/docs/api-v2/contacts/delete-contact.md): Soft-delete a contact. Requires the contacts:write scope. - [Get contact](https://productlane.mintlify.dev/docs/api-v2/contacts/get-contact.md): Fetch a contact by id. Requires the contacts:read scope. - [List blocked senders](https://productlane.mintlify.dev/docs/api-v2/contacts/list-blocked-senders.md): List blocked email addresses and domains in the workspace. Requires the contacts:read scope. - [List contact issues](https://productlane.mintlify.dev/docs/api-v2/contacts/list-contact-issues.md): List issues this contact is linked to via customer needs on their threads. Cursor-paginated. Requires the contacts:read and issues:read scopes. - [List contact projects](https://productlane.mintlify.dev/docs/api-v2/contacts/list-contact-projects.md): List projects this contact is linked to via customer needs on their threads. Cursor-paginated. Requires the contacts:read and projects:read scopes. - [List contacts](https://productlane.mintlify.dev/docs/api-v2/contacts/list-contacts.md): List contacts in the workspace. Cursor-paginated. Requires the contacts:read scope. - [Unblock a sender](https://productlane.mintlify.dev/docs/api-v2/contacts/unblock-a-sender.md): Remove a blocked sender entry. Requires the contacts:write scope. - [Update contact](https://productlane.mintlify.dev/docs/api-v2/contacts/update-contact.md): Update a contact. Requires the contacts:write scope. - [Accept docs draft](https://productlane.mintlify.dev/docs/api-v2/docs/accept-docs-draft.md): Merge the draft. EDIT writes a new version of the article; CREATE materializes a new (unpublished) article; DELETE soft-deletes the article. Returns `superseded` instead of `accepted` when the draft no longer applies cleanly. - [Create doc article](https://productlane.mintlify.dev/docs/api-v2/docs/create-docs-article.md): Create a new docs article. The content supports markdown format including headings, bulleted lists, numbered lists, and other markdown features. Authentication is required. - [Create docs draft](https://productlane.mintlify.dev/docs/api-v2/docs/create-docs-draft.md): Propose an article change for review. `kind: edit` edits an existing article, `kind: create` proposes a new article, `kind: delete` proposes removal. - [Create doc group](https://productlane.mintlify.dev/docs/api-v2/docs/create-docs-group.md): Create a new docs group to organize articles. Authentication is required. - [Decline docs draft](https://productlane.mintlify.dev/docs/api-v2/docs/decline-docs-draft.md): Reject the draft. Keeps the row for audit but marks it as REJECTED so it stops appearing in the open queue. - [Delete doc article](https://productlane.mintlify.dev/docs/api-v2/docs/delete-docs-article.md): Delete a docs article by ID. Authentication is required. - [Delete doc group](https://productlane.mintlify.dev/docs/api-v2/docs/delete-docs-group.md): Delete a docs group by ID. Articles in the group will be ungrouped. Authentication is required. - [Get docs article](https://productlane.mintlify.dev/docs/api-v2/docs/get-docs-article.md) - [Get docs draft](https://productlane.mintlify.dev/docs/api-v2/docs/get-docs-draft.md): Fetch a single article draft by id. - [List docs articles](https://productlane.mintlify.dev/docs/api-v2/docs/list-docs-articles.md) - [List docs drafts](https://productlane.mintlify.dev/docs/api-v2/docs/list-docs-drafts.md): List article drafts (proposed edits, new articles, or deletions) awaiting review. Cursor-paginated. - [List docs groups](https://productlane.mintlify.dev/docs/api-v2/docs/list-docs-groups.md) - [Move articles to a group](https://productlane.mintlify.dev/docs/api-v2/docs/move-articles-to-a-group.md): Reassign articles to a group. Requires the docs:write scope. - [Update doc article](https://productlane.mintlify.dev/docs/api-v2/docs/update-docs-article.md): Update a docs article by ID. Authentication is required. - [Update doc group](https://productlane.mintlify.dev/docs/api-v2/docs/update-docs-group.md): Update a docs group by ID. Authentication is required. - [Errors](https://productlane.mintlify.dev/docs/api-v2/errors.md): The v2 error envelope, every code we send, and how to handle them. - [File uploads](https://productlane.mintlify.dev/docs/api-v2/files/upload-files.md): Upload images and documents to use in changelogs, help center articles, and thread attachments. - [Introduction](https://productlane.mintlify.dev/docs/api-v2/introduction.md): The Productlane v2 API at a glance. - [Create issue](https://productlane.mintlify.dev/docs/api-v2/issues/create-issue.md): Create an issue, filed in Linear first and mirrored to Productlane. Requires Linear to be connected and the issues:write scope. - [Delete issue](https://productlane.mintlify.dev/docs/api-v2/issues/delete-issue.md): Archive the issue in Linear and soft-delete it locally. Linear failures are logged but do not block the local soft-delete. Requires the issues:write scope. - [Get issue](https://productlane.mintlify.dev/docs/api-v2/issues/get-issue.md): Fetch an issue by id. Requires the issues:read scope. - [List issues](https://productlane.mintlify.dev/docs/api-v2/issues/list-issues.md): List roadmap issues in the workspace. Cursor-paginated. Requires the issues:read scope. - [List workflows](https://productlane.mintlify.dev/docs/api-v2/issues/list-workflows.md): List Linear workflow states for a team. Requires Linear to be connected and the issues:read scope. - [Update issue](https://productlane.mintlify.dev/docs/api-v2/issues/update-issue.md): Update an issue, synced to Linear. Linear sync failures are logged but do not block the local update. Requires the issues:write scope. - [MCP Server](https://productlane.mintlify.dev/docs/api-v2/mcp.md): Connect Productlane to any MCP client with a v2 API key. - [Cancel a pending invite](https://productlane.mintlify.dev/docs/api-v2/members/cancel-a-pending-invite.md): Cancel a pending workspace invite. Accepted invites cannot be cancelled; remove the resulting member instead. Requires the admin scope. - [Change a member's role](https://productlane.mintlify.dev/docs/api-v2/members/change-a-members-role.md): Change a member's role. Cannot demote the last admin and cannot change your own role. Requires the admin scope. - [Invite a member](https://productlane.mintlify.dev/docs/api-v2/members/invite-a-member.md): Create a workspace invite and send the invitation email. The API key must have been created by a workspace member because the invite is attributed to a user. Requires the admin scope. - [List members](https://productlane.mintlify.dev/docs/api-v2/members/list-members.md): List workspace members. Cursor-paginated. Requires the admin scope. - [List pending invites](https://productlane.mintlify.dev/docs/api-v2/members/list-pending-invites.md): List pending workspace invites. Cursor-paginated. Requires the admin scope. - [Remove a member](https://productlane.mintlify.dev/docs/api-v2/members/remove-a-member.md): Remove a member from the workspace. Cannot remove yourself or the last admin. Threads assigned to the removed member become unassigned. Requires the admin scope. - [Get authenticated identity](https://productlane.mintlify.dev/docs/api-v2/meta/get-authenticated-identity.md): Returns the calling key's identity, granted scopes, and the workspace's Linear team selection. Any authenticated key may call this. - [Migrating from API v1 to v2](https://productlane.mintlify.dev/docs/api-v2/meta/migration-guide.md): What changed and how to update your integration. v1 sunsets on November 20, 2026. - [Pagination](https://productlane.mintlify.dev/docs/api-v2/pagination.md): Every list endpoint uses cursor pagination with the same shape. - [Get the customer portal view for a contact](https://productlane.mintlify.dev/docs/api-v2/portal/get-the-customer-portal-view-for-a-contact.md): Returns the requests a contact sees in their support portal, looked up by email. Requires the portal:read scope. - [Get the public roadmap](https://productlane.mintlify.dev/docs/api-v2/portal/get-the-public-roadmap.md): Returns the public roadmap as the portal renders it. Requires the portal:read scope. - [Create project](https://productlane.mintlify.dev/docs/api-v2/projects/create-project.md): Create a project, synced to Linear. Requires Linear to be connected and the projects:write scope. - [Delete project](https://productlane.mintlify.dev/docs/api-v2/projects/delete-project.md): Archive the project in Linear and soft-delete it locally. Linear failures are logged but do not block the local soft-delete. Requires the projects:write scope. - [Get project](https://productlane.mintlify.dev/docs/api-v2/projects/get-project.md): Fetch a project by id. Requires the projects:read scope. - [List projects](https://productlane.mintlify.dev/docs/api-v2/projects/list-projects.md): List roadmap projects in the workspace. Cursor-paginated. Requires the projects:read scope. - [List statuses](https://productlane.mintlify.dev/docs/api-v2/projects/list-statuses.md): List Linear project statuses configured at the organization level. Requires Linear to be connected and the projects:read scope. - [Update project](https://productlane.mintlify.dev/docs/api-v2/projects/update-project.md): Update a project, synced to Linear. Linear sync failures are logged but do not block the local update. Requires the projects:write scope. - [Rate limits](https://productlane.mintlify.dev/docs/api-v2/rate-limits.md): Limits, response headers, and how to stay under them. - [Create tag](https://productlane.mintlify.dev/docs/api-v2/tags/create-tag.md): Create a thread tag. `tag_group_id` is required; fetch the workspace's groups via `GET /tags/groups`. Requires the tags:write scope. - [Create tag group](https://productlane.mintlify.dev/docs/api-v2/tags/create-tag-group.md): Create a tag group. Requires the tags:write scope. - [Delete tag](https://productlane.mintlify.dev/docs/api-v2/tags/delete-tag.md): Soft-delete a tag. The tag is removed from any threads it was applied to. Requires the tags:write scope. - [Delete tag group](https://productlane.mintlify.dev/docs/api-v2/tags/delete-tag-group.md): Soft-delete an empty tag group. Returns 409 if the group still owns any tags - move or delete those first. Requires the tags:write scope. - [Get tag](https://productlane.mintlify.dev/docs/api-v2/tags/get-tag.md): Fetch a tag by id. Requires the tags:read scope. - [Get tag group](https://productlane.mintlify.dev/docs/api-v2/tags/get-tag-group.md): Fetch a tag group by id. Requires the tags:read scope. - [List tag groups](https://productlane.mintlify.dev/docs/api-v2/tags/list-tag-groups.md): List tag groups in the workspace. Use a returned `id` as `tag_group_id` when creating or moving a tag. Requires the tags:read scope. - [List tags](https://productlane.mintlify.dev/docs/api-v2/tags/list-tags.md): List thread tags in the workspace. Cursor-paginated. Requires the tags:read scope. - [Update tag](https://productlane.mintlify.dev/docs/api-v2/tags/update-tag.md): Update a tag. Requires the tags:write scope. - [Update tag group](https://productlane.mintlify.dev/docs/api-v2/tags/update-tag-group.md): Update a tag group. Requires the tags:write scope. - [Create thread](https://productlane.mintlify.dev/docs/api-v2/threads/create-thread.md): Create a thread and upsert its contact by email. Requires the threads:write scope. - [Delete an internal comment](https://productlane.mintlify.dev/docs/api-v2/threads/delete-an-internal-comment.md): Soft-delete an internal comment. Requires the comments:write scope. - [Delete thread](https://productlane.mintlify.dev/docs/api-v2/threads/delete-thread.md): Soft-delete a thread. Requires the threads:write scope. - [Get thread](https://productlane.mintlify.dev/docs/api-v2/threads/get-thread.md): Fetch a thread by id. Use `expand` to inline messages and/or comments. Requires the threads:read scope. - [Link thread to issues or projects](https://productlane.mintlify.dev/docs/api-v2/threads/link-thread-to-an-issue-or-project.md): Link a thread to one or more issues and/or projects via Linear's customer-need pipeline. Requires Linear to be connected and the threads:write scope. - [List internal comments](https://productlane.mintlify.dev/docs/api-v2/threads/list-internal-comments.md): List internal comments on a thread. Comments are visible to teammates only. Requires the threads:read scope. - [List thread messages](https://productlane.mintlify.dev/docs/api-v2/threads/list-thread-messages.md): List the conversation on a thread, merged across all channels and sorted oldest-first by default. Requires the threads:read scope. - [List threads](https://productlane.mintlify.dev/docs/api-v2/threads/list-threads.md): List threads in the workspace. Cursor-paginated. Requires the threads:read scope. - [Post an internal comment](https://productlane.mintlify.dev/docs/api-v2/threads/post-an-internal-comment.md): Post an internal comment on a thread. Visible to teammates only. Requires the comments:write scope. - [Send a message](https://productlane.mintlify.dev/docs/api-v2/threads/send-a-message.md): Send a message on a thread. The channel (email, Slack, live chat, Microsoft Teams) is auto-detected from the thread's origin and the response includes the channel that was used. Returns 400 with code `validation_failed` when the matching integration is not configured for the workspace. Requires the… - [Update an internal comment](https://productlane.mintlify.dev/docs/api-v2/threads/update-an-internal-comment.md): Edit an internal comment. Requires the comments:write scope. - [Update thread](https://productlane.mintlify.dev/docs/api-v2/threads/update-thread.md): Update a thread. Requires the threads:write scope. - [Webhooks](https://productlane.mintlify.dev/docs/api-v2/webhooks.md): Subscribe to resource events instead of polling. HMAC-signed, retried with backoff. - [Authentication](https://productlane.mintlify.dev/docs/api/authentication.md): Learn how to authenticate with the API. - [Create changelog](https://productlane.mintlify.dev/docs/api/changelogs/create-changelog.md): Create a new changelog entry. The content supports markdown format including headings, bulleted lists, numbered lists, and other markdown features. Authentication is required. - [Delete changelog](https://productlane.mintlify.dev/docs/api/changelogs/delete-changelog.md): Delete a changelog entry by ID. Authentication is required. - [Get changelog](https://productlane.mintlify.dev/docs/api/changelogs/get-changelog.md): Get a changelog by ID. Unauthenticated requests return only published changelogs. Authenticated requests (matching workspaceId) also return unpublished changelogs. - [List changelogs](https://productlane.mintlify.dev/docs/api/changelogs/list-changelogs.md): List changelogs for a workspace by ID. Unauthenticated requests return only published changelogs from public workspaces. Authenticated requests (matching workspaceId) return all changelogs including unpublished. - [Update changelog](https://productlane.mintlify.dev/docs/api/changelogs/update-changelog.md): Update a changelog entry by ID. The content supports markdown format. Authentication is required. - [Create company](https://productlane.mintlify.dev/docs/api/companies/create-company.md): Create a new company. Authentication required. - [Delete company](https://productlane.mintlify.dev/docs/api/companies/delete-company.md): Delete a company by id. Authentication required. - [Get company](https://productlane.mintlify.dev/docs/api/companies/get-company.md): Get a company by id. Authentication is required. - [Get Linear customer options](https://productlane.mintlify.dev/docs/api/companies/get-linear-customer-options.md): Get available Linear customer statuses and tiers for your workspace. Returns null if Linear is not connected. Authentication is required. - [List companies](https://productlane.mintlify.dev/docs/api/companies/list-companies.md): List all companies. Please note that you'll need to provide a 'take' and 'skip' parameter to paginate through the results. If no parameters are provided, it will be default take the first 10 results. Authentication is required. - [Update company](https://productlane.mintlify.dev/docs/api/companies/update-company.md): Update a company by id. Authentication required. - [Create contact](https://productlane.mintlify.dev/docs/api/contacts/create-contact.md): Create a new contact for your workspace, you can create as many contacts as you want, but authentication is required - [Delete contact](https://productlane.mintlify.dev/docs/api/contacts/delete-contact.md): Delete contact by ID. You can delete only your own contacts, and authentication is required. - [Get contact](https://productlane.mintlify.dev/docs/api/contacts/get-contact.md): Get contact by ID or email. You can get only your own contacts, and authentication is required. - [List contacts](https://productlane.mintlify.dev/docs/api/contacts/get-contacts.md): List all contacts for your workspace. Filter by email (partial match) or companyId. Authentication is required. - [Update contact](https://productlane.mintlify.dev/docs/api/contacts/update-contact.md): Update contact by ID. You can update only your own contacts, and authentication is required. - [Create doc article](https://productlane.mintlify.dev/docs/api/docs/create-doc-article.md): Create a new docs article. The content supports markdown format including headings, bulleted lists, numbered lists, and other markdown features. Authentication is required. - [Create doc group](https://productlane.mintlify.dev/docs/api/docs/create-doc-group.md): Create a new docs group to organize articles. Authentication is required. - [Delete doc article](https://productlane.mintlify.dev/docs/api/docs/delete-doc-article.md): Delete a docs article by ID. Authentication is required. - [Delete doc group](https://productlane.mintlify.dev/docs/api/docs/delete-doc-group.md): Delete a docs group by ID. Articles in the group will be ungrouped. Authentication is required. - [Get doc article](https://productlane.mintlify.dev/docs/api/docs/get-doc-article.md): Get a published doc article by ID. No authorization is required. - [List doc articles](https://productlane.mintlify.dev/docs/api/docs/list-doc-articles.md): List all published doc articles for a workspace by ID. No authorization is required. - [Move articles to group](https://productlane.mintlify.dev/docs/api/docs/move-articles-to-group.md): Move one or more articles to a group. Pass null for groupId to remove articles from their current group. Authentication is required. - [Update doc article](https://productlane.mintlify.dev/docs/api/docs/update-doc-article.md): Update a docs article by ID. Authentication is required. - [Update doc group](https://productlane.mintlify.dev/docs/api/docs/update-doc-group.md): Update a docs group by ID. Authentication is required. - [Delete upvote](https://productlane.mintlify.dev/docs/api/portal/delete-upvote.md): Delete an upvote for either an issue or project - [Get issue](https://productlane.mintlify.dev/docs/api/portal/get-issue.md): Get an issue by ID. No authorization is required. - [Get project](https://productlane.mintlify.dev/docs/api/portal/get-project.md): Get a project by ID. No authorization is required. - [Get upvotes](https://productlane.mintlify.dev/docs/api/portal/get-upvotes.md): Get upvotes for an issue or a project. Authorization is required. - [List issues](https://productlane.mintlify.dev/docs/api/portal/list-issues.md): List all issues from a workspace by ID. Important: The workspace needs to have their portal/roadmap published, or the request will fail with the error 'Workspace not found'. No authorization is required. - [List projects](https://productlane.mintlify.dev/docs/api/portal/list-projects.md): List all projects from a workspace by ID. Important: The workspace needs to have their portal/roadmap published, or the request will fail with the error 'Workspace not found'. No authorization is required. - [Upvote project](https://productlane.mintlify.dev/docs/api/portal/upvote-project.md): Upvote a project or an issue by ID. No authorization is required. - [Create thread](https://productlane.mintlify.dev/docs/api/threads/create-thread.md): Create a new thread for your workspace. Authentication is required. The "text" can be HTML formatted for things like line breaks, lists, formatting and headings. - [Get thread](https://productlane.mintlify.dev/docs/api/threads/get-thread.md): Get thread by ID. Authentication is required. - [List threads](https://productlane.mintlify.dev/docs/api/threads/list-threads.md): List all threads for your workspace. Use the 'take' and 'skip' parameters to paginate through results (default: first 100). Filter by 'state', 'issueId', or 'projectId'. Authentication is required. - [Send message](https://productlane.mintlify.dev/docs/api/threads/send-message.md): Send an email or Slack message to a thread. Authentication is required. For Slack threads, channelId can be provided or will use the thread's slackChannelId if available. - [Update thread](https://productlane.mintlify.dev/docs/api/threads/update-thread.md): Update thread by ID. Authentication is required. - [Invite user](https://productlane.mintlify.dev/docs/api/users/invite-user.md): Invite a new user to your workspace. An email will be sent to the user with a link to join. Only admins can invite users. Authentication is required. - [List members](https://productlane.mintlify.dev/docs/api/users/list-members.md): Get all members of your workspace. Returns a list of memberships with user information, sorted by role (admins first). Authentication is required. - [Update user role](https://productlane.mintlify.dev/docs/api/users/update-user-role.md): Update a user's role in your workspace. Valid roles are ADMIN, USER, and VIEWER. Only admins can change roles. Cannot demote the last admin. You cannot change your own role. Authentication is required. - [Get workspace](https://productlane.mintlify.dev/docs/api/workspaces/get-workspace.md): Fetch any given workspace with an ID. No authentication is required. ## OpenAPI Specs - [openapi-v2](https://productlane.mintlify.dev/docs/openapi-v2.json) - [openapi](https://productlane.mintlify.dev/docs/openapi.json)