Preflight an outbound call or SMS against the pre-dial gates, persisting nothing

Answers whether POST /v1/calls (or an SMS send) would be refused before dialling, without creating anything. For channel outbound_voice (the default) it asks both pre-dial questions a call meets, in the same order: first the workspace capabilities (destination country, channel, use-case profile, review signals, caps), then, only if those allow it, the per-call outbound policy (purpose, user_authorization with both authorized_by and reason, caller-number readiness, the destination format). stage says which question answered: outbound_authorization or outbound_policy. For any other channel (sms) only the capabilities question is asked. This is a preflight of those two gates, not a full admission: number rules, plan concurrency, maintenance windows and the wallet reservation are not evaluated; spend caps are checked only against the amount_minor you send, calling rules only when you send project_id, and caller-number readiness only when you send from_number_id (the call itself always needs one).

post/v1/policies/authorize-outbound

Request

  • Base URL: https://api.skysay.ai
  • URL: https://api.skysay.ai/v1/policies/authorize-outbound
  • Auth: none declared

Request body

amount_minorinteger

Estimated cost to check spend caps against; 0 skips them.

bulkboolean
campaign_idstring
categoriesstring[]
channelstring

outbound_voice (the default) or sms; any value other than outbound_voice is judged as SMS.

from_number_idstring

The caller number; it must belong to the organization (and to project_id when sent).

metadataobject

Alternatively, every field above except organization_id, channel, to, from_number_id and amount_minor, nested here.

organization_idstring required
policyobject

The same policy object POST /v1/calls takes.

project_idstring
purposestring
recipient_typestring
relationshipstring
tostring

Destination in E.164. phone_number is accepted as the same field.

Response

The decision the first refusing gate gave, or allowed when both allow.

capabilities_snapshotobject
customer_reasonstring required
decision'allowed' | 'blocked' | 'needs_review' required
escalation_signalsstring[] required

Every reason code the refusing gate gave.

next_actionstring required
reason_codestring required

authorized when allowed; otherwise the refusing gate's first reason code.

stage'outbound_authorization' | 'outbound_policy' required

Which gate gave the decision.

Changes

No recorded changes to this operation across all 1 revision of this API.