Projects
The Projects API creates and manages SE Visible projects. A project tracks one primary brand with a domain, a country and language, across a set of AI models. Everything else in SE Visible (brands, topics, prompts, results, and sources) hangs off a project.
Using the SE Visible API, you can:
- list every project in your organisation with its domain, competitive brands, status, and tracked AI models
- create a new project and have it processed asynchronously to generate prompts and collect data
- read a project’s full details, including processing progress, topics, check dates, and tracked competitor brands
- delete a project (soft delete, can be restored)
All endpoints are relative to the base URL https://api.seranking.com/v1/se-visible.
List projects
GET https://api.seranking.com/v1/se-visible/projects
Returns all projects belonging to the authenticated user’s organisation. Each project includes its domain, tracked brand names, status, and the AI models it runs against.
Request parameters
This endpoint takes no parameters.
Request example
curl -X GET 'https://api.seranking.com/v1/se-visible/projects' \
-H 'Authorization: Token YOUR_API_KEY'
Response parameters
If successful, the server returns a JSON array of project objects.
| Parameter | Type | Description |
|---|---|---|
| id | String (UUID) | Project UUID. |
| domain | String (URL) | Target domain URL, including protocol. |
| brand_names | Array of String | Brand names tracked in the project. |
| created_at | String (datetime) | Project creation timestamp. |
| checked_at | String (datetime) or null | Most recent successful check completion timestamp. null if the project has not completed a check yet. |
| status | String | Project status: queued, processing, success, or error. |
| models | Array | AI models and country configurations used for this project. |
| models.model_type | String | AI model type: chatgpt, google_gemini, perplexity, google_ai_mode, or google_ai_overview. |
| models.country_code | String | ISO 3166-1 alpha-2 country code for this model configuration. |
Response example
[
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"domain": "https://lavazza.com",
"brand_names": ["Lavazza"],
"created_at": "2023-12-15 10:30:00",
"checked_at": "2023-12-15 11:45:00",
"status": "success",
"models": [
{ "model_type": "chatgpt", "country_code": "US" }
]
}
]
Create project
POST https://api.seranking.com/v1/se-visible/projects
Creates a new project for tracking brand visibility across AI models.
Note:
- A new project is queued and processed asynchronously to generate prompts and collect data. The response returns the project
idimmediately, before processing finishes. - Poll Get project details and read
check.processed_percent(0 to 100) andproject.status(queued,processing,success,error) to track progress.
Request parameters
Request body
| Parameter | Type | Required | Description |
|---|---|---|---|
| domain | String (URL) | Yes | Target domain URL to analyze for brand visibility. |
| country_code | String | Yes | ISO 3166-1 alpha-2 country code for project context. For example US, UK, CA, FR, DE. See the Reference for the full list. |
| lang_code | String | Yes | ISO 639-1 language code for project context. For example en, fr, de, es. See the Reference for the full list. |
| brand_names | Array of String | Yes | Brand names to track, including variations and aliases. At least one entry, each up to 2000 characters. |
| topics | Array of String | Yes | Topics to track. At least one entry, each up to 255 characters. |
Request example
curl -X POST 'https://api.seranking.com/v1/se-visible/projects' \
-H 'Authorization: Token YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"domain": "https://lavazza.com",
"country_code": "US",
"lang_code": "en",
"brand_names": ["Lavazza"],
"topics": [
"Ground Coffee",
"Whole Bean Coffee",
"Espresso Machines",
"Coffee Makers",
"Accessories"
]
}'
Response parameters
If successful, the server returns the UUID of the newly created project.
| Parameter | Type | Description |
|---|---|---|
| id | String (UUID) | UUID of the newly created project. |
Response example
{
"id": "550e8400-e29b-41d4-a716-446655440000"
}
Get project details
GET https://api.seranking.com/v1/se-visible/projects/{project_id}
Returns detailed information about a single project: its metadata, check processing progress, the topics being tracked, available historical check dates, the next scheduled check, and the competitor brands attached to it.
Request parameters
Path parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| project_id | String (UUID) | Yes | UUID of the project. |
Request example
curl -X GET 'https://api.seranking.com/v1/se-visible/projects/550e8400-e29b-41d4-a716-446655440000' \
-H 'Authorization: Token YOUR_API_KEY'
Response parameters
If successful, the server returns a project details object.
| Parameter | Type | Description |
|---|---|---|
| project | Object | Project metadata. Same shape as a list item (id, domain, brand_names, created_at, checked_at, status, models). |
| project.models.model_type | String | AI model type: chatgpt, google_gemini, perplexity, google_ai_mode, or google_ai_overview. |
| project.models.country_code | String | ISO 3166-1 alpha-2 country code for this model configuration. |
| check.processed_percent | Integer | Percentage of check processing completion, 0 to 100. |
| topics | Array | Topics being tracked in this project. |
| topics.id | Integer | Topic ID. |
| topics.title | String | Topic title. |
| topics.is_default | Boolean | true for the project’s default topic. |
| topics.prompts_count | Integer | Number of prompts in this topic. |
| check_dates | Array of String | Dates when successful checks were completed, sorted descending (YYYY-MM-DD). |
| next_check_date | String (datetime) or null | Next scheduled check date. null if no check is scheduled. |
| tracked_brands | Array | Competitor brands explicitly attached to the project. |
| tracked_brands.brand_id | Integer | Brand ID. |
| tracked_brands.brand_name | String | Brand name. |
| tracked_brands.domain | String (URL) or null | Brand domain URL, including protocol. null if no domain is set. |
| has_unparsed_prompts | Boolean | Whether the project has prompts that have not yet been parsed. |
Response example
{
"project": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"domain": "https://lavazza.com",
"brand_names": ["Lavazza"],
"created_at": "2023-12-15 10:30:00",
"checked_at": "2023-12-15 11:45:00",
"status": "success",
"models": [
{ "model_type": "chatgpt", "country_code": "US" },
{ "model_type": "google_ai_mode", "country_code": "US" }
]
},
"check": {
"processed_percent": 75
},
"topics": [
{ "id": 1, "title": "Default", "is_default": true, "prompts_count": 0 },
{ "id": 2, "title": "Ground Coffee", "is_default": false, "prompts_count": 10 },
{ "id": 3, "title": "Whole Bean Coffee", "is_default": false, "prompts_count": 8 }
],
"check_dates": ["2023-12-15", "2023-12-14", "2023-12-13"],
"next_check_date": "2023-12-22 10:00:00",
"tracked_brands": [
{ "brand_id": 10, "brand_name": "Illy", "domain": "https://illy.com" },
{ "brand_id": 11, "brand_name": "Nespresso", "domain": null }
],
"has_unparsed_prompts": false
}
Delete a project
DELETE https://api.seranking.com/v1/se-visible/projects/{project_id}
Soft-deletes a project from your organisation. The project is removed from active use but can be restored if needed.
Request parameters
Path parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| project_id | String (UUID) | Yes | UUID of the project. |
Request example
curl -X DELETE 'https://api.seranking.com/v1/se-visible/projects/550e8400-e29b-41d4-a716-446655440000' \
-H 'Authorization: Token YOUR_API_KEY'
Response parameters
If successful, the server returns 204 No Content with an empty body.
