curl --request POST \
--url https://api.radarkit.ai/v1/projects/{project}/topics \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Pricing"
}
'import requests
url = "https://api.radarkit.ai/v1/projects/{project}/topics"
payload = { "name": "Pricing" }
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({name: 'Pricing'})
};
fetch('https://api.radarkit.ai/v1/projects/{project}/topics', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": {
"id": 17,
"name": "Pricing",
"status": "active",
"created_at": "2026-09-03T10:20:11+00:00"
},
"meta": {
"project": "64f1a2b3c4d5e6f708192a3b"
},
"credits": {
"charged": 1,
"remaining": 2944
},
"request_id": "req_01j9x4y7m8n9o0p1q2r3s4t5u6"
}{
"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": "<string>",
"message": "<string>",
"details": {}
},
"request_id": "req_01j9x4m2p7q8r9s0t1u2v3w4x5"
}{
"error": {
"code": "PROJECT_NOT_FOUND",
"message": "No project with that id."
},
"request_id": "req_01j9x4q7z8y9x0w1v2u3t4s5s0"
}{
"error": {
"code": "TOPIC_EXISTS",
"message": "A topic named \"Pricing\" already exists.",
"details": {
"topic_id": 17,
"name": "Pricing"
}
},
"request_id": "req_01j9x4y7m8n9o0p1q2r3s4t5u7"
}{
"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"
}Add topic
Creates a topic. Names are unique within a project and the check ignores letter case.
If a topic with that name exists you get 409 TOPIC_EXISTS with the existing id in details.topic_id. Use that id. Nothing was created twice.
Cost: 1 API credit.
Needs: Write. Your seat must be allowed to manage topics.
curl --request POST \
--url https://api.radarkit.ai/v1/projects/{project}/topics \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Pricing"
}
'import requests
url = "https://api.radarkit.ai/v1/projects/{project}/topics"
payload = { "name": "Pricing" }
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({name: 'Pricing'})
};
fetch('https://api.radarkit.ai/v1/projects/{project}/topics', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": {
"id": 17,
"name": "Pricing",
"status": "active",
"created_at": "2026-09-03T10:20:11+00:00"
},
"meta": {
"project": "64f1a2b3c4d5e6f708192a3b"
},
"credits": {
"charged": 1,
"remaining": 2944
},
"request_id": "req_01j9x4y7m8n9o0p1q2r3s4t5u6"
}{
"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": "<string>",
"message": "<string>",
"details": {}
},
"request_id": "req_01j9x4m2p7q8r9s0t1u2v3w4x5"
}{
"error": {
"code": "PROJECT_NOT_FOUND",
"message": "No project with that id."
},
"request_id": "req_01j9x4q7z8y9x0w1v2u3t4s5s0"
}{
"error": {
"code": "TOPIC_EXISTS",
"message": "A topic named \"Pricing\" already exists.",
"details": {
"topic_id": 17,
"name": "Pricing"
}
},
"request_id": "req_01j9x4y7m8n9o0p1q2r3s4t5u7"
}{
"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
The topic name.
255Response
The new topic.
Show child attributes
Show child attributes
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"