Get deep research
curl --request GET \
--url https://app.frogbot.ai/api/v1/research/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.frogbot.ai/api/v1/research/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.frogbot.ai/api/v1/research/{id}', 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://app.frogbot.ai/api/v1/research/{id}",
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://app.frogbot.ai/api/v1/research/{id}"
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://app.frogbot.ai/api/v1/research/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.frogbot.ai/api/v1/research/{id}")
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{
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "queued",
"title": "Researching...",
"topic": "What are the latest advancements in quantum computing?",
"report": ""
}
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "running",
"title": "Researching...",
"topic": "What are the latest advancements in quantum computing?",
"report": ""
}
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "succeeded",
"title": "Latest Advancements in Quantum Computing",
"topic": "What are the latest advancements in quantum computing?",
"report": "# Latest Advancements in Quantum Computing\n\n## Overview\n\nQuantum computing has seen remarkable progress...\n\n## Sources\n\n- https://example.com/article1\n- https://example.com/article2"
}
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "failed",
"title": "Researching...",
"topic": "What are the latest advancements in quantum computing?",
"report": "",
"error": "Research timed out"
}
{
"error": "Research not found"
}
{
"error": "Unauthorized"
}
Deep Research API
Get deep research
Poll for deep research status and retrieve the report
GET
/
api
/
v1
/
research
/
{id}
Get deep research
curl --request GET \
--url https://app.frogbot.ai/api/v1/research/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.frogbot.ai/api/v1/research/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.frogbot.ai/api/v1/research/{id}', 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://app.frogbot.ai/api/v1/research/{id}",
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://app.frogbot.ai/api/v1/research/{id}"
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://app.frogbot.ai/api/v1/research/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.frogbot.ai/api/v1/research/{id}")
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{
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "queued",
"title": "Researching...",
"topic": "What are the latest advancements in quantum computing?",
"report": ""
}
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "running",
"title": "Researching...",
"topic": "What are the latest advancements in quantum computing?",
"report": ""
}
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "succeeded",
"title": "Latest Advancements in Quantum Computing",
"topic": "What are the latest advancements in quantum computing?",
"report": "# Latest Advancements in Quantum Computing\n\n## Overview\n\nQuantum computing has seen remarkable progress...\n\n## Sources\n\n- https://example.com/article1\n- https://example.com/article2"
}
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "failed",
"title": "Researching...",
"topic": "What are the latest advancements in quantum computing?",
"report": "",
"error": "Research timed out"
}
{
"error": "Research not found"
}
{
"error": "Unauthorized"
}
Check the status of a deep research job and get the final report when it’s ready.
Poll this endpoint every few seconds until
status is succeeded or failed. Deep research typically takes 2-5 minutes.
Authenticate
Use an API key in theAuthorization header.
curl https://app.frogbot.ai/api/v1/research/550e8400-e29b-41d4-a716-446655440000 \
-H "Authorization: Bearer $FROGBOT_API_KEY"
Path parameters
string
required
The research ID returned from the create endpoint.
Response
string
Unique identifier for the research job.
string
Current status of the research job.
| Status | Description |
|---|---|
queued | Job is waiting to be processed |
running | Research is in progress |
succeeded | Research completed successfully |
failed | Research encountered an error |
string
Title of the research report. Available once research completes.
string
The original topic that was researched.
string
The full markdown research report with sources. Empty string until research completes.
string
Error message if
status is failed. Only present on failure.Examples
curl https://app.frogbot.ai/api/v1/research/550e8400-e29b-41d4-a716-446655440000 \
-H "Authorization: Bearer $FROGBOT_API_KEY"
import requests
import time
research_id = "550e8400-e29b-41d4-a716-446655440000"
while True:
response = requests.get(
f"https://app.frogbot.ai/api/v1/research/{research_id}",
headers={"Authorization": "Bearer YOUR_API_KEY"}
)
data = response.json()
if data["status"] == "succeeded":
print(data["report"])
break
elif data["status"] == "failed":
print(f"Error: {data.get('error')}")
break
print(f"Status: {data['status']}")
time.sleep(5)
async function pollResearch(id: string): Promise<string> {
while (true) {
const response = await fetch(
`https://app.frogbot.ai/api/v1/research/${id}`,
{
headers: { Authorization: "Bearer YOUR_API_KEY" },
}
);
const data = await response.json();
if (data.status === "succeeded") {
return data.report;
} else if (data.status === "failed") {
throw new Error(data.error);
}
console.log(`Status: ${data.status}`);
await new Promise((r) => setTimeout(r, 5000));
}
}
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "queued",
"title": "Researching...",
"topic": "What are the latest advancements in quantum computing?",
"report": ""
}
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "running",
"title": "Researching...",
"topic": "What are the latest advancements in quantum computing?",
"report": ""
}
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "succeeded",
"title": "Latest Advancements in Quantum Computing",
"topic": "What are the latest advancements in quantum computing?",
"report": "# Latest Advancements in Quantum Computing\n\n## Overview\n\nQuantum computing has seen remarkable progress...\n\n## Sources\n\n- https://example.com/article1\n- https://example.com/article2"
}
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "failed",
"title": "Researching...",
"topic": "What are the latest advancements in quantum computing?",
"report": "",
"error": "Research timed out"
}
{
"error": "Research not found"
}
{
"error": "Unauthorized"
}