Save an article draft
curl --request PUT \
--url https://api.gleap.io/v3/helpcenter/collections/{helpcenterCollectionId}/articles/{helpcenterArticleId}/draft \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"title": "<unknown>",
"description": "<unknown>",
"content": "<unknown>",
"plainContent": "<unknown>",
"targetAudience": "<string>",
"tags": [
"<string>"
],
"author": "<unknown>",
"expectedDraftVersion": 123
}
'import requests
url = "https://api.gleap.io/v3/helpcenter/collections/{helpcenterCollectionId}/articles/{helpcenterArticleId}/draft"
payload = {
"title": "<unknown>",
"description": "<unknown>",
"content": "<unknown>",
"plainContent": "<unknown>",
"targetAudience": "<string>",
"tags": ["<string>"],
"author": "<unknown>",
"expectedDraftVersion": 123
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
title: '<unknown>',
description: '<unknown>',
content: '<unknown>',
plainContent: '<unknown>',
targetAudience: '<string>',
tags: ['<string>'],
author: '<unknown>',
expectedDraftVersion: 123
})
};
fetch('https://api.gleap.io/v3/helpcenter/collections/{helpcenterCollectionId}/articles/{helpcenterArticleId}/draft', 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://api.gleap.io/v3/helpcenter/collections/{helpcenterCollectionId}/articles/{helpcenterArticleId}/draft",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'title' => '<unknown>',
'description' => '<unknown>',
'content' => '<unknown>',
'plainContent' => '<unknown>',
'targetAudience' => '<string>',
'tags' => [
'<string>'
],
'author' => '<unknown>',
'expectedDraftVersion' => 123
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.gleap.io/v3/helpcenter/collections/{helpcenterCollectionId}/articles/{helpcenterArticleId}/draft"
payload := strings.NewReader("{\n \"title\": \"<unknown>\",\n \"description\": \"<unknown>\",\n \"content\": \"<unknown>\",\n \"plainContent\": \"<unknown>\",\n \"targetAudience\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"author\": \"<unknown>\",\n \"expectedDraftVersion\": 123\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.gleap.io/v3/helpcenter/collections/{helpcenterCollectionId}/articles/{helpcenterArticleId}/draft")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"<unknown>\",\n \"description\": \"<unknown>\",\n \"content\": \"<unknown>\",\n \"plainContent\": \"<unknown>\",\n \"targetAudience\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"author\": \"<unknown>\",\n \"expectedDraftVersion\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gleap.io/v3/helpcenter/collections/{helpcenterCollectionId}/articles/{helpcenterArticleId}/draft")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"title\": \"<unknown>\",\n \"description\": \"<unknown>\",\n \"content\": \"<unknown>\",\n \"plainContent\": \"<unknown>\",\n \"targetAudience\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"author\": \"<unknown>\",\n \"expectedDraftVersion\": 123\n}"
response = http.request(request)
puts response.read_bodyHelp center articles
Save an article draft
Create or update the staged draft of an article. The live article is never modified by this call; use the draft publish endpoint to promote it.
PUT
/
helpcenter
/
collections
/
{helpcenterCollectionId}
/
articles
/
{helpcenterArticleId}
/
draft
Save an article draft
curl --request PUT \
--url https://api.gleap.io/v3/helpcenter/collections/{helpcenterCollectionId}/articles/{helpcenterArticleId}/draft \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"title": "<unknown>",
"description": "<unknown>",
"content": "<unknown>",
"plainContent": "<unknown>",
"targetAudience": "<string>",
"tags": [
"<string>"
],
"author": "<unknown>",
"expectedDraftVersion": 123
}
'import requests
url = "https://api.gleap.io/v3/helpcenter/collections/{helpcenterCollectionId}/articles/{helpcenterArticleId}/draft"
payload = {
"title": "<unknown>",
"description": "<unknown>",
"content": "<unknown>",
"plainContent": "<unknown>",
"targetAudience": "<string>",
"tags": ["<string>"],
"author": "<unknown>",
"expectedDraftVersion": 123
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
title: '<unknown>',
description: '<unknown>',
content: '<unknown>',
plainContent: '<unknown>',
targetAudience: '<string>',
tags: ['<string>'],
author: '<unknown>',
expectedDraftVersion: 123
})
};
fetch('https://api.gleap.io/v3/helpcenter/collections/{helpcenterCollectionId}/articles/{helpcenterArticleId}/draft', 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://api.gleap.io/v3/helpcenter/collections/{helpcenterCollectionId}/articles/{helpcenterArticleId}/draft",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'title' => '<unknown>',
'description' => '<unknown>',
'content' => '<unknown>',
'plainContent' => '<unknown>',
'targetAudience' => '<string>',
'tags' => [
'<string>'
],
'author' => '<unknown>',
'expectedDraftVersion' => 123
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.gleap.io/v3/helpcenter/collections/{helpcenterCollectionId}/articles/{helpcenterArticleId}/draft"
payload := strings.NewReader("{\n \"title\": \"<unknown>\",\n \"description\": \"<unknown>\",\n \"content\": \"<unknown>\",\n \"plainContent\": \"<unknown>\",\n \"targetAudience\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"author\": \"<unknown>\",\n \"expectedDraftVersion\": 123\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.gleap.io/v3/helpcenter/collections/{helpcenterCollectionId}/articles/{helpcenterArticleId}/draft")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"<unknown>\",\n \"description\": \"<unknown>\",\n \"content\": \"<unknown>\",\n \"plainContent\": \"<unknown>\",\n \"targetAudience\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"author\": \"<unknown>\",\n \"expectedDraftVersion\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gleap.io/v3/helpcenter/collections/{helpcenterCollectionId}/articles/{helpcenterArticleId}/draft")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"title\": \"<unknown>\",\n \"description\": \"<unknown>\",\n \"content\": \"<unknown>\",\n \"plainContent\": \"<unknown>\",\n \"targetAudience\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"author\": \"<unknown>\",\n \"expectedDraftVersion\": 123\n}"
response = http.request(request)
puts response.read_bodyAuthorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Body
application/json
Staged edits to a help center article that are not yet live. There is at most one
working copy per article (unique on article). The article keeps serving its own
content until the draft is published.
Optimistic-concurrency token for the draft itself. When provided, the upsert only
applies if the stored draft's draftVersion still matches; otherwise 409 (mirrors the
live-article guard) so two people editing the same draft don't clobber each other.
Response
200 - application/json
Ok
⌘I