Get async post generation status
curl --request GET \
--url https://api.usenotra.com/v1/posts/generate/{jobId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.usenotra.com/v1/posts/generate/{jobId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.usenotra.com/v1/posts/generate/{jobId}', 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.usenotra.com/v1/posts/generate/{jobId}",
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://api.usenotra.com/v1/posts/generate/{jobId}"
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://api.usenotra.com/v1/posts/generate/{jobId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.usenotra.com/v1/posts/generate/{jobId}")
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{
"job": {
"id": "<string>",
"organizationId": "<string>",
"status": "queued",
"contentType": "changelog",
"lookbackWindow": "current_day",
"repositoryIds": [
"<string>"
],
"brandVoiceId": "<string>",
"workflowRunId": "<string>",
"postId": "<string>",
"error": "<string>",
"source": "api",
"createdAt": "<string>",
"updatedAt": "<string>",
"completedAt": "<string>"
},
"events": [
{
"id": "<string>",
"jobId": "<string>",
"type": "queued",
"message": "<string>",
"createdAt": "<string>",
"metadata": {}
}
]
}{
"error": "<string>",
"code": "<string>",
"recovery": "<string>"
}{
"error": "<string>",
"code": "<string>",
"recovery": "<string>"
}{
"error": "<string>",
"code": "<string>",
"recovery": "<string>"
}{
"error": "<string>",
"code": "<string>",
"recovery": "<string>"
}{
"error": "<string>",
"code": "<string>",
"recovery": "<string>"
}Get async post generation status
Returns the job and its event log. job.status moves from queued to running and ends as completed, failed, or skipped. job.postId is set once the post has been created; fetch it with GET /v1/posts/.
GET
https://api.usenotra.com
/
v1
/
posts
/
generate
/
{jobId}
Get async post generation status
curl --request GET \
--url https://api.usenotra.com/v1/posts/generate/{jobId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.usenotra.com/v1/posts/generate/{jobId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.usenotra.com/v1/posts/generate/{jobId}', 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.usenotra.com/v1/posts/generate/{jobId}",
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://api.usenotra.com/v1/posts/generate/{jobId}"
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://api.usenotra.com/v1/posts/generate/{jobId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.usenotra.com/v1/posts/generate/{jobId}")
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{
"job": {
"id": "<string>",
"organizationId": "<string>",
"status": "queued",
"contentType": "changelog",
"lookbackWindow": "current_day",
"repositoryIds": [
"<string>"
],
"brandVoiceId": "<string>",
"workflowRunId": "<string>",
"postId": "<string>",
"error": "<string>",
"source": "api",
"createdAt": "<string>",
"updatedAt": "<string>",
"completedAt": "<string>"
},
"events": [
{
"id": "<string>",
"jobId": "<string>",
"type": "queued",
"message": "<string>",
"createdAt": "<string>",
"metadata": {}
}
]
}{
"error": "<string>",
"code": "<string>",
"recovery": "<string>"
}{
"error": "<string>",
"code": "<string>",
"recovery": "<string>"
}{
"error": "<string>",
"code": "<string>",
"recovery": "<string>"
}{
"error": "<string>",
"code": "<string>",
"recovery": "<string>"
}{
"error": "<string>",
"code": "<string>",
"recovery": "<string>"
}Authorizations
Send your API key in the Authorization header as Bearer API_KEY.
Path Parameters
Job ID returned by POST /v1/posts/generate.
Minimum string length:
1Pattern:
^[A-Za-z0-9_-]{1,100}$Example:
"job_5f0c3b2a9d4e4c1f8a7b6c5d4e3f2a1b"
Last modified on October 2, 2026
Was this page helpful?