curl --request POST \
--url https://api.geoptie.com/v1/brands/{id}/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"prompt_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"cited_page_urls": [
"<string>"
],
"title": "<string>",
"topic": "<string>",
"instructions": "<string>",
"source_recommendation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
'import requests
url = "https://api.geoptie.com/v1/brands/{id}/generations"
payload = {
"prompt_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"cited_page_urls": ["<string>"],
"title": "<string>",
"topic": "<string>",
"instructions": "<string>",
"source_recommendation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
prompt_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
cited_page_urls: ['<string>'],
title: '<string>',
topic: '<string>',
instructions: '<string>',
source_recommendation_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a'
})
};
fetch('https://api.geoptie.com/v1/brands/{id}/generations', 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.geoptie.com/v1/brands/{id}/generations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'prompt_ids' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
],
'cited_page_urls' => [
'<string>'
],
'title' => '<string>',
'topic' => '<string>',
'instructions' => '<string>',
'source_recommendation_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]),
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.geoptie.com/v1/brands/{id}/generations"
payload := strings.NewReader("{\n \"prompt_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"cited_page_urls\": [\n \"<string>\"\n ],\n \"title\": \"<string>\",\n \"topic\": \"<string>\",\n \"instructions\": \"<string>\",\n \"source_recommendation_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.geoptie.com/v1/brands/{id}/generations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"prompt_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"cited_page_urls\": [\n \"<string>\"\n ],\n \"title\": \"<string>\",\n \"topic\": \"<string>\",\n \"instructions\": \"<string>\",\n \"source_recommendation_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.geoptie.com/v1/brands/{id}/generations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"prompt_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"cited_page_urls\": [\n \"<string>\"\n ],\n \"title\": \"<string>\",\n \"topic\": \"<string>\",\n \"instructions\": \"<string>\",\n \"source_recommendation_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"brand_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "generating_brief",
"poll": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}Generate a brief
Start a new article by researching it. This studies the pages engines already cite for the prompts you name and writes a brief from them; it does not write the article, which is the next step.
Returns straight away with an id, a status of generating_brief and a poll path; the research takes a few minutes. Poll until status is brief_ready, then write the article from it.
curl --request POST \
--url https://api.geoptie.com/v1/brands/{id}/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"prompt_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"cited_page_urls": [
"<string>"
],
"title": "<string>",
"topic": "<string>",
"instructions": "<string>",
"source_recommendation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
'import requests
url = "https://api.geoptie.com/v1/brands/{id}/generations"
payload = {
"prompt_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"cited_page_urls": ["<string>"],
"title": "<string>",
"topic": "<string>",
"instructions": "<string>",
"source_recommendation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
prompt_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
cited_page_urls: ['<string>'],
title: '<string>',
topic: '<string>',
instructions: '<string>',
source_recommendation_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a'
})
};
fetch('https://api.geoptie.com/v1/brands/{id}/generations', 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.geoptie.com/v1/brands/{id}/generations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'prompt_ids' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
],
'cited_page_urls' => [
'<string>'
],
'title' => '<string>',
'topic' => '<string>',
'instructions' => '<string>',
'source_recommendation_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]),
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.geoptie.com/v1/brands/{id}/generations"
payload := strings.NewReader("{\n \"prompt_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"cited_page_urls\": [\n \"<string>\"\n ],\n \"title\": \"<string>\",\n \"topic\": \"<string>\",\n \"instructions\": \"<string>\",\n \"source_recommendation_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.geoptie.com/v1/brands/{id}/generations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"prompt_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"cited_page_urls\": [\n \"<string>\"\n ],\n \"title\": \"<string>\",\n \"topic\": \"<string>\",\n \"instructions\": \"<string>\",\n \"source_recommendation_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.geoptie.com/v1/brands/{id}/generations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"prompt_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"cited_page_urls\": [\n \"<string>\"\n ],\n \"title\": \"<string>\",\n \"topic\": \"<string>\",\n \"instructions\": \"<string>\",\n \"source_recommendation_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"brand_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "generating_brief",
"poll": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}Authorizations
Your API key, e.g. Authorization: Bearer gp_live_....
Path Parameters
Brand id.
Body
The shape of article to write. smart picks the shape for you.
blog_post, listicle, comparison, guide, how_to, smart The questions this article should win. At least one.
The already-cited pages to study, from /citations/urls. At least one: nothing is chosen for you.
Leave it out and one is written for you.
Optional. Taken from your prompts when you leave it out.
Anything else the article should account for, such as the audience or an angle to take.
Records that this article came from a recommendation.
Response
Accepted
Generation has started. The work continues after this response returns.
Show child attributes
Show child attributes