curl --request POST \
--url https://api.radarkit.ai/v1/projects/{project}/exports/estimate \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"type": "responses"
}
'import requests
url = "https://api.radarkit.ai/v1/projects/{project}/exports/estimate"
payload = { "type": "responses" }
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({type: 'responses'})
};
fetch('https://api.radarkit.ai/v1/projects/{project}/exports/estimate', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": {
"plan": {
"type": "responses",
"format": "csv",
"from": "2026-06-01",
"to": "2026-08-31",
"models": [
"chatgpt",
"gemini"
],
"prompt_ids": [
2048,
2049,
2050
],
"topic_ids": [
17
],
"include_answer": true
},
"estimate": {
"rows": 2340,
"rows_available": 30000,
"rows_limit": 30000,
"enough": true,
"max_rows": 250000,
"too_large": false
}
},
"meta": {},
"credits": {
"charged": 0,
"remaining": null
},
"request_id": "req_01j9x4w5u6v7w8x9y0z1a2b3c4"
}{
"error": {
"code": "UNAUTHENTICATED",
"message": "Missing or invalid API key. Send it as: Authorization: Bearer rk_live_YOUR_KEY"
},
"request_id": "req_01j9x4q7z8y9x0w1v2u3t4s5r6"
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
},
"request_id": "req_01j9x4m2p7q8r9s0t1u2v3w4x5"
}{
"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"
}Estimate an export
Tells you exactly how many rows an export would have and whether you have enough Export rows for it. Same body as Create export. Nothing is created and nothing is charged.
Use it: before every export. The count is exact, so what you see here is what Create export will charge.
Cost: Free.
Limits: 10 calls per minute per key.
Needs: Read.
curl --request POST \
--url https://api.radarkit.ai/v1/projects/{project}/exports/estimate \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"type": "responses"
}
'import requests
url = "https://api.radarkit.ai/v1/projects/{project}/exports/estimate"
payload = { "type": "responses" }
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({type: 'responses'})
};
fetch('https://api.radarkit.ai/v1/projects/{project}/exports/estimate', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": {
"plan": {
"type": "responses",
"format": "csv",
"from": "2026-06-01",
"to": "2026-08-31",
"models": [
"chatgpt",
"gemini"
],
"prompt_ids": [
2048,
2049,
2050
],
"topic_ids": [
17
],
"include_answer": true
},
"estimate": {
"rows": 2340,
"rows_available": 30000,
"rows_limit": 30000,
"enough": true,
"max_rows": 250000,
"too_large": false
}
},
"meta": {},
"credits": {
"charged": 0,
"remaining": null
},
"request_id": "req_01j9x4w5u6v7w8x9y0z1a2b3c4"
}{
"error": {
"code": "UNAUTHENTICATED",
"message": "Missing or invalid API key. Send it as: Authorization: Bearer rk_live_YOUR_KEY"
},
"request_id": "req_01j9x4q7z8y9x0w1v2u3t4s5r6"
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
},
"request_id": "req_01j9x4m2p7q8r9s0t1u2v3w4x5"
}{
"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"
}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}$Body
What to export. responses is one row per AI answer with brand mention, position, sentiment, competitors, sources cited and the answer as Markdown. sources is one row per page cited or consulted. competitors is one row per competitor named. rankings is one row per recommended domain with its position. query_fanout is one row per search query the model ran.
responses, sources, competitors, rankings, query_fanout csv with a header row, or ndjson with one JSON object per line.
csv, ndjson First day, YYYY-MM-DD. Default: 30 days ago.
Last day, YYYY-MM-DD, included. Default: today.
Models to include. Default: every model the project tracks.
10Every active prompt in these topics.
100Only these prompts. Leave both this and topic_ids out to export every prompt.
500responses only. Set false to leave the answer text out and get a much smaller file.
Response
The normalised plan and the estimate.
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"