Skip to main content
GET
/
ai
/
completions
Async completion
curl --request GET \
  --url https://api.agentfirst.dev/ai/completions \
  --header 'Authorization: Bearer <token>'
import requests

url = "https://api.agentfirst.dev/ai/completions"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.text)
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

fetch('https://api.agentfirst.dev/ai/completions', 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.agentfirst.dev/ai/completions",
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.agentfirst.dev/ai/completions"

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.agentfirst.dev/ai/completions")
.header("Authorization", "Bearer <token>")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.agentfirst.dev/ai/completions")

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
{
  "model": "chatgpt",
  "query": "best basketball shoes for 2026",
  "html": "<!DOCTYPE html><html lang=\"en-US\" ...",
  "prompt": "<h4 class=\"sr-only select-none\">You said: ...",
  "completion": "<h4 class=\"sr-only select-none\">ChatGPT said: ...",
  "sources": "<section aria-label=\"Sources\" ...",
  "ads": "<div class=\"border-token-border-default mt-2 border-t py-4 text-sm\" ...",
  "sse": "{\"type\": \"conversation_detail_metadata\" ...",
  "fanouts": [
    "best basketball shoes 2026",
    "top rated basketball shoes 2026 reviews",
    "best performance basketball shoes 2026",
    "best basketball shoes for guards 2026",
    "best basketball shoes for wide feet 2026",
    "best outdoor basketball shoes 2026",
    "most popular basketball shoes 2026"
  ],
  "device": null,
  "country": null,
  "subdivision": null,
  "city": null,
  "language": null,
  "display": null
}
"Authorization header must be provided"
"Credit balance is 0; top up at https://agentfirst.dev/#pricing"
"Valid API token must be provided"
"Character counts must be no more than 255"
"Unknown error occurred"

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Query Parameters

id
string<uuid>
required

The identifier returned by the AI endpoint of the queued conversation to retrieve.

Example:

"1851dab8-4619-409f-893f-47dd3a180bc3"

Response

The AI completion or status.

model
enum<string>
required

The AI model that generated the completion.

Available options:
chatgpt,
gemini,
perplexity,
copilot
Example:

"chatgpt"

query
string
required

The user prompt that the completion was generated for.

Example:

"best basketball shoes for 2026"

html
string
required

The rendered HTML of the entire conversation.

Example:

"<!DOCTYPE html><html lang=\"en-US\" ..."

prompt
string
required

The rendered HTML of just the prompt portion of the conversation.

Example:

"<h4 class=\"sr-only select-none\">You said: ..."

completion
string
required

The rendered HTML of just the completion portion of the conversation.

Example:

"<h4 class=\"sr-only select-none\">ChatGPT said: ..."

sources
string
required

The rendered HTML of just the sources portion of the conversation.

Example:

"<section aria-label=\"Sources\" ..."

ads
string
required

The rendered HTML of just the ads portion of the conversation.

Example:

"<div class=\"border-token-border-default mt-2 border-t py-4 text-sm\" ..."

sse
string
required

[ChatGPT only] The server-sent events JSON that was used to populate the conversation HTML.

Example:

"{\"type\": \"conversation_detail_metadata\" ..."

fanouts
string[]
required

[ChatGPT only] The fanout queries that the model searched to generate the completion; only some models expose these queries.

Example:
[
"best basketball shoes 2026",
"top rated basketball shoes 2026 reviews",
"best performance basketball shoes 2026",
"best basketball shoes for guards 2026",
"best basketball shoes for wide feet 2026",
"best outdoor basketball shoes 2026",
"most popular basketball shoes 2026"
]
device
string

The name of the targeted emulated device.

Example:

null

country
string

The ISO code of the targeted country.

Example:

null

subdivision
string

The partial ISO code of the targeted subdivision in the country.

Example:

null

city
string

The common name of the targeted city in the country.

Example:

null

language
string

[Planned] The common name or ISO code of the targeted language.

Example:

null

display
string

[Planned] The common name or ISO code of the targeted display language.

Example:

null