SafeOrStolen API Documentation
Integrate stolen item verification directly into your applications, websites, and business workflows with our comprehensive REST API.
Overview
The SafeOrStolen API allows developers, businesses, and enterprises to integrate stolen item verification directly into their applications, websites, and workflows. Our REST API provides programmatic access to the same databases that power our web and mobile applications, including NCIC, GSMA, carrier blacklists, BikeIndex, NICB, and over 100 other data sources worldwide.
Perfect for marketplace platforms, point-of-sale systems, pawn shops, dealerships, and any business that needs to verify items are not stolen before purchase or accepting them as trade-ins. The API supports verification of phones using IMEI numbers, vehicles using VIN numbers, electronics using serial numbers, bicycles, firearms, and more.
API access is included with Professional plans at twenty-nine dollars and ninety-nine cents per month and Enterprise plans at ninety-nine dollars per month. Enterprise customers receive unlimited API calls, dedicated support, and custom integration assistance from our engineering team.
Authentication
All API requests require authentication using an API key. Include your API key in the Authorization header using Bearer token authentication. API keys are generated from your account dashboard and should be kept secure at all times. Never commit API keys to public repositories or expose them in client-side code where users can access them.
Your API key provides access to all verification endpoints based on your subscription tier. Professional plans include one thousand API calls per day, while Enterprise plans have unlimited usage with no rate limiting whatsoever.
Base URL
All API requests should be made to our secure HTTPS endpoint. We do not support unencrypted HTTP connections for security reasons.
POST /verify/imei
Verify if a phone IMEI number is stolen, blacklisted, or reported lost. This endpoint checks carrier blacklists, the GSMA Device Registry, insurance claims databases, and law enforcement databases across multiple countries. Returns comprehensive device information, blacklist status, carrier lock status, and any theft reports associated with the device.
Request Example
POST /v1/verify/imei
Content-Type: application/json
Authorization: Bearer YOUR_API_KEY
{
"imei": "355366077259891",
"check_blacklist": true,
"check_stolen": true
}Response Example
{
"status": "clean",
"confidence": 95,
"imei": "355366077259891",
"device": {
"manufacturer": "Apple",
"model": "iPhone 14 Pro",
"color": "Space Black"
},
"blacklist_status": "not_blacklisted",
"stolen_reports": 0,
"sources_checked": 47,
"timestamp": "2026-02-01T18:30:00Z"
}POST /verify/vin
Check vehicle VIN for theft records, salvage titles, active recalls, and odometer fraud. This endpoint queries NMVTIS (National Motor Vehicle Title Information System), state DMV databases, NICB (National Insurance Crime Bureau), and insurance claim history. Returns comprehensive vehicle history including theft status, title brands, accident history, and safety recalls.
Request Example
POST /v1/verify/vin
Content-Type: application/json
Authorization: Bearer YOUR_API_KEY
{
"vin": "1HGBH41JXMN109186",
"check_nmvtis": true,
"check_recalls": true
}Response Example
{
"status": "clean",
"confidence": 98,
"vin": "1HGBH41JXMN109186",
"vehicle": {
"year": 2021,
"make": "Honda",
"model": "Accord",
"trim": "EX-L"
},
"stolen": false,
"salvage": false,
"odometer_fraud": false,
"recalls": [],
"sources_checked": 23,
"timestamp": "2026-02-01T18:30:00Z"
}POST /verify/serial
Verify electronics, tools, appliances, cameras, and other items using serial numbers. Searches law enforcement databases, manufacturer registries, insurance claims, and user-reported stolen items. Supports laptops, tablets, power tools, cameras, gaming consoles, musical instruments, and virtually any item with a unique serial number.
Request Example
POST /v1/verify/serial
Content-Type: application/json
Authorization: Bearer YOUR_API_KEY
{
"serial": "C02XG0FDH7JY",
"device_type": "laptop",
"manufacturer": "Apple"
}Response Example
{
"status": "clean",
"confidence": 87,
"serial": "C02XG0FDH7JY",
"device_type": "laptop",
"manufacturer": "Apple",
"stolen_reports": 0,
"sources_checked": 12,
"timestamp": "2026-02-01T18:30:00Z"
}Rate Limits
API rate limits are based on your subscription tier to ensure fair usage for all customers:
- Free tier: Ten requests per day through the web interface only, no API access
- Starter plan: One hundred requests per day at four dollars and ninety-nine cents per month
- Professional plan: One thousand requests per day at twenty-nine dollars and ninety-nine cents per month
- Enterprise plan: Unlimited requests at ninety-nine dollars per month
Rate limits reset at midnight UTC. If you exceed your limit, the API returns a 429 Too Many Requests status code. Upgrade to Enterprise for unlimited API access with no rate limiting.
Error Codes
The API uses standard HTTP status codes to indicate the success or failure of requests:
- 200 OK: Request successful, verification complete
- 400 Bad Request: Invalid parameters, check IMEI or VIN format
- 401 Unauthorized: Invalid or missing API key
- 429 Too Many Requests: Rate limit exceeded, upgrade plan or wait
- 500 Internal Server Error: Server error, contact support
All error responses include a descriptive message in the response body explaining what went wrong and how to fix the issue.
Code Examples
cURL
curl -X POST https://api.safeorstolen.com/v1/verify/imei \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"imei":"355366077259891"}'Python
import requests
headers = {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
}
data = {'imei': '355366077259891'}
response = requests.post(
'https://api.safeorstolen.com/v1/verify/imei',
headers=headers,
json=data
)
result = response.json()
print(f"Status: {result['status']}")
print(f"Confidence: {result['confidence']}%")JavaScript (Node.js)
const response = await fetch(
'https://api.safeorstolen.com/v1/verify/imei',
{
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
imei: '355366077259891'
})
}
);
const result = await response.json();
console.log('Status:', result.status);
console.log('Confidence:', result.confidence + '%');Getting Your API Key
Follow these steps to get started with the SafeOrStolen API:
- Sign up for a Professional plan at twenty-nine dollars and ninety-nine cents per month or Enterprise plan at ninety-nine dollars per month
- Navigate to your Dashboard after logging in
- Click on "API Keys" in the sidebar menu
- Click "Generate New API Key"
- Copy your API key immediately as it is only shown once
- Store your API key securely and treat it like a password
If you lose your API key, you can revoke it and generate a new one from the dashboard. For security best practices, we recommend rotating API keys every ninety days.
API Support
Need help with API integration? Our dedicated developer support team is here to assist you with any questions or issues:
- Email: api@safeorstolen.com
- Documentation: docs.safeorstolen.com
- Enterprise Support: Dedicated Slack channel for Enterprise customers
Enterprise customers receive priority support with guaranteed response times within four hours during business hours.