Get thread
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": {
"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>"
],
"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": {
"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>"
}
]
}Threads
Get thread
Get thread by ID. Authentication is required.
GET
/
threads
/
{id}
Get thread
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": {
"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>"
],
"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": {
"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
Available options:
UNKNOWN, LOW, MEDIUM, HIGH Available options:
open, snoozed, done Available options:
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
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
⌘I