API Reference
Integrate A2P 10DLC pre-scanning into your registration workflows.
OpenAPI Spec (YAML)Authentication
API requests require a Bearer token. Include your API key in the Authorization header.
Authorization: Bearer a2p_live_your_api_key_here
Endpoints
POST
/api/v1/scanFull campaign scan with AI analysis and URL crawling. Takes 15-20 seconds.
Rate limit: 10/min, 100/day per API key
POST
/api/v1/scan/quickQuick scan skipping URL crawling. Takes 5-8 seconds. URL-dependent fields return YELLOW placeholders.
Rate limit: 30/min, 300/day per API key
GET
/api/v1/healthHealth check endpoint. No authentication required.
Request Body
{
"useCaseType": "MARKETING", // required
"campaignDescription": "...", // required
"sampleMessages": ["msg1", "msg2"], // required, 2-5 items
"messageFlow": "...", // required
"businessName": "Acme Inc", // optional
"privacyPolicyUrl": "https://...", // optional
"websiteUrl": "https://...", // optional
"termsOfServiceUrl": "https://...", // optional
"optInKeywords": ["START"], // optional
"optOutKeywords": ["STOP"], // optional
"helpKeywords": ["HELP"], // optional
"optInMessage": "...", // optional
"optOutMessage": "...", // optional
"helpMessage": "...", // optional
"embeddedLinks": true, // optional
"embeddedPhoneNumbers": false, // optional
"ageGatedContent": false, // optional
"directLending": false, // optional
"numberPool": false // optional
}Example
curl -X POST https://api.a2pcheck.com/api/v1/scan \
-H "Content-Type: application/json" \
-H "Authorization: Bearer a2p_live_your_key" \
-d '{
"useCaseType": "MARKETING",
"campaignDescription": "Weekly promotional offers...",
"sampleMessages": [
"Acme: 20% off this week! Shop at acme.com/sale. Reply STOP to opt out.",
"Acme: New arrivals just dropped! Browse at acme.com/new. Msg&data rates apply."
],
"messageFlow": "Customers opt in via checkout checkbox at acme.com",
"optOutKeywords": ["STOP"],
"helpKeywords": ["HELP"]
}'Error Codes
| Status | Code | Description |
|---|---|---|
| 400 | VALIDATION_ERROR | Invalid request body |
| 401 | UNAUTHORIZED | Missing or invalid API key |
| 403 | FORBIDDEN | Inactive API key |
| 429 | RATE_LIMITED | Rate limit exceeded |
| 500 | INTERNAL_ERROR | Server error |
Get API Access
API keys are manually issued during the beta period. Contact us to request access.
Contact for API Access