Content Ideas
AI-generated content gap opportunities. Discover where competitors appear in AI responses and get actionable content recommendations.
Code example
curl -X GET 'https://api.trakkr.ai/get-content-ideas?brand_id=00000000-0000-4000-8000-81f286d10c3c&limit=20&offset=0&status=active' \
-H "Authorization: Bearer $TRAKKR_API_KEY"{
"ideas": [
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"type": "prompt_gap",
"query": "best project management tools for remote teams",
"insight": "Competitors appear in AI answers where your brand is absent",
"opportunity_score": 87,
"status": "active",
"recommended_template": "Comparison Roundup",
"competitors_appearing": ["Asana", "Monday.com", "ClickUp"],
"ai_models": ["ChatGPT", "Claude", "Perplexity", "Gemini"],
"your_position": null,
"created_at": "2026-03-07T08:00:00Z"
},
{
"id": "b2c3d4e5-f6a7-8901-bcde-f23456789012",
"type": "citation_gap",
"query": "how to improve team collaboration",
"insight": "High citation potential with 12 source appearances",
"opportunity_score": 72,
"status": "active",
"recommended_template": "How-To Guide",
"competitors_appearing": ["Slack", "Notion"],
"ai_models": ["ChatGPT", "Perplexity"],
"your_position": 5,
"created_at": "2026-03-07T08:00:00Z"
}
],
"pagination": {
"total": 24,
"limit": 20,
"offset": 0,
"has_more": true
},
"meta": {
"generated_at": "2026-03-07T08:00:00Z",
"generation_status": "completed",
"total_opportunities": 24
}
}Synthetic example. Values are made up.
API key required
60 req/minList Content Ideas
/get-content-ideasAuthenticate with Authorization: Bearer $TRAKKR_API_KEY. Key and access guide
Request parameters
brand_idstringqueryRequired
Brand UUID
Format: uuid
limitintegerqueryOptional
Results per page
Default: 50 · Minimum: 1 · Maximum: 200
offsetintegerqueryOptional
Pagination offset
Default: 0 · Minimum: 0
statusstring | nullqueryOptional
Filter by status
Options: "active", "dismissed", "implemented"
Responses and errors
200Successful Response
application/json
ideasobject[]Required
Fields in ideas
Array of object.
idstringRequired
typestringRequired
querystringRequired
insightstring | nullOptional
opportunity_scoreintegerOptional
Default: 0
statusstringOptional
Default: "active"
recommended_templatestring | nullOptional
competitors_appearingstring[]Optional
Default: []
Fields in competitors_appearing
Array of string. Default: []
string.
ai_modelsstring[]Optional
Default: []
Fields in ai_models
Array of string. Default: []
string.
your_positioninteger | nullOptional
created_atstringRequired
potentialstring | nullOptional
anglestring | nullOptional
why_nowstring | nullOptional
sub_questionsstring[]Optional
Default: []
Fields in sub_questions
Array of string. Default: []
string.
proof_pointsstring[]Optional
Default: []
Fields in proof_points
Array of string. Default: []
string.
competitors_winningstring[]Optional
Default: []
Fields in competitors_winning
Array of string. Default: []
string.
is_quick_winbooleanOptional
Default: false
paginationobjectRequired
Pagination metadata.
Fields in pagination
totalintegerRequired
limitintegerRequired
offsetintegerRequired
has_morebooleanRequired
metaobjectRequired
Metadata about content ideas generation.
Fields in meta
generated_atstring | nullOptional
generation_statusstring | nullOptional
total_opportunitiesintegerOptional
Default: 0
401Missing, malformed, or expired credentials
application/json
detailstring | object | nullOptional
errorstring | nullOptional
402The current plan does not fund this operation
application/json
detailstring | object | nullOptional
errorstring | nullOptional
403Invalid credentials, missing brand access, or insufficient role
application/json
detailstring | object | nullOptional
errorstring | nullOptional
422Validation Error
application/json
detailobject[]Optional
Fields in detail
Array of object.
locstring | integer[]Required
Fields in loc
Array of string | integer.
string
string.
integer
integer.
msgstringRequired
typestringRequired
429Rate limit exceeded
application/json
detailstring | object | nullOptional
errorstring | nullOptional
500The operation failed
application/json
detailstring | object | nullOptional
errorstring | nullOptional
503Authentication, entitlement, or a required dependency is temporarily unavailable
application/json
detailstring | object | nullOptional
errorstring | nullOptional
Returns paginated content ideas ranked by opportunity score. Ideas are generated by Trakkr's analysis engine based on your prompt tracking, citation data, and competitive landscape.
Idea Types
| Type | Description |
|---|---|
prompt_gap | Queries where competitors appear but your brand doesn't |
citation_gap | High-citation queries where your brand could be referenced |
position_weak | Queries where your brand ranks low and could improve |
rising | Trending topics gaining traction in AI responses |
campaign | Multi-piece content campaigns targeting a theme |
Refresh Content Ideas
/get-content-ideasAuthenticate with Authorization: Bearer $TRAKKR_API_KEY. Key and access guide
JSON request body (required)
brand_idstringRequired
Format: uuid
actionstringOptional
Default: "refresh"
Responses and errors
200Successful Response
application/json
statusstringRequired
messagestringRequired
countinteger | nullOptional
401Missing, malformed, or expired credentials
application/json
detailstring | object | nullOptional
errorstring | nullOptional
402The current plan does not fund this operation
application/json
detailstring | object | nullOptional
errorstring | nullOptional
403Invalid credentials, missing brand access, or insufficient role
application/json
detailstring | object | nullOptional
errorstring | nullOptional
422Validation Error
application/json
detailobject[]Optional
Fields in detail
Array of object.
locstring | integer[]Required
Fields in loc
Array of string | integer.
string
string.
integer
integer.
msgstringRequired
typestringRequired
429Rate limit exceeded
application/json
detailstring | object | nullOptional
errorstring | nullOptional
500The operation failed
application/json
detailstring | object | nullOptional
errorstring | nullOptional
503Authentication, entitlement, or a required dependency is temporarily unavailable
application/json
detailstring | object | nullOptional
errorstring | nullOptional
Triggers a background regeneration of content ideas for the brand. The analysis runs asynchronously - poll GET /get-content-ideas and check meta.generation_status for progress.
curl -X POST 'https://api.trakkr.ai/get-content-ideas' \
-H "Authorization: Bearer $TRAKKR_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"brand_id":"00000000-0000-4000-8000-81f286d10c3c","action":"refresh"}'{
"status": "generating",
"message": "Content ideas refresh started. Poll GET /get-content-ideas to check progress."
}Synthetic example. Values are made up.
already_generating without starting a duplicate job.Filtering by Status
Use the status parameter to filter ideas by lifecycle stage:
active- Current opportunities to act on (default view)dismissed- Ideas you've marked as not relevantimplemented- Ideas where content has been created
status=active to get only actionable opportunities.