Productlane
BUSINESS · CRM & SUPPORT
Threads, contacts, roadmap projects, and changelogs in the workspace they connected.
Acts as the person, not as itself
Each user connects their own account. Every call carries both identities — the agent and the person it is acting for — so the agent can never reach past what that individual can already do.
Credentials never touch the agent
Tokens live in the vault and attach server-side at call time. The agent holds a session, not a secret, and revoking access does not mean rotating a key.
Every call on the record
Who asked, which agent acted, which action ran, and the verdict that let it through — one audit trail across every integration, not one per vendor.
What an agent can do
Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.
productlane_delete_changelog_tags_by_idWRITEDelete a changelog tag. DELETE /changelog-tags/{id}. 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.
productlane_delete_changelogs_by_idWRITEDelete changelog. DELETE /changelogs/{id}. Soft-delete a changelog. Requires the changelogs:write scope.
productlane_delete_companies_by_idWRITEDelete company. DELETE /companies/{id}. Soft-delete a company. Linear customer is deleted asynchronously and threads that lost the company link are reindexed. Requires the companies:write scope.
productlane_delete_contacts_blocked_senders_by_idWRITEUnblock a sender. DELETE /contacts/blocked-senders/{id}. Remove a blocked sender entry. Requires the contacts:write scope.
productlane_delete_contacts_by_idWRITEDelete contact. DELETE /contacts/{id}. Soft-delete a contact. Requires the contacts:write scope.
productlane_delete_contacts_by_id_companies_by_company_idWRITERemove a contact from a company. DELETE /contacts/{id}/companies/{company_id}. Remove one of the contact's company memberships. When it was the primary, another membership takes over. Requires the contacts:write scope.
productlane_delete_docs_articles_by_idWRITEDelete docs article. DELETE /docs/articles/{id}. Soft-delete a help-center article. Requires the docs:write scope.
productlane_delete_docs_groups_by_idWRITEDelete docs group. DELETE /docs/groups/{id}. Hard-delete a help-center group. Articles in the group are detached, not deleted. Requires the docs:write scope.
productlane_delete_integrations_by_nameWRITEDisconnect an integration. DELETE /integrations/{name}. REQUIRES A FULL-ACCESS API KEY: Productlane never grants the admin scope over OAuth, so an OAuth connection is refused. Drop the stored credential for one integration. Nothing changes on the other side, so reconnecting later restores the same workspace. Requires the admin scope.
productlane_delete_issues_by_idWRITEDelete issue. DELETE /issues/{id}. 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.
productlane_delete_members_by_user_idWRITERemove a member. DELETE /members/{user_id}. REQUIRES A FULL-ACCESS API KEY: Productlane never grants the admin scope over OAuth, so an OAuth connection is refused. 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.
productlane_delete_members_invites_by_idWRITECancel a pending invite. DELETE /members/invites/{id}. REQUIRES A FULL-ACCESS API KEY: Productlane never grants the admin scope over OAuth, so an OAuth connection is refused. Cancel a pending workspace invite. Accepted invites cannot be cancelled; remove the resulting member instead. Requires the admin scope.
productlane_delete_projects_by_idWRITEDelete project. DELETE /projects/{id}. 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.
productlane_delete_settings_allowed_email_domains_by_idWRITEDelete allowed email domain. DELETE /settings/allowed-email-domains/{id}. REQUIRES A FULL-ACCESS API KEY: Productlane never grants the admin scope over OAuth, so an OAuth connection is refused. Remove a domain from the workspace's join list. People with that email domain can no longer join on their own. Requires the admin scope.
productlane_delete_settings_custom_domainWRITERemove the custom domain. DELETE /settings/custom-domain. REQUIRES A FULL-ACCESS API KEY: Productlane never grants the admin scope over OAuth, so an OAuth connection is refused. Release the workspace's custom domain. The portal returns to its productlane.com address. Needs the Starter plan and the admin scope.
productlane_delete_settings_webhooks_by_idWRITEDelete webhook. DELETE /settings/webhooks/{id}. REQUIRES A FULL-ACCESS API KEY: Productlane never grants the admin scope over OAuth, so an OAuth connection is refused. Delete a webhook subscription. Deliveries stop immediately. Requires the admin scope.
productlane_delete_snippets_by_idWRITEDelete snippet. DELETE /snippets/{id}. Soft-delete a snippet. Requires the Pro plan and the snippets:write scope.
productlane_delete_tags_by_idWRITEDelete tag. DELETE /tags/{id}. Soft-delete a tag. The tag is removed from any threads it was applied to. Requires the tags:write scope.
productlane_delete_tags_groups_by_idWRITEDelete tag group. DELETE /tags/groups/{id}. 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.
productlane_delete_threads_by_idWRITEDelete thread. DELETE /threads/{id}. Soft-delete a thread. To remove many threads, call `/threads/bulk-delete` once instead of looping here. Requires the threads:write scope.
productlane_delete_threads_by_thread_id_comments_by_comment_idWRITEDelete an internal comment. DELETE /threads/{thread_id}/comments/{comment_id}. Soft-delete an internal comment. Requires the comments:write scope.
productlane_get_billing_invoicesREADList invoices. GET /billing/invoices. REQUIRES A FULL-ACCESS API KEY: Productlane never grants the admin scope over OAuth, so an OAuth connection is refused. List recent invoices, newest first, with links to the hosted copies. Requires the admin scope.
productlane_get_billing_subscriptionREADGet subscription. GET /billing/subscription. REQUIRES A FULL-ACCESS API KEY: Productlane never grants the admin scope over OAuth, so an OAuth connection is refused. Report the workspace's plan, subscription status, seat count, and renewal date. Requires the admin scope.
productlane_get_changelog_tagsREADList changelog tags. GET /changelog-tags. List tags that can be attached to changelogs. Requires the changelogs:read scope.
productlane_get_changelogsREADList changelogs. GET /changelogs. List changelogs in the workspace. Cursor-paginated. Requires the changelogs:read scope.
productlane_get_changelogs_by_idREADGet changelog. GET /changelogs/{id}. Fetch a changelog by id. Requires the changelogs:read scope.
productlane_get_coding_agent_runsREADList coding agent runs. GET /coding-agent/runs. List coding agent runs, newest first. Filter to one issue with issue_id.
productlane_get_coding_agent_runs_by_idREADGet coding agent run. GET /coding-agent/runs/{id}. Fetch one coding agent run, including its status, branch, and pull request.
productlane_get_companiesREADList companies. GET /companies. List companies in the workspace. Cursor-paginated. Requires the companies:read scope.
productlane_get_companies_by_idREADGet company. GET /companies/{id}. Fetch a company by id. Requires the companies:read scope.
productlane_get_companies_linear_optionsREADGet Linear customer options. GET /companies/linear-options. Returns the Linear customer statuses, tiers, and team members eligible to be a company owner. Sub-fields are `null` when Linear isn't connected or no team can be resolved. Requires the companies:read scope.
productlane_get_contactsREADList contacts. GET /contacts. List contacts in the workspace. Cursor-paginated. Requires the contacts:read scope.
productlane_get_contacts_blocked_sendersREADList blocked senders. GET /contacts/blocked-senders. List blocked email addresses and domains in the workspace. Requires the contacts:read scope.
productlane_get_contacts_by_idREADGet contact. GET /contacts/{id}. Fetch a contact by id. Requires the contacts:read scope.
productlane_get_contacts_by_id_companiesREADList contact companies. GET /contacts/{id}/companies. List every company this contact belongs to, primary first. Requires the contacts:read and companies:read scopes.
productlane_get_contacts_by_id_issuesREADList contact issues. GET /contacts/{id}/issues. List issues this contact is linked to via customer needs on their threads. Cursor-paginated. Requires the contacts:read and issues:read scopes.
productlane_get_contacts_by_id_projectsREADList contact projects. GET /contacts/{id}/projects. List projects this contact is linked to via customer needs on their threads. Cursor-paginated. Requires the contacts:read and projects:read scopes.
productlane_get_docs_articlesREADList docs articles. GET /docs/articles. List help-center articles in the workspace. Pass sort=order to read them in the order the docs site renders. Cursor-paginated. Requires the docs:read scope.
productlane_get_docs_articles_by_idREADGet docs article. GET /docs/articles/{id}. Fetch a help-center article by id. Requires the docs:read scope.
productlane_get_docs_draftsREADList docs drafts. GET /docs/drafts. List article drafts (proposed edits, new articles, or deletions) awaiting review. Cursor-paginated.
productlane_get_docs_drafts_by_idREADGet docs draft. GET /docs/drafts/{id}. Fetch a single article draft by id.
productlane_get_docs_groupsREADList docs groups. GET /docs/groups. List help-center groups. Filter by portal with portal_instance_id. Requires the docs:read scope.
productlane_get_docs_groups_by_idREADGet docs group. GET /docs/groups/{id}. Fetch a help-center group by id. Requires the docs:read scope.
productlane_get_integrations_cursorREADGet Cursor Cloud settings. GET /integrations/cursor. REQUIRES A FULL-ACCESS API KEY: Productlane never grants the admin scope over OAuth, so an OAuth connection is refused. Fetch the repository, model, and instructions the coding agent runs with. The API key is never returned. Requires the admin scope.
productlane_get_integrations_githubREADGet GitHub connection. GET /integrations/github. REQUIRES A FULL-ACCESS API KEY: Productlane never grants the admin scope over OAuth, so an OAuth connection is refused. Report whether the GitHub app is installed and list the repositories it can reach. Requires the admin scope.
productlane_get_integrations_linearREADGet Linear connection. GET /integrations/linear. Report whether Linear is connected and whether its customers feature is enabled.
productlane_get_integrations_linear_membersREADList Linear team members. GET /integrations/linear/members. List the members of one Linear team. Use an id as assignee_id when creating an issue.
productlane_get_integrations_linear_teamsREADList Linear teams. GET /integrations/linear/teams. List the Linear teams this workspace can file into. Use an id as team_id when creating an issue.
productlane_get_issuesREADList issues. GET /issues. List roadmap issues in the workspace. Cursor-paginated. Requires the issues:read scope.
productlane_get_issues_by_idREADGet issue. GET /issues/{id}. Fetch an issue by id. Requires the issues:read scope.
productlane_get_issues_workflow_statesREADList workflows. GET /issues/workflow-states. List Linear workflow states for a team. Requires Linear to be connected and the issues:read scope.
productlane_get_meREADGet authenticated identity. GET /me. Returns the calling key's identity, granted scopes, and the workspace's Linear team selection. Any authenticated key may call this.
productlane_get_membersREADList members. GET /members. REQUIRES A FULL-ACCESS API KEY: Productlane never grants the admin scope over OAuth, so an OAuth connection is refused. List workspace members. Cursor-paginated. Requires the admin scope.
productlane_get_members_invitesREADList pending invites. GET /members/invites. REQUIRES A FULL-ACCESS API KEY: Productlane never grants the admin scope over OAuth, so an OAuth connection is refused. List pending workspace invites. Cursor-paginated. Requires the admin scope.
productlane_get_portal_customer_portalREADGet the customer portal view for a contact. GET /portal/customer-portal. Returns the requests a contact sees in their support portal, looked up by email. Requires the Scale plan and the portal:read scope.
productlane_get_portal_instancesREADList portal instances. GET /portal/instances. List the workspace's portal instances. The Main (Root) portal is implicit and represented elsewhere as a null portal_instance_id. Requires the portal:read scope.
productlane_get_portal_roadmapREADGet the public roadmap. GET /portal/roadmap. Returns the public roadmap as the portal renders it. Requires the portal:read scope.
productlane_get_projectsREADList projects. GET /projects. List roadmap projects in the workspace. Cursor-paginated. Requires the projects:read scope.
productlane_get_projects_by_idREADGet project. GET /projects/{id}. Fetch a project by id. Requires the projects:read scope.
productlane_get_projects_statusesREADList statuses. GET /projects/statuses. List Linear project statuses configured at the organization level. Requires Linear to be connected and the projects:read scope.
productlane_get_reporting_ai_involvementREADGet AI participation and resolution rate. GET /reporting/ai-involvement. How many conversations the AI answered, and how many closed without a human reply.
productlane_get_reporting_ai_spendREADGet AI spend and limits. GET /reporting/ai-spend. REQUIRES A FULL-ACCESS API KEY: Productlane never grants the admin scope over OAuth, so an OAuth connection is refused. Month-to-date AI spend, the monthly cap, and AI resolution usage against its limit. Requires the admin scope.
productlane_get_reporting_conversationsREADGet conversation volume. GET /reporting/conversations. Conversation counts for a date range, split by state, reply status, and origin. Defaults to the last 30 days.
productlane_get_reporting_response_timesREADGet response and resolution times. GET /reporting/response-times. Average, median, and 90th percentile for first reply and resolution. Reads at most 5000 threads in the range.
productlane_get_reporting_tagsREADGet conversation counts by tag. GET /reporting/tags. Thread count per tag for a date range, ordered by volume.
productlane_get_reporting_teamREADGet per-member conversation counts. GET /reporting/team. Assigned and resolved conversation counts per workspace member for a date range.
productlane_get_settings_ai_agentREADGet AI agent settings. GET /settings/ai-agent. REQUIRES A FULL-ACCESS API KEY: Productlane never grants the admin scope over OAuth, so an OAuth connection is refused. Fetch the AI agent's configuration, including where it is deployed and its draft and routine settings. Requires the admin scope.
productlane_get_settings_allowed_email_domainsREADList allowed email domains. GET /settings/allowed-email-domains. REQUIRES A FULL-ACCESS API KEY: Productlane never grants the admin scope over OAuth, so an OAuth connection is refused. List the domains whose users can join the workspace, with their verification state. Requires the admin scope.
productlane_get_settings_api_keysREADList API keys. GET /settings/api-keys. REQUIRES A FULL-ACCESS API KEY: Productlane never grants the admin scope over OAuth, so an OAuth connection is refused. List the workspace's API keys with their scopes and usage. Only the four-character preview is returned, never the key. Requires the admin scope.
productlane_get_settings_email_addressesREADList email addresses. GET /settings/email-addresses. REQUIRES A FULL-ACCESS API KEY: Productlane never grants the admin scope over OAuth, so an OAuth connection is refused. List the workspace's sending addresses with their auto-reply and DNS state. Requires the admin scope.
productlane_get_settings_integrationsREADList integration connections. GET /settings/integrations. REQUIRES A FULL-ACCESS API KEY: Productlane never grants the admin scope over OAuth, so an OAuth connection is refused. Report which third-party integrations are connected. Credentials are never returned. Requires the admin scope.
productlane_get_settings_ssoREADGet SSO settings. GET /settings/sso. REQUIRES A FULL-ACCESS API KEY: Productlane never grants the admin scope over OAuth, so an OAuth connection is refused. Fetch the SSO configuration and which public surfaces it gates. The signing secret is never returned. Requires the admin scope.
productlane_get_settings_webhooksREADList webhooks. GET /settings/webhooks. REQUIRES A FULL-ACCESS API KEY: Productlane never grants the admin scope over OAuth, so an OAuth connection is refused. List webhook subscriptions with their URLs and event patterns. Signing secrets are never returned. Requires the admin scope.
productlane_get_settings_widgetREADGet widget settings. GET /settings/widget. REQUIRES A FULL-ACCESS API KEY: Productlane never grants the admin scope over OAuth, so an OAuth connection is refused. Fetch the embeddable widget's configuration and which sections it shows. Requires the admin scope.
productlane_get_settings_workspaceREADGet workspace settings. GET /settings/workspace. REQUIRES A FULL-ACCESS API KEY: Productlane never grants the admin scope over OAuth, so an OAuth connection is refused. Fetch workspace-level configuration: name, domains, SLA, timezone, and inbound email. Requires the admin scope.
productlane_get_snippetsREADList snippets. GET /snippets. List reply snippets in the workspace. Cursor-paginated. Requires the Pro plan and the snippets:read scope.
productlane_get_snippets_by_idREADGet snippet. GET /snippets/{id}. Fetch a snippet by id. Requires the Pro plan and the snippets:read scope.
productlane_get_snippets_foldersREADList snippet folders. GET /snippets/folders. List snippet folders in the workspace. Use a returned `id` as `folder_id` when creating or moving a snippet. Requires the Pro plan and the snippets:read scope.
productlane_get_tagsREADList tags. GET /tags. List thread tags in the workspace. Cursor-paginated. Requires the tags:read scope.
productlane_get_tags_by_idREADGet tag. GET /tags/{id}. Fetch a tag by id. Requires the tags:read scope.
productlane_get_tags_groupsREADList tag groups. GET /tags/groups. 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.
productlane_get_tags_groups_by_idREADGet tag group. GET /tags/groups/{id}. Fetch a tag group by id. Requires the tags:read scope.
productlane_get_threadsREADList threads. GET /threads. List threads in the workspace. Cursor-paginated. Requires the threads:read scope.
productlane_get_threads_by_idREADGet thread. GET /threads/{id}. Fetch a thread by id. Use `expand` to inline messages and/or comments. Requires the threads:read scope.
productlane_get_threads_by_thread_id_commentsREADList internal comments. GET /threads/{thread_id}/comments. List internal comments on a thread. Comments are visible to teammates only. Requires the threads:read scope.
productlane_get_threads_by_thread_id_messagesREADList thread messages. GET /threads/{thread_id}/messages. List the conversation on a thread, merged across all channels and sorted oldest-first by default. Requires the threads:read scope.
productlane_patch_changelog_tags_by_idWRITEUpdate a changelog tag. PATCH /changelog-tags/{id}. 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.
productlane_patch_changelogs_by_idWRITEUpdate changelog. PATCH /changelogs/{id}. Update a changelog. `content` replaces the whole body, so read the current one and edit that rather than sending a body you assembled earlier. Pass `language` to upsert a translation row; non-translatable fields always apply to the base. Requires the changelogs:write scope.
productlane_patch_companies_by_idWRITEUpdate company. PATCH /companies/{id}. Update a company. Linear identity fields are synced asynchronously. Requires the companies:write scope.
productlane_patch_contacts_by_idWRITEUpdate contact. PATCH /contacts/{id}. Update a contact. Requires the contacts:write scope.
productlane_patch_docs_articles_by_idWRITEUpdate docs article. PATCH /docs/articles/{id}. Update a help-center article. `content` replaces the whole body and is rejected when it leaves out an image the article still has. Pass `language` to upsert a translation row; non-translatable fields always apply to the base. Requires the docs:write scope.
productlane_patch_docs_groups_by_idWRITEUpdate docs group. PATCH /docs/groups/{id}. Update a help-center group. Requires the docs:write scope.
productlane_patch_integrations_cursorWRITEUpdate Cursor Cloud settings. PATCH /integrations/cursor. REQUIRES A FULL-ACCESS API KEY: Productlane never grants the admin scope over OAuth, so an OAuth connection is refused. Set the repository, model, or standing instructions for the coding agent. Requires the admin scope.
productlane_patch_issues_by_idWRITEUpdate issue. PATCH /issues/{id}. Update an issue, synced to Linear. Linear sync failures are logged but do not block the local update. Requires the issues:write scope.
productlane_patch_members_by_user_idWRITEChange a member's role. PATCH /members/{user_id}. REQUIRES A FULL-ACCESS API KEY: Productlane never grants the admin scope over OAuth, so an OAuth connection is refused. Change a member's role. Cannot demote the last admin and cannot change your own role. Requires the admin scope.
productlane_patch_projects_by_idWRITEUpdate project. PATCH /projects/{id}. Update a project, synced to Linear. Linear sync failures are logged but do not block the local update. Requires the projects:write scope.
productlane_patch_settings_ai_agentWRITEUpdate AI agent settings. PATCH /settings/ai-agent. REQUIRES A FULL-ACCESS API KEY: Productlane never grants the admin scope over OAuth, so an OAuth connection is refused. Update the agent's drafts, routines, and deployment surfaces. Enabling a surface makes the agent answer customers there. Instructions, prompts, and the auto-reply switch are read-only here. Requires the admin scope.
productlane_patch_settings_email_addresses_by_idWRITEUpdate email address settings. PATCH /settings/email-addresses/{id}. REQUIRES A FULL-ACCESS API KEY: Productlane never grants the admin scope over OAuth, so an OAuth connection is refused. Update an address's sender names, auto-reply, and forwarding behavior. Only the fields you send change. Requires the admin scope.
productlane_patch_settings_ssoWRITEUpdate SSO settings. PATCH /settings/sso. REQUIRES A FULL-ACCESS API KEY: Productlane never grants the admin scope over OAuth, so an OAuth connection is refused. Update the SSO token endpoint and which public surfaces it gates. Needs the Scale plan and the admin scope.
productlane_patch_settings_webhooks_by_idWRITEUpdate webhook. PATCH /settings/webhooks/{id}. REQUIRES A FULL-ACCESS API KEY: Productlane never grants the admin scope over OAuth, so an OAuth connection is refused. Update a webhook's label, url, events, or active state. Setting active to true also clears an automatic disable. Requires the admin scope.
productlane_patch_settings_widgetWRITEUpdate widget settings. PATCH /settings/widget. REQUIRES A FULL-ACCESS API KEY: Productlane never grants the admin scope over OAuth, so an OAuth connection is refused. Update the widget's appearance and which sections it shows to customers. Requires the admin scope.
productlane_patch_settings_workspaceWRITEUpdate workspace settings. PATCH /settings/workspace. REQUIRES A FULL-ACCESS API KEY: Productlane never grants the admin scope over OAuth, so an OAuth connection is refused. Update workspace name, logo, timezone, and SLA configuration. Only the fields you send change. Requires the admin scope.
productlane_patch_snippets_by_idWRITEUpdate snippet. PATCH /snippets/{id}. Update a snippet. Requires the Pro plan and the snippets:write scope.
productlane_patch_tags_by_idWRITEUpdate tag. PATCH /tags/{id}. Update a tag. Requires the tags:write scope.
productlane_patch_tags_groups_by_idWRITEUpdate tag group. PATCH /tags/groups/{id}. Update a tag group. Requires the tags:write scope.
productlane_patch_threads_by_idWRITEUpdate thread. PATCH /threads/{id}. Update a thread. To patch many threads, call `/threads/bulk-update` once instead of looping here. Requires the threads:write scope.
productlane_patch_threads_by_thread_id_comments_by_comment_idWRITEUpdate an internal comment. PATCH /threads/{thread_id}/comments/{comment_id}. Edit an internal comment. Requires the comments:write scope.
productlane_post_billing_cancelWRITECancel the subscription. POST /billing/cancel. REQUIRES A FULL-ACCESS API KEY: Productlane never grants the admin scope over OAuth, so an OAuth connection is refused. Cancel at the end of the paid period; access continues until then. Startup program contracts cannot cancel this way. Requires the admin scope.
productlane_post_billing_resumeWRITEResume a cancelling subscription. POST /billing/resume. REQUIRES A FULL-ACCESS API KEY: Productlane never grants the admin scope over OAuth, so an OAuth connection is refused. Clear a pending cancellation so the subscription renews as normal. Requires the admin scope.
productlane_post_changelog_tagsWRITECreate a changelog tag. POST /changelog-tags. 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.
productlane_post_changelogsWRITECreate changelog. POST /changelogs. Create a changelog. Pass `language` to create a translation row instead of populating the base row. Requires the changelogs:write scope.
productlane_post_changelogs_by_id_broadcastWRITESend a changelog broadcast. POST /changelogs/{id}/broadcast. 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 never toggles `published` - use PATCH /changelogs/{id} for that. Requires the Pro plan or higher and the changelogs:write scope.
productlane_post_changelogs_by_id_translateWRITETranslate a changelog. POST /changelogs/{id}/translate. Queue an AI translation of a changelog into one language. Counts against the workspace's AI budget.
productlane_post_coding_agent_runsWRITEStart a coding agent run. POST /coding-agent/runs. Hand an issue to the coding agent, which writes code and opens a pull request. Requires Cursor Cloud connected with a repository.
productlane_post_coding_agent_runs_by_id_follow_upWRITESend a follow-up to a coding agent run. POST /coding-agent/runs/{id}/follow-up. Send more instructions to a run that is still working.
productlane_post_coding_agent_runs_by_id_stopWRITEStop a coding agent run. POST /coding-agent/runs/{id}/stop. Stop a run that is still working. Any branch it already pushed stays.
productlane_post_companiesWRITECreate company. POST /companies. Create a company. Linear customer is provisioned asynchronously once a domain is set. Requires the companies:write scope.
productlane_post_companies_by_id_mergeWRITEMerge a company into another. POST /companies/{id}/merge. 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.
productlane_post_contactsWRITECreate contact. POST /contacts. Create a contact. Requires the contacts:write scope.
productlane_post_contacts_blocked_sendersWRITEBlock a sender. POST /contacts/blocked-senders. 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.
productlane_post_contacts_by_id_companiesWRITEAdd a contact to a company. POST /contacts/{id}/companies. Add a company to the contact's memberships. Idempotent, and becomes the primary when the contact has none. Requires the contacts:write scope.
productlane_post_docs_articlesWRITECreate docs article. POST /docs/articles. Create a help-center article. Pass `language` to create a translation row instead of populating the base. Requires the docs:write scope.
productlane_post_docs_articles_by_id_translateWRITETranslate a help center article. POST /docs/articles/{id}/translate. Queue an AI translation of an article into one language. The translated row appears when the job finishes. Counts against the workspace's AI budget.
productlane_post_docs_articles_moveWRITEMove articles to a group. POST /docs/articles/move. Reassign articles to a group. Requires the docs:write scope.
productlane_post_docs_draftsWRITECreate docs draft. POST /docs/drafts. Propose an article change for review. `kind: edit` edits an existing article, `kind: create` proposes a new article, `kind: delete` proposes removal.
productlane_post_docs_drafts_by_id_acceptWRITEAccept docs draft. POST /docs/drafts/{id}/accept. 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.
productlane_post_docs_drafts_by_id_declineWRITEDecline docs draft. POST /docs/drafts/{id}/decline. Reject the draft. Keeps the row for audit but marks it as REJECTED so it stops appearing in the open queue.
productlane_post_docs_groupsWRITECreate docs group. POST /docs/groups. Create a help-center group. Requires the docs:write scope.
productlane_post_files_importWRITEImport a file. POST /files/import. Store a file from a public URL or from inline base64 and return its CDN URL. The JSON alternative to the multipart POST /files upload.
productlane_post_issuesWRITECreate issue. POST /issues. Create an issue, filed in Linear first and mirrored to Productlane. Requires Linear to be connected and the issues:write scope.
productlane_post_members_invitesWRITEInvite a member. POST /members/invites. REQUIRES A FULL-ACCESS API KEY: Productlane never grants the admin scope over OAuth, so an OAuth connection is refused. 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.
productlane_post_projectsWRITECreate project. POST /projects. Create a project, synced to Linear. Requires Linear to be connected and the projects:write scope.
productlane_post_settings_api_keysWRITECreate API key. POST /settings/api-keys. REQUIRES A FULL-ACCESS API KEY: Productlane never grants the admin scope over OAuth, so an OAuth connection is refused. Mint a new API key with the scopes you name. The key itself is returned once and is never retrievable again. Requires the admin scope.
productlane_post_settings_api_keys_by_id_revokeWRITERevoke API key. POST /settings/api-keys/{id}/revoke. REQUIRES A FULL-ACCESS API KEY: Productlane never grants the admin scope over OAuth, so an OAuth connection is refused. Revoke an API key. It stops authenticating immediately. A key cannot revoke itself. Requires the admin scope.
productlane_post_settings_sso_rotate_secretWRITERotate the SSO secret. POST /settings/sso/rotate-secret. REQUIRES A FULL-ACCESS API KEY: Productlane never grants the admin scope over OAuth, so an OAuth connection is refused. Issue a new SSO signing secret. The old one stops verifying at once, so update your identity provider first. Returned once. Needs the Scale plan and the admin scope.
productlane_post_settings_webhooks_by_id_rotate_secretWRITERotate webhook signing secret. POST /settings/webhooks/{id}/rotate-secret. REQUIRES A FULL-ACCESS API KEY: Productlane never grants the admin scope over OAuth, so an OAuth connection is refused. Issue a new signing secret for a webhook. The old secret stops verifying at once, so update your receiver first. The new secret is returned once. Requires the admin scope.
productlane_post_snippetsWRITECreate snippet. POST /snippets. Create a reply snippet. Requires the Pro plan and the snippets:write scope.
productlane_post_tagsWRITECreate tag. POST /tags. Create a thread tag. `tag_group_id` is required; fetch the workspace's groups via `GET /tags/groups`. Requires the tags:write scope.
productlane_post_tags_groupsWRITECreate tag group. POST /tags/groups. Create a tag group. Requires the tags:write scope.
productlane_post_threadsWRITECreate thread. POST /threads. Create a thread and upsert its contact by email. Requires the threads:write scope.
productlane_post_threads_bulk_deleteWRITEDelete threads in bulk. POST /threads/bulk-delete. Soft-delete up to 100 threads. The batch counts as a single write against the rate limit and reports per-thread rejects in `failed`. Requires the threads:write scope.
productlane_post_threads_bulk_updateWRITEUpdate threads in bulk. POST /threads/bulk-update. Apply one patch to up to 100 threads. The batch counts as a single write against the rate limit and reports per-thread rejects in `failed`. Requires the threads:write scope.
productlane_post_threads_by_thread_id_commentsWRITEPost an internal comment. POST /threads/{thread_id}/comments. Post an internal comment on a thread. Visible to teammates only. Requires the comments:write scope.
productlane_post_threads_by_thread_id_customer_needsWRITELink thread to issues or projects. POST /threads/{thread_id}/customer-needs. 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.
productlane_post_threads_by_thread_id_messagesWRITESend a message. POST /threads/{thread_id}/messages. 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 messages:write scope; Slack replies need the Pro plan and Teams replies the Scale plan.
productlane_put_settings_custom_domainWRITESet the custom domain. PUT /settings/custom-domain. REQUIRES A FULL-ACCESS API KEY: Productlane never grants the admin scope over OAuth, so an OAuth connection is refused. Point a domain you own at this workspace's portal and help center. A workspace can hold one custom domain; contact support to change it later. Needs the Starter plan and the admin scope.
Often connected alongside
Put Productlane behind one governed endpoint.
Same permissions, same audit trail, whatever else you connect next.