API Documentation
Access our promise database programmatically. Built for journalists, researchers, and developers.
API Access Requires a Subscription
API access is available on our Journalist and Enterprise plans. View pricing to get started.
Authentication
All API requests require authentication via an API key. Include your key in the Authorization header:
You can generate and manage API keys from your account settings.
Base URL
Rate Limits
| Plan | Daily Limit | Rate |
|---|---|---|
| Journalist | 1,000 requests/day | 10 requests/second |
| Enterprise | 10,000 requests/day | 50 requests/second |
Endpoints
/promises
Returns a paginated list of promises.
Query Parameters
status - Filter by status (pending, kept, broken, etc.)person_id - Filter by person IDcategory_id - Filter by category IDpage - Page number (default: 1)per_page - Results per page (default: 20, max: 100)/promises/{'{id}'}
Returns a single promise with full details including person, company, and category relationships.
/people
Returns a paginated list of people (promise-makers).
Query Parameters
type - Filter by type (ceo, politician, influencer)search - Search by name/people/{'{id}'}
Returns a person with their promises and trust score.
/categories
Returns all promise categories.
/stats
Returns platform-wide statistics including total promises, status breakdown, and top promise-breakers.
Webhooks & Connectors
Receive real-time notifications when events occur. Custom webhooks for your own endpoints or pre-built connectors for popular platforms.
Code Examples
curl
curl -X GET "https://unkept.io/api/v1/promises?status=broken" \ -H "Authorization: Bearer YOUR_API_KEY"
JavaScript
const response = await fetch('https://unkept.io/api/v1/promises', { headers: { 'Authorization': `Bearer ${'{'}API_KEY{'}'}` } }); const promises = await response.json();
Python
import requests response = requests.get( 'https://unkept.io/api/v1/promises', headers={'Authorization': f'Bearer {'{'}API_KEY{'}'}'} ) promises = response.json()
Response Format
All responses are returned as JSON with the following structure:
{
"data": [...],
"meta": {
"current_page": 1,
"per_page": 20,
"total": 150,
"last_page": 8
},
"links": {
"next": "...",
"prev": null
}
}
Ready to Get Started?
Get API access with a Journalist or Enterprise subscription.
View Pricing