APIThreads
List threads
List threads in the workspace. Cursor-paginated. Requires the threads:read scope.
GET
/threadscurl -X GET "https://productlane.com/api/v2/threads" \
-H "Authorization: Bearer $PRODUCTLANE_API_KEY"Authorization
AuthorizationstringheaderrequiredBearer authentication header of the form
Bearer <token>, where<token>is your auth token.
Parameters
limitintegerquerycursorstringquerystatusenum<string>queryOne of:opensnoozeddonetabenum<string>queryInbox tab.
myandneeds-responserequire an API key with an associated user.One of:opennewneeds-responsemysnoozeddoneassignee_idstringquerycontact_idstringquerycompany_idstringquerytag_idstringqueryComma-separated tag ids; matches threads with at least one.
pain_levelenum<string>queryOne of:UNKNOWNLOWMEDIUMHIGHoriginenum<string>queryPortal and roadmap upvotes arrive as
upvotethreads; pair it withproject_idorissue_idto export the upvotes for one item.One of:in_appportalsupport_portalemailslackslack_connectintercomintercom_attachmentzendeskzendesk_attachmentfront_attachmentzapierhubspotplainapilive_chatai_chatcalendarwidgetteamslinearupvotecustomissue_idstringqueryMatches customer needs and portal upvotes on the issue.
project_idstringqueryMatches customer needs and portal upvotes on the project.
external_idstringqueryMatches one of the thread's own external_ids. A bare id also matches a namespaced one with the same tail.
numberintegerqueryTicket number, as shown to customers without the
#.created_afterstring<date-time>querycreated_beforestring<date-time>queryupdated_afterstring<date-time>queryupdated_beforestring<date-time>query
Response
application/json
Successful response
dataobject[]requiredpageobjectrequired
{
"data": [
{
"id": "string",
"number": 0,
"created_at": "string",
"updated_at": "string",
"title": "string",
"text": "string",
"pain_level": "UNKNOWN",
"origin": "string",
"custom_channel": "string",
"status": "open",
"tab": "open",
"snoozed_until": "string",
"last_inbound_message_at": "string",
"last_outbound_message_at": "string",
"last_state_change_at": "string",
"is_read": true,
"contact": {
"id": "string",
"email": "string",
"name": "string",
"image_url": "string",
"company_id": "string",
"is_subscribed": true,
"external_ids": [
"string"
],
"integration_ids": {
"intercom": "string",
"front": "string",
"zendesk": "string",
"hubspot": "string",
"plain": "string",
"productboard": "string",
"slack_channel": "string"
},
"created_at": "string",
"updated_at": "string"
},
"company": {
"id": "string",
"name": "string",
"logo_url": "string",
"domains": [
"string"
],
"size": 0,
"revenue": 0,
"status_id": "string",
"status_name": "string",
"tier_id": "string",
"tier_name": "string",
"owner": {
"id": "string",
"name": "string",
"avatar_url": "string"
},
"external_ids": [
"string"
],
"integration_ids": {
"intercom": "string",
"front": "string",
"zendesk": "string",
"hubspot": "string",
"plain": "string",
"productboard": "string",
"slack_channel": "string"
},
"created_at": "string",
"updated_at": "string"
},
"assignee": {
"id": "string",
"name": "string",
"email": "string",
"image_url": "string"
},
"reporter": {
"id": "string",
"name": "string",
"email": "string",
"image_url": "string"
},
"tags": [
{
"id": "string",
"name": "string",
"color": "string",
"icon": "string",
"tag_group_id": "string",
"created_at": "string",
"updated_at": "string"
}
],
"customer_needs": [
{
"id": "string",
"thread_id": "string",
"project_id": "string",
"issue_id": "string",
"priority": 0,
"created_at": "string",
"updated_at": "string"
}
],
"external_ids": [
"string"
],
"integration_ids": {
"intercom": "string",
"front": "string",
"zendesk": "string",
"hubspot": "string",
"plain": "string",
"productboard": "string",
"slack_channel": "string"
},
"ai_draft_html": "string",
"ai_draft_sources": [
null
],
"ai_draft_generated_at": "string",
"ai_draft_started_at": "string",
"ai_draft_error_at": "string"
}
],
"page": {
"cursor": "string",
"has_more": true,
"limit": 0
}
}