curl --request GET \
--url https://productlane.com/api/v2/threads/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://productlane.com/api/v2/threads/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://productlane.com/api/v2/threads/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://productlane.com/api/v2/threads/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://productlane.com/api/v2/threads/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://productlane.com/api/v2/threads/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://productlane.com/api/v2/threads/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "<string>",
"created_at": "<string>",
"updated_at": "<string>",
"title": "<string>",
"text": "<string>",
"origin": "<string>",
"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": 123,
"revenue": 123,
"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": 123,
"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": "<array>",
"ai_draft_generated_at": "<string>",
"ai_draft_started_at": "<string>",
"ai_draft_error_at": "<string>",
"messages": [
{
"id": "<string>",
"type": "email",
"created_at": "<string>",
"subject": "<string>",
"to": "<array>",
"cc": "<array>",
"bcc": "<array>",
"text": "<string>",
"html": "<string>",
"attachments": "<array>",
"thread_id": "<string>",
"user_id": "<string>",
"from": "<unknown>"
}
],
"comments": [
{
"id": "<string>",
"created_at": "<string>",
"updated_at": "<string>",
"content": "<string>",
"attachments": "<array>",
"thread_id": "<string>",
"user_id": "<string>"
}
]
}{
"message": "<string>",
"code": "<string>",
"issues": [
{
"message": "<string>"
}
]
}Get thread
Fetch a thread by id. Use expand to inline messages and/or comments. Requires the threads:read scope.
curl --request GET \
--url https://productlane.com/api/v2/threads/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://productlane.com/api/v2/threads/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://productlane.com/api/v2/threads/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://productlane.com/api/v2/threads/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://productlane.com/api/v2/threads/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://productlane.com/api/v2/threads/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://productlane.com/api/v2/threads/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "<string>",
"created_at": "<string>",
"updated_at": "<string>",
"title": "<string>",
"text": "<string>",
"origin": "<string>",
"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": 123,
"revenue": 123,
"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": 123,
"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": "<array>",
"ai_draft_generated_at": "<string>",
"ai_draft_started_at": "<string>",
"ai_draft_error_at": "<string>",
"messages": [
{
"id": "<string>",
"type": "email",
"created_at": "<string>",
"subject": "<string>",
"to": "<array>",
"cc": "<array>",
"bcc": "<array>",
"text": "<string>",
"html": "<string>",
"attachments": "<array>",
"thread_id": "<string>",
"user_id": "<string>",
"from": "<unknown>"
}
],
"comments": [
{
"id": "<string>",
"created_at": "<string>",
"updated_at": "<string>",
"content": "<string>",
"attachments": "<array>",
"thread_id": "<string>",
"user_id": "<string>"
}
]
}{
"message": "<string>",
"code": "<string>",
"issues": [
{
"message": "<string>"
}
]
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Query Parameters
Comma-separated list of related resources to inline on the response. Allowed values: messages (inlines the conversation), comments (inlines internal comments). Pass either one alone or both separated by a comma, e.g. messages,comments. Unknown values are ignored.
Response
Successful response
UNKNOWN, LOW, MEDIUM, HIGH open, snoozed, done open, new, needs-response, my, snoozed, done Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Caller-owned cross-system identifiers (CRM ids, etc.). Replaced wholesale on create/update.
Show child attributes
Show child attributes
- Option 1
- Option 2
- Option 3
- Option 4
- Option 5
Show child attributes
Show child attributes
Show child attributes
Show child attributes