curl --request GET \
--url https://api.radarkit.ai/v1/projects/{project}/responses \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.radarkit.ai/v1/projects/{project}/responses"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.radarkit.ai/v1/projects/{project}/responses', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": [
{
"id": 918273,
"prompt": {
"id": 2048,
"text": "best crm for a startup"
},
"model": "chatgpt",
"date": "2026-08-31",
"collected_at": "2026-08-31T03:12:40+00:00",
"brand_mentioned": true,
"position": "top",
"sentiment": "positive",
"search_performed": true,
"search_queries": [
"best crm startups 2026",
"acme crm pricing"
],
"competitors_count": 3,
"realtime": false,
"content_markdown": "For a startup, the strongest picks right now are:\n\n- **Acme CRM** for teams under 20 [1]\n- HubSpot when you need marketing tools in the same place [2]"
}
],
"meta": {
"project": "64f1a2b3c4d5e6f708192a3b",
"timezone": "America/New_York",
"from": "2026-08-01",
"to": "2026-08-31",
"models": [
"chatgpt",
"gemini",
"perplexity"
],
"prompt_id": 2048,
"brand_mentioned": null,
"include": [
"content"
],
"limit": 100,
"count": 93,
"has_more": false,
"next_cursor": null
},
"credits": {
"charged": 2,
"remaining": 2945
},
"request_id": "req_01j9x4v9l0m1n2o3p4q5r6s7t8"
}{
"error": {
"code": "DATE_RANGE_TOO_LARGE",
"message": "The date range can span at most 31 days. Use exports for more.",
"details": {
"max_days": 31
}
},
"request_id": "req_01j9x4s6b7c8d9e0f1g2h3i4j6"
}{
"error": {
"code": "UNAUTHENTICATED",
"message": "Missing or invalid API key. Send it as: Authorization: Bearer rk_live_YOUR_KEY"
},
"request_id": "req_01j9x4q7z8y9x0w1v2u3t4s5r6"
}{
"error": {
"code": "INSUFFICIENT_CREDITS",
"message": "Not enough API credits."
},
"request_id": "req_01j9x4q7z8y9x0w1v2u3t4s5r7"
}{
"error": {
"code": "PROJECT_FORBIDDEN",
"message": "This key cannot access that project."
},
"request_id": "req_01j9x4q7z8y9x0w1v2u3t4s5r9"
}{
"error": {
"code": "PROJECT_NOT_FOUND",
"message": "No project with that id."
},
"request_id": "req_01j9x4q7z8y9x0w1v2u3t4s5s0"
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "One or more parameters are invalid.",
"details": [
{
"path": "from",
"message": "The from field must match the format Y-m-d."
}
]
},
"request_id": "req_01j9x4s6b7c8d9e0f1g2h3i4j5"
}{
"error": {
"code": "RATE_LIMITED",
"message": "Too many requests. Slow down and retry.",
"details": {
"retry_after": 21
}
},
"request_id": "req_01j9x4r2s3t4u5v6w7x8y9z0a1"
}{
"error": {
"code": "QUERY_TIMEOUT",
"message": "The query took too long. Narrow the date range or use exports."
},
"request_id": "req_01j9x4r2s3t4u5v6w7x8y9z0a2"
}List responses
One row per AI answer: which prompt, which model, which day, whether your brand was mentioned, where, in what tone, whether the model searched the web, and how many competitors it named.
Add include=content to get the answer text as Markdown in content_markdown. It is the same rendering the prompt page shows: headings, lists, your brand in bold, citations as [1] and a numbered source list at the end. Never raw HTML.
Newest first. Send next_cursor back as cursor with the same filters to get the next page.
Cost: 1 API credit per page. 2 with include=content.
Limits: Up to 31 days in one call. Up to 100 rows per page. For a year of rows, create an export.
Needs: Read.
curl --request GET \
--url https://api.radarkit.ai/v1/projects/{project}/responses \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.radarkit.ai/v1/projects/{project}/responses"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.radarkit.ai/v1/projects/{project}/responses', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": [
{
"id": 918273,
"prompt": {
"id": 2048,
"text": "best crm for a startup"
},
"model": "chatgpt",
"date": "2026-08-31",
"collected_at": "2026-08-31T03:12:40+00:00",
"brand_mentioned": true,
"position": "top",
"sentiment": "positive",
"search_performed": true,
"search_queries": [
"best crm startups 2026",
"acme crm pricing"
],
"competitors_count": 3,
"realtime": false,
"content_markdown": "For a startup, the strongest picks right now are:\n\n- **Acme CRM** for teams under 20 [1]\n- HubSpot when you need marketing tools in the same place [2]"
}
],
"meta": {
"project": "64f1a2b3c4d5e6f708192a3b",
"timezone": "America/New_York",
"from": "2026-08-01",
"to": "2026-08-31",
"models": [
"chatgpt",
"gemini",
"perplexity"
],
"prompt_id": 2048,
"brand_mentioned": null,
"include": [
"content"
],
"limit": 100,
"count": 93,
"has_more": false,
"next_cursor": null
},
"credits": {
"charged": 2,
"remaining": 2945
},
"request_id": "req_01j9x4v9l0m1n2o3p4q5r6s7t8"
}{
"error": {
"code": "DATE_RANGE_TOO_LARGE",
"message": "The date range can span at most 31 days. Use exports for more.",
"details": {
"max_days": 31
}
},
"request_id": "req_01j9x4s6b7c8d9e0f1g2h3i4j6"
}{
"error": {
"code": "UNAUTHENTICATED",
"message": "Missing or invalid API key. Send it as: Authorization: Bearer rk_live_YOUR_KEY"
},
"request_id": "req_01j9x4q7z8y9x0w1v2u3t4s5r6"
}{
"error": {
"code": "INSUFFICIENT_CREDITS",
"message": "Not enough API credits."
},
"request_id": "req_01j9x4q7z8y9x0w1v2u3t4s5r7"
}{
"error": {
"code": "PROJECT_FORBIDDEN",
"message": "This key cannot access that project."
},
"request_id": "req_01j9x4q7z8y9x0w1v2u3t4s5r9"
}{
"error": {
"code": "PROJECT_NOT_FOUND",
"message": "No project with that id."
},
"request_id": "req_01j9x4q7z8y9x0w1v2u3t4s5s0"
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "One or more parameters are invalid.",
"details": [
{
"path": "from",
"message": "The from field must match the format Y-m-d."
}
]
},
"request_id": "req_01j9x4s6b7c8d9e0f1g2h3i4j5"
}{
"error": {
"code": "RATE_LIMITED",
"message": "Too many requests. Slow down and retry.",
"details": {
"retry_after": 21
}
},
"request_id": "req_01j9x4r2s3t4u5v6w7x8y9z0a1"
}{
"error": {
"code": "QUERY_TIMEOUT",
"message": "The query took too long. Narrow the date range or use exports."
},
"request_id": "req_01j9x4r2s3t4u5v6w7x8y9z0a2"
}Authorizations
Your API key. Create one in Settings, API keys. Send it as Authorization: Bearer rk_live_YOUR_KEY.
Path Parameters
The project id. 24 characters. From List projects.
^[0-9a-f]{24}$Query Parameters
First day, YYYY-MM-DD, in the project's timezone. Default: the window your dashboard shows, 7 or 30 days back.
Last day, YYYY-MM-DD, included. Default: today.
One model name, or several separated by commas: chatgpt, gemini, perplexity, copilot, aimode, aioverview. Default: every model the project tracks. Names the plan does not include are ignored.
120Only rows for this prompt.
x >= 1true for answers that mention your brand, false for the ones that missed it.
content adds the answer as Markdown. Costs 2 credits instead of 1.
content Rows per page, 1 to 100. Default 50.
1 <= x <= 100next_cursor from the previous page. Keep the other filters the same.
200Response
One page of answers.
Show child attributes
Show child attributes
Facts about the request and how to get the next page.
Show child attributes
Show child attributes
What this call cost and what is left. Also in the X-RadarKit-Credits-Charged and X-RadarKit-Credits-Remaining headers.
Show child attributes
Show child attributes
A unique id for this call. Also in the X-Request-Id header. Quote it when you contact support.
"req_01j9x4m2p7q8r9s0t1u2v3w4x5"