Public API
IntegrationsLast updated July 2026
Authentication
All API requests require an API key passed as a Bearer token in the Authorization header.
Request header
Authorization: Bearer sk_live_your_api_key_here
Content-Type: application/json
Generate an API key in Settings → API Keys. You can create multiple keys (e.g. one per integration) and revoke them individually. Treat your API key like a password — never expose it in frontend code.
Base URL & versioning
https://scoor.io/api/v1
The API is versioned. Breaking changes will be released under a new version path (e.g. /api/v2). The current version is v1 (stable).
Endpoints
| Method | Endpoint | Description |
|---|---|---|
| GET | /leads | List leads (paginated, filterable) |
| POST | /leads | Create a new lead (triggers scoring) |
| GET | /leads/:id | Get a single lead with enrichment data |
| PATCH | /leads/:id | Update lead fields or pipeline stage |
| DELETE | /leads/:id | Delete a lead |
| GET | /leads/:id/score | Get score, tier, and enrichment breakdown |
| POST | /verify/email | Verify a single email address |
| GET | /workspace | Get workspace info and usage stats |
Code examples
Create a lead
curl
curl -X POST https://scoor.io/api/v1/leads \
-H "Authorization: Bearer sk_live_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"name": "Sarah Johnson",
"email": "sarah@techcorp.com",
"phone": "+61412345678",
"source": "facebook",
"fbCampaignName": "High-Ticket Coaching - July"
}'
Response 201 Created
{
"id": "lead_xyz789",
"name": "Sarah Johnson",
"email": "sarah@techcorp.com",
"phone": "+61412345678",
"leadScore": null,
"tier": null,
"enriched": false,
"pipelineStage": "new",
"createdAt": "2026-07-04T10:00:00Z",
"message": "Lead created. Enrichment and scoring in progress."
}
Verify an email
curl
curl -X POST https://scoor.io/api/v1/verify/email \
-H "Authorization: Bearer sk_live_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{ "email": "test@mailinator.com" }'
Response 200 OK
{
"email": "test@mailinator.com",
"valid": false,
"reason": "disposable_provider",
"score": 0,
"checks": {
"format": true,
"mx": true,
"smtp": false,
"disposable": true,
"free_provider": false
}
}
Rate limits
| Plan | Requests / minute | Requests / day |
|---|---|---|
| Free | 20 | 500 |
| Starter | 60 | 5,000 |
| Pro | 200 | 50,000 |
| Agency | 500 | Unlimited |
Rate limit headers are returned on every response: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.
Error codes
| HTTP Status | Code | Meaning |
|---|---|---|
| 400 | invalid_request | Missing or invalid fields in request body |
| 401 | unauthorized | Missing or invalid API key |
| 403 | forbidden | API key doesn't have access to this resource |
| 404 | not_found | Lead or resource doesn't exist |
| 429 | rate_limited | Too many requests — back off and retry |
| 500 | server_error | Internal server error — contact support if it persists |
Was this page helpful?