Available resources
Account businesses
GET /api/v1/workspaces
curl 'https://surfeo.ai/api/v1/workspaces?lang=en' \
-H 'Authorization: Bearer YOUR_API_KEY'
{
"data": [
{
"id": "11111111-1111-4111-8111-111111111111",
"name": "Example Clinic",
"url": "https://example.com",
"sector": "health",
"city": "Granada",
"country": "ES",
"language": "en",
"plan": "growth",
"created_at": "2026-10-01T10:00:00Z"
}
],
"pagination": {
"page": 1,
"limit": 50,
"has_more": false
}
}
Business profile and latest score
GET /api/v1/workspaces/{id}
curl 'https://surfeo.ai/api/v1/workspaces/11111111-1111-4111-8111-111111111111?lang=en' \
-H 'Authorization: Bearer YOUR_API_KEY'
{
"data": {
"id": "11111111-1111-4111-8111-111111111111",
"name": "Example Clinic",
"url": "https://example.com",
"sector": "health",
"city": "Granada",
"country": "ES",
"language": "en",
"plan": "growth",
"created_at": "2026-10-01T10:00:00Z",
"latest_score": {
"audit_id": "22222222-2222-4222-8222-222222222222",
"score": 72,
"label": "Dominant",
"created_at": "2026-10-01T10:00:00Z",
"reliable": true
}
}
}
Score history. from and to accept ISO 8601 dates, with both bounds included. A date without a time covers the full UTC day.
GET /api/v1/workspaces/{id}/scores
Filters: from, to
curl 'https://surfeo.ai/api/v1/workspaces/11111111-1111-4111-8111-111111111111/scores?lang=en' \
-H 'Authorization: Bearer YOUR_API_KEY'
{
"data": [
{
"audit_id": "22222222-2222-4222-8222-222222222222",
"score": 72,
"label": "Dominant",
"created_at": "2026-10-01T10:00:00Z",
"reliable": true
}
],
"pagination": {
"page": 1,
"limit": 50,
"has_more": false
}
}
Business questions
GET /api/v1/workspaces/{id}/questions
curl 'https://surfeo.ai/api/v1/workspaces/11111111-1111-4111-8111-111111111111/questions?lang=en' \
-H 'Authorization: Bearer YOUR_API_KEY'
{
"data": [
{
"id": "33333333-3333-4333-8333-333333333333",
"text": "Which clinics are in Granada?",
"language": "en",
"active": true,
"custom": false
}
],
"pagination": {
"page": 1,
"limit": 50,
"has_more": false
}
}
Question mention history
GET /api/v1/workspaces/{id}/questions/{questionId}/history
Filters: audit_id, provider, mentioned
curl 'https://surfeo.ai/api/v1/workspaces/11111111-1111-4111-8111-111111111111/questions/33333333-3333-4333-8333-333333333333/history?lang=en' \
-H 'Authorization: Bearer YOUR_API_KEY'
{
"data": [
{
"audit_id": "22222222-2222-4222-8222-222222222222",
"question_id": "33333333-3333-4333-8333-333333333333",
"provider": "chatgpt",
"mentioned": true,
"mention_rate": 1,
"position": 2,
"sentiment": "positive",
"created_at": "2026-10-01T10:00:00Z"
}
],
"pagination": {
"page": 1,
"limit": 50,
"has_more": false
}
}
AI responses from the latest completed audit by default. Use audit_id for another completed audit, and provider or mentioned=true|false to filter.
GET /api/v1/workspaces/{id}/responses
Filters: audit_id, provider, mentioned
curl 'https://surfeo.ai/api/v1/workspaces/11111111-1111-4111-8111-111111111111/responses?lang=en' \
-H 'Authorization: Bearer YOUR_API_KEY'
{
"data": [
{
"question_id": "33333333-3333-4333-8333-333333333333",
"question": "Which clinics are in Granada?",
"provider": "chatgpt",
"mentioned": true,
"mention_rate": 1,
"position": 2,
"sentiment": "positive",
"competitors": [
"Neighbor Clinic"
],
"sources": [
"https://example.com"
],
"response": "Example Clinic provides care in Granada.",
"created_at": "2026-10-01T10:00:00Z",
"audit_id": "22222222-2222-4222-8222-222222222222"
}
],
"pagination": {
"page": 1,
"limit": 50,
"has_more": false
}
}
Competitors and your brand in the latest completed audit
GET /api/v1/workspaces/{id}/competitors
curl 'https://surfeo.ai/api/v1/workspaces/11111111-1111-4111-8111-111111111111/competitors?lang=en' \
-H 'Authorization: Bearer YOUR_API_KEY'
{
"data": {
"audit_id": "22222222-2222-4222-8222-222222222222",
"brand": {
"name": "Example Clinic",
"url": "https://example.com",
"mentions": 6,
"mention_rate": 0.75
},
"competitors": [
{
"name": "Neighbor Clinic",
"url": "https://example.org",
"main": true,
"mentions": 4,
"mention_rate": 0.5
}
]
},
"pagination": {
"page": 1,
"limit": 50,
"has_more": false
}
}
Recommendations. Filter by status=pending|completed|verified.
GET /api/v1/workspaces/{id}/recommendations
Filters: status
curl 'https://surfeo.ai/api/v1/workspaces/11111111-1111-4111-8111-111111111111/recommendations?lang=en' \
-H 'Authorization: Bearer YOUR_API_KEY'
{
"data": [
{
"id": "33333333-3333-4333-8333-333333333333",
"title": "Complete the contact page",
"description": "Publish your contact details.",
"instructions": "Add your address and opening hours.",
"category": "content",
"priority": 1,
"difficulty": "easy",
"estimated_impact": "medium",
"target_page": "https://example.com/contact",
"completed": true,
"verified": true,
"created_at": "2026-10-01T10:00:00Z",
"completed_at": "2026-10-01T10:00:00Z",
"verified_at": "2026-10-01T10:00:00Z"
}
],
"pagination": {
"page": 1,
"limit": 50,
"has_more": false
}
}
Completed audits and report links
GET /api/v1/workspaces/{id}/audits
curl 'https://surfeo.ai/api/v1/workspaces/11111111-1111-4111-8111-111111111111/audits?lang=en' \
-H 'Authorization: Bearer YOUR_API_KEY'
{
"data": [
{
"id": "22222222-2222-4222-8222-222222222222",
"completed_at": "2026-10-01T10:00:00Z",
"score": 72,
"summary": "Your visibility has improved.",
"quick_win": {
"action": "Publish your opening hours on your website.",
"impact": "medium",
"effort": "easy"
},
"report_url": "/api/v1/workspaces/11111111-1111-4111-8111-111111111111/audits/22222222-2222-4222-8222-222222222222/report.pdf?lang=en"
}
],
"pagination": {
"page": 1,
"limit": 50,
"has_more": false
}
}
PDF report for a completed audit
GET /api/v1/workspaces/{id}/audits/{auditId}/report.pdf
curl 'https://surfeo.ai/api/v1/workspaces/11111111-1111-4111-8111-111111111111/audits/22222222-2222-4222-8222-222222222222/report.pdf?lang=en' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-o report.pdf
The response is an application/pdf file. Save the download as report.pdf.