← VapiCONTENT HISTORYWHAT CHANGED · RULE-BASED ANALYSIS
Update to Vapi
Snapshot Sep 30, 2026 · 23:15 UTC · version 1.2.1
Collection source: not recorded for this historical snapshot.
First saved snapshot
No earlier snapshot is available to establish a change.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"name": "create-phone-number",
"description": "Plan, provision, import, route, update, and verify Vapi phone numbers through the public API. Use for Vapi-hosted US PSTN numbers, explicitly requested SIP addresses, Twilio/Vonage/Telnyx or BYO carrier numbers, secure credential handling, assistant or squad routing, area-code requests, outbound limitations, and phone-provider troubleshooting.",
"included_files": [
{
"relative_path": "agents/openai.yaml",
"size_in_bytes": 201
},
{
"relative_path": "references/api-examples.md",
"size_in_bytes": 2264
},
{
"relative_path": "references/provider-api-procedures.md",
"size_in_bytes": 3916
}
],
"skill_md_contents": "---\nname: create-phone-number\ndescription: Plan, provision, import, route, update, and verify Vapi phone numbers through the public API. Use for Vapi-hosted US PSTN numbers, explicitly requested SIP addresses, Twilio/Vonage/Telnyx or BYO carrier numbers, secure credential handling, assistant or squad routing, area-code requests, outbound limitations, and phone-provider troubleshooting.\nlicense: MIT\n---\n\n# Vapi Phone Number Setup\n\nDefault to a payload or implementation plan. Provision, import, route, or release a number only when the user explicitly requests the live mutation. Require a final explicit confirmation immediately before provisioning or another potentially chargeable action.\n\n## Security and Source Rules\n\n- Never ask for carrier passwords, auth tokens, API keys, API secrets, or private keys in chat.\n- Use an existing Vapi `credentialId` for provider imports when the current public schema supports it. If a required credential does not exist, stop and state that API prerequisite.\n- If the public API requires raw carrier secrets and exposes no credential-based alternative, source them from local environment variables without displaying them, writing them to payload files, or logging the request body.\n- Verify provider fields against the current [Create Phone Number API](https://docs.vapi.ai/api-reference/phone-numbers/create) or public OpenAPI schema.\n- Never invent phone numbers, SIP realms, credentials, resource IDs, area-code availability, or routing destinations.\n\n## Procedure\n\n1. Determine the execution mode.\n - Return a payload or plan when the user asks for a draft or does not clearly authorize a live mutation.\n - For a live request, confirm that `VAPI_API_KEY` is set without printing it.\n\n2. Choose the transport path.\n - For a nontechnical request for an ordinary number, prefer the documented Vapi-hosted US PSTN path.\n - Use SIP only when the user explicitly asks for SIP. Require an exact supported SIP URI from the user or current public API documentation; if it is unavailable, stop and state the missing prerequisite. Do not invent a regional realm.\n - Use a carrier import only when the user owns the number and the required secure credential path is available.\n\n3. Resolve routing before mutation.\n - List or get assistants and squads through public endpoints. Match a supplied name to one resource.\n - If several resources are plausible, ask the user to choose. Never guess an ID.\n - Route to either one `assistantId` or one `squadId`; clear conflicting destination fields when changing an existing route.\n\n4. Check inventory safely.\n - Review existing phone numbers with `GET /phone-number` to avoid duplicate provisioning.\n - The current public OpenAPI accepts `numberDesiredAreaCode` but does not expose a public available-area-code inventory endpoint. Accept the user's desired three-digit US area code after explaining that fulfillment is not guaranteed.\n - Do not purchase a number merely to test availability. Do not infer global unavailability from one provisioning response.\n\n5. Confirm and execute.\n - Show the provider, area code or exact owned number, routing destination, and whether the action may incur carrier or usage charges.\n - Obtain explicit confirmation immediately before `POST /phone-number` or another potentially chargeable mutation.\n - Validate the response for `id`, provider, number or SIP URI, status when present, and resolved route.\n\n6. Update without destroying configuration.\n - `GET /phone-number/{id}` first.\n - Build the provider-specific update DTO. Change only requested writable fields and preserve the current provider, hooks, server, fallback destination, and provider-specific settings by omission or exact carry-forward as required by the public schema.\n - Do not send response-only fields such as `id`, timestamps, or organization metadata.\n - Re-fetch the number and verify the requested route or setting.\n\n7. Handle failures precisely.\n - `400`: report the rejected field or unavailable request; correct a documented shape error before at most one retry.\n - `401`/`403`: stop for Vapi authentication or permission issues.\n - `404`: report the missing phone number, assistant, squad, or credential.\n - `5xx`: report a Vapi service failure and do not claim success.\n - Separate carrier-side ownership, credential, provisioning, or transport failures from Vapi routing configuration.\n\n## Free Vapi Number Limits\n\nVapi-hosted free numbers are for US national use and have a limit of five per account. The first free number can be requested without a payment method. Additional free numbers require a payment method on file, but the numbers themselves remain free.\n\nFree Vapi numbers support outbound calls only to US `+1` destinations and do not support international calling. Use an imported provider number or supported SIP/carrier path for international use. Do not describe free numbers as unlimited production telephony.\n\n## Payload-Only Example\n\nThis template does not provision anything:\n\n```json\n{\n \"provider\": \"vapi\",\n \"numberDesiredAreaCode\": \"<confirmed-three-digit-area-code>\",\n \"assistantId\": \"<verified-assistant-id>\",\n \"name\": \"Main Support Line\"\n}\n```\n\nRead [Provider API Procedures](references/provider-api-procedures.md) for Vapi-hosted, Twilio, Vonage, Telnyx, BYO carrier, and routing examples. Read [Phone Number API Examples](references/api-examples.md) when the user requests TypeScript, Python, or cURL implementation code. Keep placeholders out of live requests.\n\n## Public Sources\n\n- [Phone calling](https://docs.vapi.ai/phone-calling) and [Phone quickstart](https://docs.vapi.ai/quickstart/phone)\n- [Create Phone Number API](https://docs.vapi.ai/api-reference/phone-numbers/create)\n- [Free Vapi phone numbers](https://docs.vapi.ai/free-telephony)\n- [Import a Twilio number](https://docs.vapi.ai/phone-numbers/import-twilio)\n"
}SHA-256: 9c4e8a74620189ddafb8dbb810d3f8f9ed547c59f47e0e100d29bd73afadcec0