curl --request GET \
--url https://productlane.com/api/v2/docs/articles \
--header 'Authorization: Bearer <token>'import requests
url = "https://productlane.com/api/v2/docs/articles"
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/docs/articles', 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/docs/articles",
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/docs/articles"
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/docs/articles")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://productlane.com/api/v2/docs/articles")
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{
"data": [
{
"id": "<string>",
"created_at": "<string>",
"updated_at": "<string>",
"title": "<string>",
"summary": "<string>",
"content": "<string>",
"icon": "<string>",
"url_name": "<string>",
"published": true,
"visibility": "public",
"visibility_tier": "public",
"kind": "doc",
"external_url": "<string>",
"archived": true,
"show_on_home_page": true,
"image_url": "<string>",
"group_id": "<string>",
"parent_article_id": "<string>",
"order": 123,
"portal_instance_id": "<string>"
}
],
"page": {
"cursor": "<string>",
"has_more": true,
"limit": 123
}
}{
"message": "<string>",
"code": "<string>",
"issues": [
{
"message": "<string>"
}
]
}List 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.
curl --request GET \
--url https://productlane.com/api/v2/docs/articles \
--header 'Authorization: Bearer <token>'import requests
url = "https://productlane.com/api/v2/docs/articles"
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/docs/articles', 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/docs/articles",
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/docs/articles"
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/docs/articles")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://productlane.com/api/v2/docs/articles")
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{
"data": [
{
"id": "<string>",
"created_at": "<string>",
"updated_at": "<string>",
"title": "<string>",
"summary": "<string>",
"content": "<string>",
"icon": "<string>",
"url_name": "<string>",
"published": true,
"visibility": "public",
"visibility_tier": "public",
"kind": "doc",
"external_url": "<string>",
"archived": true,
"show_on_home_page": true,
"image_url": "<string>",
"group_id": "<string>",
"parent_article_id": "<string>",
"order": 123,
"portal_instance_id": "<string>"
}
],
"page": {
"cursor": "<string>",
"has_more": true,
"limit": 123
}
}{
"message": "<string>",
"code": "<string>",
"issues": [
{
"message": "<string>"
}
]
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
1 <= x <= 200Narrows to the subpages of this article.
true, false, 1, 0, yes, no, on, off true, false, 1, 0, yes, no, on, off Defaults to public. Agent and internal articles stay off your docs site; pass one of them, or all, to include them. unlisted is the former name for agent.
public, agent, internal, unlisted, all Defaults to doc. link rows point at a page you host elsewhere and carry no content; pass link or all to include them.
doc, link, all 1 - 255Filter to a single portal by its id (from GET /portal/instances). Pass __main__ for the Main (Root) portal. Omit to return items across all portals.
created_at (newest first) or order (the order the docs site renders, ascending). Both break ties by id.
created_at, order BCP-47 language code. Merges the matching translation onto each row. Requires the Pro plan and the language enabled in workspace settings.