Classify content
POST/v1/content
Classify a piece of content synchronously. Send text and image parts and receive per-label results in the response. Any metadata you send is echoed back on the response, so a decision can be matched to your own request without a side lookup. Requests have a maximum size of 6MB. API version 2026-08-11; see the API versioning guide for superseded versions.
Errors: 400 for an invalid body or images, with the failing field in the message. 401 for a missing or invalid API key. 413 for requests over 6MB. 429 when too many requests are in flight for your account, with a Retry-After header. 503 when classification is temporarily unavailable. In both cases the request was not processed and is safe to retry.
Header Parameters
Body ParametersJSON
Classify content
curl https://api.safetykit.com/v1/content \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $SAFETYKIT_API_KEY" \
-d '{
"content": [
{
"text": "Hey, is this still available?",
"type": "text"
}
],
"user_id": "user_123",
"content_id": "post_42",
"metadata": {
"channel": "bar"
}
}'{
"content_id": "post_42",
"labels": [
{
"decision": "not_match",
"escalation": "none",
"label": "hate_speech",
"score": 0.12,
"type": "classifier"
}
],
"user_id": "user_123",
"version": "2026-08-11",
"metadata": {
"channel": "bar"
}
}Returns Examples
{
"content_id": "post_42",
"labels": [
{
"decision": "not_match",
"escalation": "none",
"label": "hate_speech",
"score": 0.12,
"type": "classifier"
}
],
"user_id": "user_123",
"version": "2026-08-11",
"metadata": {
"channel": "bar"
}
}