SMAO API Documentation
Public APICalls & recordings

Trigger an outbound call

Starts an outbound call. Provide exactly one of assistant_id or assistant_phone to select the assistant, and exactly one of to or target_phone for the destination number (to is preferred, target_phone is an alias retained for backwards compatibility).

This operation uses the per-key outbound_trigger bucket (60 requests per hour by default) and a separate one-outbound-call-per-assistant cooldown over a rolling 60-second window. A cooldown rejection is 429 rate_limit_exceeded without Retry-After.

POST
/calls
AuthorizationBearer <token>

API key in the Authorization: Bearer <key> header. Keys are created in the SMAO dashboard (Settings → API Keys).

In: header

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://api.smao.ai/api/v1/calls" \  -H "Content-Type: application/json" \  -d '{}'
{
  "data": {
    "call_id": "65f8fa6f1a9d8e0012ab34cd",
    "assistant_id": "65a1234567890abcdef01234",
    "assistant_phone": "+491701234567",
    "to": "+491701234999",
    "status": "queued",
    "created_at": "2019-08-24T14:15:22Z"
  }
}
{
  "error": {
    "code": "validation_failed",
    "message": "Validation failed"
  }
}
{
  "error": {
    "code": "unauthorized",
    "message": "Missing API key"
  }
}
{
  "error": {
    "code": "subscription_required",
    "message": "This feature is not available in your current subscription. Please upgrade to a higher plan"
  }
}
{
  "error": {
    "code": "forbidden",
    "message": "No permission"
  }
}
{
  "error": {
    "code": "not_found",
    "message": "Not found"
  }
}
{
  "error": {
    "code": "rate_limit_exceeded",
    "message": "Rate limit exceeded"
  }
}
{
  "error": {
    "code": "internal_error",
    "message": "An unexpected error occurred."
  }
}