--- name: telnyx-verify-curl description: >- Look up phone number information (carrier, type, caller name) and verify users via SMS/voice OTP. Use for phone verification and data enrichment. This skill provides REST API (curl) examples. metadata: author: telnyx product: verify language: curl generated_by: telnyx-openapi-pipeline --- # Telnyx Verify - curl ## Installation ```text # curl is pre-installed on macOS, Linux, and Windows 10+ ``` ## Setup ```bash export TELNYX_API_KEY="YOUR_API_KEY_HERE" ``` All examples below use `$TELNYX_API_KEY` for authentication. ## Error Handling All API calls can fail with network errors, rate limits (429), validation errors (422), or authentication errors (401). Always handle errors in production code: ```bash # Check HTTP status code in response response=$(curl -s -w "\n%{http_code}" \ -X POST "https://api.telnyx.com/v2/messages" \ -H "Authorization: Bearer $TELNYX_API_KEY" \ -H "Content-Type: application/json" \ -d '{"to": "+13125550001", "from": "+13125550002", "text": "Hello"}') http_code=$(echo "$response" | tail -1) body=$(echo "$response" | sed '$d') case $http_code in 2*) echo "Success: $body" ;; 422) echo "Validation error — check required fields and formats" ;; 429) echo "Rate limited — retry after delay"; sleep 1 ;; 401) echo "Authentication failed — check TELNYX_API_KEY" ;; *) echo "Error $http_code: $body" ;; esac ``` Common error codes: `401` invalid API key, `403` insufficient permissions, `404` resource not found, `422` validation error (check field formats), `429` rate limited (retry with exponential backoff). ## Important Notes - **Phone numbers** must be in E.164 format (e.g., `+13125550001`). Include the `+` prefix and country code. No spaces, dashes, or parentheses. - **Pagination:** List endpoints return paginated results. Use `page[number]` and `page[size]` query parameters to navigate pages. Check `meta.total_pages` in the response. ## Lookup phone number data Returns information about the provided phone number. `GET /number_lookup/{phone_number}` ```bash curl -H "Authorization: Bearer $TELNYX_API_KEY" "https://api.telnyx.com/v2/number_lookup/+18665552368" ``` Returns: `caller_name` (object), `carrier` (object), `country_code` (string), `fraud` (string | null), `national_format` (string), `phone_number` (string), `portability` (object), `record_type` (string) ## List verifications by phone number `GET /verifications/by_phone_number/{phone_number}` ```bash curl -H "Authorization: Bearer $TELNYX_API_KEY" "https://api.telnyx.com/v2/verifications/by_phone_number/+13035551234" ``` Returns: `created_at` (string), `custom_code` (string | null), `id` (uuid), `phone_number` (string), `record_type` (enum: verification), `status` (enum: pending, accepted, invalid, expired, error), `timeout_secs` (integer), `type` (enum: sms, call, flashcall, whatsapp), `updated_at` (string), `verify_profile_id` (uuid) ## Verify verification code by phone number `POST /verifications/by_phone_number/{phone_number}/actions/verify` — Required: `code`, `verify_profile_id` ```bash curl \ -X POST \ -H "Authorization: Bearer $TELNYX_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "code": "17686", "verify_profile_id": "12ade33a-21c0-473b-b055-b3c836e1c292" }' \ "https://api.telnyx.com/v2/verifications/by_phone_number/+13035551234/actions/verify" ``` Returns: `phone_number` (string), `response_code` (enum: accepted, rejected) ## Trigger Call verification `POST /verifications/call` — Required: `phone_number`, `verify_profile_id` Optional: `custom_code` (string | null), `extension` (string | null), `timeout_secs` (integer) ```bash curl \ -X POST \ -H "Authorization: Bearer $TELNYX_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "phone_number": "+13035551234", "verify_profile_id": "12ade33a-21c0-473b-b055-b3c836e1c292" }' \ "https://api.telnyx.com/v2/verifications/call" ``` Returns: `created_at` (string), `custom_code` (string | null), `id` (uuid), `phone_number` (string), `record_type` (enum: verification), `status` (enum: pending, accepted, invalid, expired, error), `timeout_secs` (integer), `type` (enum: sms, call, flashcall, whatsapp), `updated_at` (string), `verify_profile_id` (uuid) ## Trigger Flash call verification `POST /verifications/flashcall` — Required: `phone_number`, `verify_profile_id` Optional: `timeout_secs` (integer) ```bash curl \ -X POST \ -H "Authorization: Bearer $TELNYX_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "phone_number": "+13035551234", "verify_profile_id": "12ade33a-21c0-473b-b055-b3c836e1c292" }' \ "https://api.telnyx.com/v2/verifications/flashcall" ``` Returns: `created_at` (string), `custom_code` (string | null), `id` (uuid), `phone_number` (string), `record_type` (enum: verification), `status` (enum: pending, accepted, invalid, expired, error), `timeout_secs` (integer), `type` (enum: sms, call, flashcall, whatsapp), `updated_at` (string), `verify_profile_id` (uuid) ## Trigger SMS verification `POST /verifications/sms` — Required: `phone_number`, `verify_profile_id` Optional: `custom_code` (string | null), `timeout_secs` (integer) ```bash curl \ -X POST \ -H "Authorization: Bearer $TELNYX_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "phone_number": "+13035551234", "verify_profile_id": "12ade33a-21c0-473b-b055-b3c836e1c292" }' \ "https://api.telnyx.com/v2/verifications/sms" ``` Returns: `created_at` (string), `custom_code` (string | null), `id` (uuid), `phone_number` (string), `record_type` (enum: verification), `status` (enum: pending, accepted, invalid, expired, error), `timeout_secs` (integer), `type` (enum: sms, call, flashcall, whatsapp), `updated_at` (string), `verify_profile_id` (uuid) ## Trigger WhatsApp verification `POST /verifications/whatsapp` — Required: `phone_number`, `verify_profile_id` Optional: `custom_code` (string | null), `timeout_secs` (integer) ```bash curl \ -X POST \ -H "Authorization: Bearer $TELNYX_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "phone_number": "+13035551234", "verify_profile_id": "12ade33a-21c0-473b-b055-b3c836e1c292" }' \ "https://api.telnyx.com/v2/verifications/whatsapp" ``` Returns: `created_at` (string), `custom_code` (string | null), `id` (uuid), `phone_number` (string), `record_type` (enum: verification), `status` (enum: pending, accepted, invalid, expired, error), `timeout_secs` (integer), `type` (enum: sms, call, flashcall, whatsapp), `updated_at` (string), `verify_profile_id` (uuid) ## Retrieve verification `GET /verifications/{verification_id}` ```bash curl -H "Authorization: Bearer $TELNYX_API_KEY" "https://api.telnyx.com/v2/verifications/12ade33a-21c0-473b-b055-b3c836e1c292" ``` Returns: `created_at` (string), `custom_code` (string | null), `id` (uuid), `phone_number` (string), `record_type` (enum: verification), `status` (enum: pending, accepted, invalid, expired, error), `timeout_secs` (integer), `type` (enum: sms, call, flashcall, whatsapp), `updated_at` (string), `verify_profile_id` (uuid) ## Verify verification code by ID `POST /verifications/{verification_id}/actions/verify` Optional: `code` (string), `status` (enum: accepted, rejected) ```bash curl \ -X POST \ -H "Authorization: Bearer $TELNYX_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "code": "12345" }' \ "https://api.telnyx.com/v2/verifications/12ade33a-21c0-473b-b055-b3c836e1c292/actions/verify" ``` Returns: `phone_number` (string), `response_code` (enum: accepted, rejected) ## List all Verify profiles Gets a paginated list of Verify profiles. `GET /verify_profiles` ```bash curl -H "Authorization: Bearer $TELNYX_API_KEY" "https://api.telnyx.com/v2/verify_profiles" ``` Returns: `call` (object), `created_at` (string), `daily_spend_limit` (number), `daily_spend_limit_enabled` (boolean), `flashcall` (object), `id` (uuid), `language` (string), `name` (string), `record_type` (enum: verification_profile), `sms` (object), `updated_at` (string), `webhook_failover_url` (string), `webhook_url` (string), `whatsapp` (object) ## Create a Verify profile Creates a new Verify profile to associate verifications with. `POST /verify_profiles` — Required: `name` Optional: `call` (object), `daily_spend_limit` (number), `daily_spend_limit_enabled` (boolean), `flashcall` (object), `language` (string), `sms` (object), `webhook_failover_url` (string), `webhook_url` (string), `whatsapp` (object) ```bash curl \ -X POST \ -H "Authorization: Bearer $TELNYX_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "Test Profile" }' \ "https://api.telnyx.com/v2/verify_profiles" ``` Returns: `call` (object), `created_at` (string), `daily_spend_limit` (number), `daily_spend_limit_enabled` (boolean), `flashcall` (object), `id` (uuid), `language` (string), `name` (string), `record_type` (enum: verification_profile), `sms` (object), `updated_at` (string), `webhook_failover_url` (string), `webhook_url` (string), `whatsapp` (object) ## Retrieve Verify profile message templates List all Verify profile message templates. `GET /verify_profiles/templates` ```bash curl -H "Authorization: Bearer $TELNYX_API_KEY" "https://api.telnyx.com/v2/verify_profiles/templates" ``` Returns: `id` (uuid), `text` (string) ## Create message template Create a new Verify profile message template. `POST /verify_profiles/templates` — Required: `text` ```bash curl \ -X POST \ -H "Authorization: Bearer $TELNYX_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "text": "Your {{app_name}} verification code is: {{code}}." }' \ "https://api.telnyx.com/v2/verify_profiles/templates" ``` Returns: `id` (uuid), `text` (string) ## Update message template Update an existing Verify profile message template. `PATCH /verify_profiles/templates/{template_id}` — Required: `text` ```bash curl \ -X PATCH \ -H "Authorization: Bearer $TELNYX_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "text": "Your {{app_name}} verification code is: {{code}}." }' \ "https://api.telnyx.com/v2/verify_profiles/templates/12ade33a-21c0-473b-b055-b3c836e1c292" ``` Returns: `id` (uuid), `text` (string) ## Retrieve Verify profile Gets a single Verify profile. `GET /verify_profiles/{verify_profile_id}` ```bash curl -H "Authorization: Bearer $TELNYX_API_KEY" "https://api.telnyx.com/v2/verify_profiles/12ade33a-21c0-473b-b055-b3c836e1c292" ``` Returns: `call` (object), `created_at` (string), `daily_spend_limit` (number), `daily_spend_limit_enabled` (boolean), `flashcall` (object), `id` (uuid), `language` (string), `name` (string), `record_type` (enum: verification_profile), `sms` (object), `updated_at` (string), `webhook_failover_url` (string), `webhook_url` (string), `whatsapp` (object) ## Update Verify profile `PATCH /verify_profiles/{verify_profile_id}` Optional: `call` (object), `daily_spend_limit` (number), `daily_spend_limit_enabled` (boolean), `language` (string), `name` (string), `sms` (object), `webhook_failover_url` (string), `webhook_url` (string), `whatsapp` (object) ```bash curl \ -X PATCH \ -H "Authorization: Bearer $TELNYX_API_KEY" \ -H "Content-Type: application/json" \ "https://api.telnyx.com/v2/verify_profiles/12ade33a-21c0-473b-b055-b3c836e1c292" ``` Returns: `call` (object), `created_at` (string), `daily_spend_limit` (number), `daily_spend_limit_enabled` (boolean), `flashcall` (object), `id` (uuid), `language` (string), `name` (string), `record_type` (enum: verification_profile), `sms` (object), `updated_at` (string), `webhook_failover_url` (string), `webhook_url` (string), `whatsapp` (object) ## Delete Verify profile `DELETE /verify_profiles/{verify_profile_id}` ```bash curl \ -X DELETE \ -H "Authorization: Bearer $TELNYX_API_KEY" \ "https://api.telnyx.com/v2/verify_profiles/12ade33a-21c0-473b-b055-b3c836e1c292" ``` Returns: `call` (object), `created_at` (string), `daily_spend_limit` (number), `daily_spend_limit_enabled` (boolean), `flashcall` (object), `id` (uuid), `language` (string), `name` (string), `record_type` (enum: verification_profile), `sms` (object), `updated_at` (string), `webhook_failover_url` (string), `webhook_url` (string), `whatsapp` (object)