Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.burki.dev/llms.txt

Use this file to discover all available pages before exploring further.

The SMS Compliance API manages verification for outbound messaging use cases.
Base path: /v1/sms-compliance
Unlike most messaging endpoints, SMS compliance routes use the auth API’s JWT user dependency. Send a Bearer JWT access token. API keys and cookie-only sessions are not accepted by these routes unless your client also sends the JWT.

Use Case Values

Valid use_case values:
  • customer_support
  • appointment_reminders
  • order_notifications
  • two_factor_auth
  • marketing
  • other

Get Compliance Status

GET /v1/sms-compliance/status/{phone_number_id}
Authorization: Bearer JWT_TOKEN
Response
{
  "found": true,
  "phone_number": "+15551234567",
  "phone_number_id": 55,
  "status": "approved",
  "use_case": "appointment_reminders",
  "submitted_at": "2026-04-20T10:00:00Z",
  "approved_at": "2026-04-21T12:00:00Z",
  "rejection_reason": null,
  "can_send_outbound": true,
  "is_toll_free": false
}

Submit Verification

POST /v1/sms-compliance/submit
Authorization: Bearer JWT_TOKEN
Content-Type: application/json
Request
{
  "phone_number_id": 55,
  "use_case": "appointment_reminders",
  "business_name": "Acme Dental",
  "business_description": "Dental clinic appointment reminders and patient follow-up",
  "sample_messages": [
    "Reminder: your appointment is tomorrow at 2 PM. Reply STOP to opt out."
  ],
  "website_url": "https://example.com",
  "contact_email": "[email protected]"
}
sample_messages must contain 1-3 examples, each 10-320 characters.

Can Send

GET /v1/sms-compliance/can-send/{phone_number_id}
Authorization: Bearer JWT_TOKEN
Response
{
  "can_send": true,
  "reason": "approved",
  "status": "approved"
}

Compliance Summary

GET /v1/sms-compliance/summary
Authorization: Bearer JWT_TOKEN
Response
{
  "total_numbers": 4,
  "approved": 2,
  "pending": 1,
  "rejected": 1,
  "numbers": [
    {
      "phone_number_id": 55,
      "phone_number": "+15551234567",
      "status": "approved",
      "use_case": "appointment_reminders"
    }
  ]
}

Admin Status Update

PUT /v1/sms-compliance/admin/status/{phone_number_id}?new_status=approved
Authorization: Bearer ADMIN_JWT
This endpoint requires current_user.role == "admin". Use rejection_reason when setting a rejected status:
PUT /v1/sms-compliance/admin/status/55?new_status=rejected&rejection_reason=Missing%20opt-out%20language