Official Sinch API skills for AI coding agents — SMS, Voice, Verification, Numbers, Mailgun email, and more.
71
89%
Does it follow best practices?
Impact
—
No eval scenarios have been run
Advisory
Suggest reviewing before use
Order phone numbers with KYC compliance through a guided multi-step workflow. Required in countries where number purchases need identity verification.
This is a sequential, fragile workflow — steps must be followed in order. Do not combine API calls. Step 2 may be skipped if the user already has a specific E.164 number.
Before starting, collect from the user:
AU, DE, BR)MOBILE, LOCAL, or TOLL_FREEservicePlanId (+ campaignId for US 10DLC)type (RTC/EST/FAX) + corresponding ID (appId/trunkId/serviceId)For authentication setup, see the authentication skill.
Execute in order. Report state to the user after each step.
POST /v1/projects/{projectId}/numberOrders:lookupNumberRequirements with regionCode + numberType. Save the response — it defines KYC fields schema and attachments (with id, mandatory, allowedMimeTypes, allowedDocumentTypes). Tell the user what's needed.GET /v1/projects/{projectId}/availableNumbers?regionCode=XX&type=YY. Optional filters: capabilities, numberPattern.pattern, numberPattern.searchPattern, size. Present results and let user choose.POST /v1/projects/{projectId}/numberOrders:createNumberOrder. Use numberOrderOption (specific phones) or quantityOrderOption (criteria-based) — never both. Save idNumberOrder and expireTime from response.PUT /v1/projects/{projectId}/numberOrders/{numberOrderId}/registration. Populate requestDetails.data using the schema from Step 1. Returns 400 on validation errors — fix and retry. Use GET /v1/projects/{projectId}/numberOrders/{numberOrderId}/registration to review.POST /v1/projects/{projectId}/numberOrders/{numberOrderId}/attachments/{attachmentId} as multipart/form-data. Check allowedMimeTypes before uploading.POST /v1/projects/{projectId}/numberOrders/{numberOrderId}/submit. State becomes IN_REVIEW.The 48-hour clock starts at Step 3. Steps 4–6 must complete before the order expires.
Check status anytime: GET /v1/projects/{projectId}/numberOrders/{numberOrderId}
CREATED → IN_REVIEW → COMPLETED | REJECTED | EXPIRED | BLOCKED | NUMBER_ORDER_STATE_UNSPECIFIED
Base URL: https://numbers.api.sinch.com. Auth: OAuth2 bearer token (recommended) or Basic.
Store credentials in environment variables — never hardcode tokens or keys in commands or source code:
export SINCH_PROJECT_ID="your-project-id"
export SINCH_ACCESS_TOKEN="your-oauth-token"curl -X POST \
"https://numbers.api.sinch.com/v1/projects/$SINCH_PROJECT_ID/numberOrders:lookupNumberRequirements" \
-H "Authorization: Bearer $SINCH_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"regionCode": "AU", "numberType": "MOBILE"}'For all other endpoints, request/response schemas, and field-level details, see the Number Order API Reference.
data fields, and PUT again. No need to recreate the order.idNumberOrder is no longer valid.data schema varies per country. Always use Step 1 output — never hardcode.mandatory: true.+ prefix.callbackUrl — optional on order creation. Allowlist IPs: 54.76.19.159, 54.78.194.39, 54.155.83.128.quantityOrderOption in Step 3 with criteria instead of specific numbers.GET /v1/projects/{projectId}/numberOrders/{numberOrderId} to poll for state transitions.skills
sinch-10dlc
references
sinch-authentication
sinch-conversation-api
sinch-elastic-sip-trunking
references
sinch-fax-api
sinch-imported-numbers-hosting-orders
references
sinch-in-app-calling
sinch-mailgun
references
sinch-mailgun-inspect
references
sinch-mailgun-optimize
references
sinch-mailgun-validate
sinch-number-lookup-api
sinch-number-order-api
sinch-numbers-api
references
sinch-porting-api
sinch-provisioning-api
sinch-sdks
sinch-verification-api