Appearance
Keywords
GET /projects/{project}/keywords
All keywords for a project, with a summary of which reports have content for each keyword. Useful for auditing content coverage before syncing.
Path parameters
| Parameter | Type | Description |
|---|---|---|
project | integer | Project ID |
Request
sh
curl -H "Authorization: Bearer YOUR_API_TOKEN" \
https://admin.trakk.ai/api/v1/projects/42/keywordsResponse
json
{
"data": [
{
"id": 901,
"keyword": "seo agency stockholm",
"url": "https://digipartner.se/seo-stockholm",
"create_date": "2024-01-15",
"latest_position": 7,
"status_200": true,
"content_count": 5,
"content_action_ids": [1, 4, 8, 11, 14]
}
],
"cache_refreshed_at": "2026-03-30T12:00:00.000000Z"
}Fields
| Field | Type | Nullable | Description |
|---|---|---|---|
id | integer | No | Keyword ID |
keyword | string | No | The keyword phrase |
url | string | Yes | Target page URL |
create_date | date | No | When the keyword was added |
latest_position | integer | Yes | Most recent SERP rank position |
status_200 | boolean | Yes | Whether the target URL last returned HTTP 200 |
content_count | integer | No | Number of reports that have content for this keyword |
content_action_ids | array of integers | No | Sorted list of report numbers that have content for this keyword |
Usage example
js
// Find keywords with no content yet
const keywords = await api.get('/projects/42/keywords');
const noContent = keywords.data.filter(k => k.content_count === 0);
console.log(`${noContent.length} keywords have no content yet`);
// Check if a specific report (number 14) has content for a keyword
const hasReport14 = keyword.content_action_ids.includes(14);