[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-twilio-twilio-regulatory-compliance-bundles":3,"mdc--k80ais-key":33,"related-org-twilio-twilio-regulatory-compliance-bundles":1390,"related-repo-twilio-twilio-regulatory-compliance-bundles":1568},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":29,"sourceUrl":31,"mdContent":32},"twilio-regulatory-compliance-bundles","manage regulatory compliance for phone numbers","Manage regulatory compliance for international phone numbers. Covers what bundles are, which countries require them, how to create End-Users and Supporting Documents, evaluate and submit bundles, fix evaluation failures, update bundles when regulations change, and ISV multi-account patterns. Use this skill when provisioning numbers outside the US.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"twilio","Twilio","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Ftwilio.png",[12,16,19,22],{"name":13,"slug":14,"type":15},"Operations","operations","tag",{"name":17,"slug":18,"type":15},"Compliance","compliance",{"name":20,"slug":21,"type":15},"Regulatory Compliance","regulatory-compliance",{"name":9,"slug":8,"type":15},25,"https:\u002F\u002Fgithub.com\u002Ftwilio\u002Fai","2026-07-17T06:06:32.053912",null,7,[],{"repoUrl":24,"stars":23,"forks":27,"topics":30,"description":26},[],"https:\u002F\u002Fgithub.com\u002Ftwilio\u002Fai\u002Ftree\u002FHEAD\u002Fskills\u002Ftwilio\u002Ftwilio-regulatory-compliance-bundles","---\nname: twilio-regulatory-compliance-bundles\ndescription: >\n  Manage regulatory compliance for international phone numbers. Covers\n  what bundles are, which countries require them, how to create End-Users\n  and Supporting Documents, evaluate and submit bundles, fix evaluation\n  failures, update bundles when regulations change, and ISV multi-account\n  patterns. Use this skill when provisioning numbers outside the US.\n---\n\n## Overview\n\nPhone numbers are national resources — many countries require **identity verification of the end-user** before provisioning. A Regulatory Bundle is a container holding an End-User record + Supporting Documents that proves your right to use numbers in a specific country.\n\n**Not all countries require bundles** — check the [Regulatory Guidelines page](https:\u002F\u002Fwww.twilio.com\u002Fen-us\u002Fguidelines\u002Fregulatory) for country-specific requirements. If a country requires a bundle, provisioning fails without one.\n\n---\n\n## Key Concepts\n\n| Resource | What it is |\n|----------|-----------|\n| **Regulation** | Country-specific requirement defining what End-User types and document types are needed |\n| **Bundle** | Container that holds an End-User + Supporting Documents for a specific regulation |\n| **End-User** | The entity answering calls or receiving messages (`individual` or `business` type) |\n| **Supporting Document** | Identity\u002Faddress verification documents (business registration, proof of address, etc.) |\n| **Evaluation** | Synchronous check that validates a bundle against its regulation before submission |\n| **Item Assignment** | Links an End-User or Supporting Document to a Bundle |\n\n---\n\n## Quickstart: Provision a Number with a Bundle\n\n### Step 1 — Query the Regulation\n\nFind out what's required for the country and number type:\n\n**Python**\n```python\nimport os, requests\n\naccount_sid = os.environ[\"TWILIO_ACCOUNT_SID\"]\nauth_token = os.environ[\"TWILIO_AUTH_TOKEN\"]\n\n# What does Germany require for local business numbers?\nregulations = requests.get(\n    \"https:\u002F\u002Fnumbers.twilio.com\u002Fv2\u002FRegulatoryCompliance\u002FRegulations\",\n    params={\"IsoCountry\": \"DE\", \"NumberType\": \"local\", \"EndUserType\": \"business\"},\n    auth=(account_sid, auth_token)\n).json()\n\nfor reg in regulations[\"results\"]:\n    print(f\"Regulation: {reg['sid']}\")\n    print(f\"Requirements: {reg['requirements']}\")\n```\n\n### Step 2 — Create an End-User\n\n**Python**\n```python\nend_user = requests.post(\n    \"https:\u002F\u002Fnumbers.twilio.com\u002Fv2\u002FRegulatoryCompliance\u002FEndUsers\",\n    data={\n        \"FriendlyName\": \"Acme GmbH\",\n        \"Type\": \"business\",\n        \"Attributes\": '{\"business_name\": \"Acme GmbH\", \"business_registration_number\": \"HRB12345\"}'\n    },\n    auth=(account_sid, auth_token)\n).json()\n```\n\n### Step 3 — Upload Supporting Documents\n\n**Python**\n```python\ndocument = requests.post(\n    \"https:\u002F\u002Fnumbers.twilio.com\u002Fv2\u002FRegulatoryCompliance\u002FSupportingDocuments\",\n    data={\n        \"FriendlyName\": \"Acme Business Registration\",\n        \"Type\": \"business_registration\",\n        \"Attributes\": '{\"business_name\": \"Acme GmbH\"}'\n    },\n    auth=(account_sid, auth_token)\n).json()\n```\n\n### Step 4 — Create a Bundle and Assign Items\n\n**Python**\n```python\n# Create the bundle\nbundle = requests.post(\n    \"https:\u002F\u002Fnumbers.twilio.com\u002Fv2\u002FRegulatoryCompliance\u002FBundles\",\n    data={\n        \"FriendlyName\": \"Germany Local - Acme\",\n        \"RegulationSid\": regulations[\"results\"][0][\"sid\"],\n        \"IsoCountry\": \"DE\",\n        \"EndUserType\": \"business\",\n        \"Email\": \"compliance@acme.com\"\n    },\n    auth=(account_sid, auth_token)\n).json()\n\nbundle_sid = bundle[\"sid\"]\n\n# Assign End-User to bundle\nrequests.post(\n    f\"https:\u002F\u002Fnumbers.twilio.com\u002Fv2\u002FRegulatoryCompliance\u002FBundles\u002F{bundle_sid}\u002FItemAssignments\",\n    data={\"ObjectSid\": end_user[\"sid\"]},\n    auth=(account_sid, auth_token)\n)\n\n# Assign Supporting Document to bundle\nrequests.post(\n    f\"https:\u002F\u002Fnumbers.twilio.com\u002Fv2\u002FRegulatoryCompliance\u002FBundles\u002F{bundle_sid}\u002FItemAssignments\",\n    data={\"ObjectSid\": document[\"sid\"]},\n    auth=(account_sid, auth_token)\n)\n```\n\n### Step 5 — Evaluate and Submit\n\n**Python**\n```python\n# Run evaluation (synchronous — returns field-level failures)\nevaluation = requests.post(\n    f\"https:\u002F\u002Fnumbers.twilio.com\u002Fv2\u002FRegulatoryCompliance\u002FBundles\u002F{bundle_sid}\u002FEvaluations\",\n    auth=(account_sid, auth_token)\n).json()\n\nif evaluation[\"status\"] == \"noncompliant\":\n    for violation in evaluation[\"results\"]:\n        print(f\"Field: {violation['friendly_name']} — {violation['description']}\")\n    # Fix the issues, then re-evaluate\nelse:\n    # Submit for review\n    requests.post(\n        f\"https:\u002F\u002Fnumbers.twilio.com\u002Fv2\u002FRegulatoryCompliance\u002FBundles\u002F{bundle_sid}\",\n        data={\"Status\": \"pending-review\"},\n        auth=(account_sid, auth_token)\n    )\n```\n\n### Step 6 — Provision Number with Bundle\n\nOnce the bundle is approved:\n\n**Python**\n```python\nfrom twilio.rest import Client\nclient = Client(account_sid, auth_token)\n\nnumber = client.incoming_phone_numbers.create(\n    phone_number=\"+4930xxxxxxx\",\n    bundle_sid=bundle_sid\n)\n```\n\n---\n\n## Updating an Approved Bundle\n\nWhen regulations change, you'll receive an email. Update without deprovisioning numbers:\n\n1. **Copy** the approved bundle into a mutable state via the Bundle Copies resource\n2. **Update** the End-User or Supporting Document on the copy\n3. **Re-evaluate** the copy\n4. **Replace** items in the original bundle via the Replace Items resource\n\nPhone numbers remain provisioned throughout this process.\n\n**Alternative:** Create a new bundle → get it approved → remap numbers to the new bundle.\n\n**Docs:** [Bundle Copies](https:\u002F\u002Fwww.twilio.com\u002Fdocs\u002Fphone-numbers\u002Fregulatory\u002Fapi\u002Fbundles-copies) | [Replace Items](https:\u002F\u002Fwww.twilio.com\u002Fdocs\u002Fphone-numbers\u002Fregulatory\u002Fapi\u002Fbundles-replace-items)\n\n---\n\n## ISV \u002F Multi-Account Pattern\n\nIf managing Twilio subaccounts for multiple customers:\n\n- **Each customer needs their own bundle** — Do not reuse your business information in customer bundles\n- Use the **Bundle Clones** resource to duplicate bundle structures across subaccounts\n- End-User records must reflect the actual end-user (your customer), not you\n\n**Docs:** [Bundle Clones](https:\u002F\u002Fwww.twilio.com\u002Fdocs\u002Fphone-numbers\u002Fregulatory\u002Fapi\u002Fbundles-clones)\n\n---\n\n## CANNOT\n\n- **Cannot provision numbers without required bundles** — Provisioning fails immediately. Check Regulations resource first.\n- **Cannot reuse one bundle across different number types** — Each bundle is tied to a specific regulation (country + number type + end-user type).\n- **Locality-matching addresses required in ~33 countries** — Germany (and others) require the End-User address to be within the region of the phone number prefix, not just any address in the country. US HQ address will fail for a Berlin number.\n- **Cannot hardcode regulation requirements** — Regulations change periodically. Always query the Regulations resource dynamically.\n- **Do not create a new bundle when evaluation fails** — Fix the existing bundle. Creating new ones wastes time and clutters your account.\n- **Cannot reuse your ISV info in customer bundles** — Bundles must represent the actual end-user. Twilio audits this.\n- **Some markets are business-only** — Individual provisioning not allowed. Check the `EndUserType` in the Regulation.\n\n---\n\n## Next Steps\n\n- **Choose number type before provisioning:** `twilio-numbers-senders`\n- **Register numbers after provisioning:** `twilio-compliance-onboarding`\n- **Country-specific requirements:** [Regulatory Guidelines](https:\u002F\u002Fwww.twilio.com\u002Fen-us\u002Fguidelines\u002Fregulatory)\n- **API reference:** [Regulatory Compliance API](https:\u002F\u002Fwww.twilio.com\u002Fdocs\u002Fphone-numbers\u002Fregulatory\u002Fapi)\n",{"data":34,"body":35},{"name":4,"description":6},{"type":36,"children":37},"root",[38,47,61,82,86,92,233,236,242,249,254,262,408,414,421,498,504,511,586,592,599,830,836,843,983,989,994,1001,1062,1065,1071,1076,1121,1126,1136,1162,1165,1171,1176,1207,1221,1224,1230,1311,1314,1320,1384],{"type":39,"tag":40,"props":41,"children":43},"element","h2",{"id":42},"overview",[44],{"type":45,"value":46},"text","Overview",{"type":39,"tag":48,"props":49,"children":50},"p",{},[51,53,59],{"type":45,"value":52},"Phone numbers are national resources — many countries require ",{"type":39,"tag":54,"props":55,"children":56},"strong",{},[57],{"type":45,"value":58},"identity verification of the end-user",{"type":45,"value":60}," before provisioning. A Regulatory Bundle is a container holding an End-User record + Supporting Documents that proves your right to use numbers in a specific country.",{"type":39,"tag":48,"props":62,"children":63},{},[64,69,71,80],{"type":39,"tag":54,"props":65,"children":66},{},[67],{"type":45,"value":68},"Not all countries require bundles",{"type":45,"value":70}," — check the ",{"type":39,"tag":72,"props":73,"children":77},"a",{"href":74,"rel":75},"https:\u002F\u002Fwww.twilio.com\u002Fen-us\u002Fguidelines\u002Fregulatory",[76],"nofollow",[78],{"type":45,"value":79},"Regulatory Guidelines page",{"type":45,"value":81}," for country-specific requirements. If a country requires a bundle, provisioning fails without one.",{"type":39,"tag":83,"props":84,"children":85},"hr",{},[],{"type":39,"tag":40,"props":87,"children":89},{"id":88},"key-concepts",[90],{"type":45,"value":91},"Key Concepts",{"type":39,"tag":93,"props":94,"children":95},"table",{},[96,115],{"type":39,"tag":97,"props":98,"children":99},"thead",{},[100],{"type":39,"tag":101,"props":102,"children":103},"tr",{},[104,110],{"type":39,"tag":105,"props":106,"children":107},"th",{},[108],{"type":45,"value":109},"Resource",{"type":39,"tag":105,"props":111,"children":112},{},[113],{"type":45,"value":114},"What it is",{"type":39,"tag":116,"props":117,"children":118},"tbody",{},[119,136,152,185,201,217],{"type":39,"tag":101,"props":120,"children":121},{},[122,131],{"type":39,"tag":123,"props":124,"children":125},"td",{},[126],{"type":39,"tag":54,"props":127,"children":128},{},[129],{"type":45,"value":130},"Regulation",{"type":39,"tag":123,"props":132,"children":133},{},[134],{"type":45,"value":135},"Country-specific requirement defining what End-User types and document types are needed",{"type":39,"tag":101,"props":137,"children":138},{},[139,147],{"type":39,"tag":123,"props":140,"children":141},{},[142],{"type":39,"tag":54,"props":143,"children":144},{},[145],{"type":45,"value":146},"Bundle",{"type":39,"tag":123,"props":148,"children":149},{},[150],{"type":45,"value":151},"Container that holds an End-User + Supporting Documents for a specific regulation",{"type":39,"tag":101,"props":153,"children":154},{},[155,163],{"type":39,"tag":123,"props":156,"children":157},{},[158],{"type":39,"tag":54,"props":159,"children":160},{},[161],{"type":45,"value":162},"End-User",{"type":39,"tag":123,"props":164,"children":165},{},[166,168,175,177,183],{"type":45,"value":167},"The entity answering calls or receiving messages (",{"type":39,"tag":169,"props":170,"children":172},"code",{"className":171},[],[173],{"type":45,"value":174},"individual",{"type":45,"value":176}," or ",{"type":39,"tag":169,"props":178,"children":180},{"className":179},[],[181],{"type":45,"value":182},"business",{"type":45,"value":184}," type)",{"type":39,"tag":101,"props":186,"children":187},{},[188,196],{"type":39,"tag":123,"props":189,"children":190},{},[191],{"type":39,"tag":54,"props":192,"children":193},{},[194],{"type":45,"value":195},"Supporting Document",{"type":39,"tag":123,"props":197,"children":198},{},[199],{"type":45,"value":200},"Identity\u002Faddress verification documents (business registration, proof of address, etc.)",{"type":39,"tag":101,"props":202,"children":203},{},[204,212],{"type":39,"tag":123,"props":205,"children":206},{},[207],{"type":39,"tag":54,"props":208,"children":209},{},[210],{"type":45,"value":211},"Evaluation",{"type":39,"tag":123,"props":213,"children":214},{},[215],{"type":45,"value":216},"Synchronous check that validates a bundle against its regulation before submission",{"type":39,"tag":101,"props":218,"children":219},{},[220,228],{"type":39,"tag":123,"props":221,"children":222},{},[223],{"type":39,"tag":54,"props":224,"children":225},{},[226],{"type":45,"value":227},"Item Assignment",{"type":39,"tag":123,"props":229,"children":230},{},[231],{"type":45,"value":232},"Links an End-User or Supporting Document to a Bundle",{"type":39,"tag":83,"props":234,"children":235},{},[],{"type":39,"tag":40,"props":237,"children":239},{"id":238},"quickstart-provision-a-number-with-a-bundle",[240],{"type":45,"value":241},"Quickstart: Provision a Number with a Bundle",{"type":39,"tag":243,"props":244,"children":246},"h3",{"id":245},"step-1-query-the-regulation",[247],{"type":45,"value":248},"Step 1 — Query the Regulation",{"type":39,"tag":48,"props":250,"children":251},{},[252],{"type":45,"value":253},"Find out what's required for the country and number type:",{"type":39,"tag":48,"props":255,"children":256},{},[257],{"type":39,"tag":54,"props":258,"children":259},{},[260],{"type":45,"value":261},"Python",{"type":39,"tag":263,"props":264,"children":269},"pre",{"className":265,"code":266,"language":267,"meta":268,"style":268},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import os, requests\n\naccount_sid = os.environ[\"TWILIO_ACCOUNT_SID\"]\nauth_token = os.environ[\"TWILIO_AUTH_TOKEN\"]\n\n# What does Germany require for local business numbers?\nregulations = requests.get(\n    \"https:\u002F\u002Fnumbers.twilio.com\u002Fv2\u002FRegulatoryCompliance\u002FRegulations\",\n    params={\"IsoCountry\": \"DE\", \"NumberType\": \"local\", \"EndUserType\": \"business\"},\n    auth=(account_sid, auth_token)\n).json()\n\nfor reg in regulations[\"results\"]:\n    print(f\"Regulation: {reg['sid']}\")\n    print(f\"Requirements: {reg['requirements']}\")\n","python","",[270],{"type":39,"tag":169,"props":271,"children":272},{"__ignoreMap":268},[273,284,294,303,312,320,329,337,346,355,364,373,381,390,399],{"type":39,"tag":274,"props":275,"children":278},"span",{"class":276,"line":277},"line",1,[279],{"type":39,"tag":274,"props":280,"children":281},{},[282],{"type":45,"value":283},"import os, requests\n",{"type":39,"tag":274,"props":285,"children":287},{"class":276,"line":286},2,[288],{"type":39,"tag":274,"props":289,"children":291},{"emptyLinePlaceholder":290},true,[292],{"type":45,"value":293},"\n",{"type":39,"tag":274,"props":295,"children":297},{"class":276,"line":296},3,[298],{"type":39,"tag":274,"props":299,"children":300},{},[301],{"type":45,"value":302},"account_sid = os.environ[\"TWILIO_ACCOUNT_SID\"]\n",{"type":39,"tag":274,"props":304,"children":306},{"class":276,"line":305},4,[307],{"type":39,"tag":274,"props":308,"children":309},{},[310],{"type":45,"value":311},"auth_token = os.environ[\"TWILIO_AUTH_TOKEN\"]\n",{"type":39,"tag":274,"props":313,"children":315},{"class":276,"line":314},5,[316],{"type":39,"tag":274,"props":317,"children":318},{"emptyLinePlaceholder":290},[319],{"type":45,"value":293},{"type":39,"tag":274,"props":321,"children":323},{"class":276,"line":322},6,[324],{"type":39,"tag":274,"props":325,"children":326},{},[327],{"type":45,"value":328},"# What does Germany require for local business numbers?\n",{"type":39,"tag":274,"props":330,"children":331},{"class":276,"line":27},[332],{"type":39,"tag":274,"props":333,"children":334},{},[335],{"type":45,"value":336},"regulations = requests.get(\n",{"type":39,"tag":274,"props":338,"children":340},{"class":276,"line":339},8,[341],{"type":39,"tag":274,"props":342,"children":343},{},[344],{"type":45,"value":345},"    \"https:\u002F\u002Fnumbers.twilio.com\u002Fv2\u002FRegulatoryCompliance\u002FRegulations\",\n",{"type":39,"tag":274,"props":347,"children":349},{"class":276,"line":348},9,[350],{"type":39,"tag":274,"props":351,"children":352},{},[353],{"type":45,"value":354},"    params={\"IsoCountry\": \"DE\", \"NumberType\": \"local\", \"EndUserType\": \"business\"},\n",{"type":39,"tag":274,"props":356,"children":358},{"class":276,"line":357},10,[359],{"type":39,"tag":274,"props":360,"children":361},{},[362],{"type":45,"value":363},"    auth=(account_sid, auth_token)\n",{"type":39,"tag":274,"props":365,"children":367},{"class":276,"line":366},11,[368],{"type":39,"tag":274,"props":369,"children":370},{},[371],{"type":45,"value":372},").json()\n",{"type":39,"tag":274,"props":374,"children":376},{"class":276,"line":375},12,[377],{"type":39,"tag":274,"props":378,"children":379},{"emptyLinePlaceholder":290},[380],{"type":45,"value":293},{"type":39,"tag":274,"props":382,"children":384},{"class":276,"line":383},13,[385],{"type":39,"tag":274,"props":386,"children":387},{},[388],{"type":45,"value":389},"for reg in regulations[\"results\"]:\n",{"type":39,"tag":274,"props":391,"children":393},{"class":276,"line":392},14,[394],{"type":39,"tag":274,"props":395,"children":396},{},[397],{"type":45,"value":398},"    print(f\"Regulation: {reg['sid']}\")\n",{"type":39,"tag":274,"props":400,"children":402},{"class":276,"line":401},15,[403],{"type":39,"tag":274,"props":404,"children":405},{},[406],{"type":45,"value":407},"    print(f\"Requirements: {reg['requirements']}\")\n",{"type":39,"tag":243,"props":409,"children":411},{"id":410},"step-2-create-an-end-user",[412],{"type":45,"value":413},"Step 2 — Create an End-User",{"type":39,"tag":48,"props":415,"children":416},{},[417],{"type":39,"tag":54,"props":418,"children":419},{},[420],{"type":45,"value":261},{"type":39,"tag":263,"props":422,"children":424},{"className":265,"code":423,"language":267,"meta":268,"style":268},"end_user = requests.post(\n    \"https:\u002F\u002Fnumbers.twilio.com\u002Fv2\u002FRegulatoryCompliance\u002FEndUsers\",\n    data={\n        \"FriendlyName\": \"Acme GmbH\",\n        \"Type\": \"business\",\n        \"Attributes\": '{\"business_name\": \"Acme GmbH\", \"business_registration_number\": \"HRB12345\"}'\n    },\n    auth=(account_sid, auth_token)\n).json()\n",[425],{"type":39,"tag":169,"props":426,"children":427},{"__ignoreMap":268},[428,436,444,452,460,468,476,484,491],{"type":39,"tag":274,"props":429,"children":430},{"class":276,"line":277},[431],{"type":39,"tag":274,"props":432,"children":433},{},[434],{"type":45,"value":435},"end_user = requests.post(\n",{"type":39,"tag":274,"props":437,"children":438},{"class":276,"line":286},[439],{"type":39,"tag":274,"props":440,"children":441},{},[442],{"type":45,"value":443},"    \"https:\u002F\u002Fnumbers.twilio.com\u002Fv2\u002FRegulatoryCompliance\u002FEndUsers\",\n",{"type":39,"tag":274,"props":445,"children":446},{"class":276,"line":296},[447],{"type":39,"tag":274,"props":448,"children":449},{},[450],{"type":45,"value":451},"    data={\n",{"type":39,"tag":274,"props":453,"children":454},{"class":276,"line":305},[455],{"type":39,"tag":274,"props":456,"children":457},{},[458],{"type":45,"value":459},"        \"FriendlyName\": \"Acme GmbH\",\n",{"type":39,"tag":274,"props":461,"children":462},{"class":276,"line":314},[463],{"type":39,"tag":274,"props":464,"children":465},{},[466],{"type":45,"value":467},"        \"Type\": \"business\",\n",{"type":39,"tag":274,"props":469,"children":470},{"class":276,"line":322},[471],{"type":39,"tag":274,"props":472,"children":473},{},[474],{"type":45,"value":475},"        \"Attributes\": '{\"business_name\": \"Acme GmbH\", \"business_registration_number\": \"HRB12345\"}'\n",{"type":39,"tag":274,"props":477,"children":478},{"class":276,"line":27},[479],{"type":39,"tag":274,"props":480,"children":481},{},[482],{"type":45,"value":483},"    },\n",{"type":39,"tag":274,"props":485,"children":486},{"class":276,"line":339},[487],{"type":39,"tag":274,"props":488,"children":489},{},[490],{"type":45,"value":363},{"type":39,"tag":274,"props":492,"children":493},{"class":276,"line":348},[494],{"type":39,"tag":274,"props":495,"children":496},{},[497],{"type":45,"value":372},{"type":39,"tag":243,"props":499,"children":501},{"id":500},"step-3-upload-supporting-documents",[502],{"type":45,"value":503},"Step 3 — Upload Supporting Documents",{"type":39,"tag":48,"props":505,"children":506},{},[507],{"type":39,"tag":54,"props":508,"children":509},{},[510],{"type":45,"value":261},{"type":39,"tag":263,"props":512,"children":514},{"className":265,"code":513,"language":267,"meta":268,"style":268},"document = requests.post(\n    \"https:\u002F\u002Fnumbers.twilio.com\u002Fv2\u002FRegulatoryCompliance\u002FSupportingDocuments\",\n    data={\n        \"FriendlyName\": \"Acme Business Registration\",\n        \"Type\": \"business_registration\",\n        \"Attributes\": '{\"business_name\": \"Acme GmbH\"}'\n    },\n    auth=(account_sid, auth_token)\n).json()\n",[515],{"type":39,"tag":169,"props":516,"children":517},{"__ignoreMap":268},[518,526,534,541,549,557,565,572,579],{"type":39,"tag":274,"props":519,"children":520},{"class":276,"line":277},[521],{"type":39,"tag":274,"props":522,"children":523},{},[524],{"type":45,"value":525},"document = requests.post(\n",{"type":39,"tag":274,"props":527,"children":528},{"class":276,"line":286},[529],{"type":39,"tag":274,"props":530,"children":531},{},[532],{"type":45,"value":533},"    \"https:\u002F\u002Fnumbers.twilio.com\u002Fv2\u002FRegulatoryCompliance\u002FSupportingDocuments\",\n",{"type":39,"tag":274,"props":535,"children":536},{"class":276,"line":296},[537],{"type":39,"tag":274,"props":538,"children":539},{},[540],{"type":45,"value":451},{"type":39,"tag":274,"props":542,"children":543},{"class":276,"line":305},[544],{"type":39,"tag":274,"props":545,"children":546},{},[547],{"type":45,"value":548},"        \"FriendlyName\": \"Acme Business Registration\",\n",{"type":39,"tag":274,"props":550,"children":551},{"class":276,"line":314},[552],{"type":39,"tag":274,"props":553,"children":554},{},[555],{"type":45,"value":556},"        \"Type\": \"business_registration\",\n",{"type":39,"tag":274,"props":558,"children":559},{"class":276,"line":322},[560],{"type":39,"tag":274,"props":561,"children":562},{},[563],{"type":45,"value":564},"        \"Attributes\": '{\"business_name\": \"Acme GmbH\"}'\n",{"type":39,"tag":274,"props":566,"children":567},{"class":276,"line":27},[568],{"type":39,"tag":274,"props":569,"children":570},{},[571],{"type":45,"value":483},{"type":39,"tag":274,"props":573,"children":574},{"class":276,"line":339},[575],{"type":39,"tag":274,"props":576,"children":577},{},[578],{"type":45,"value":363},{"type":39,"tag":274,"props":580,"children":581},{"class":276,"line":348},[582],{"type":39,"tag":274,"props":583,"children":584},{},[585],{"type":45,"value":372},{"type":39,"tag":243,"props":587,"children":589},{"id":588},"step-4-create-a-bundle-and-assign-items",[590],{"type":45,"value":591},"Step 4 — Create a Bundle and Assign Items",{"type":39,"tag":48,"props":593,"children":594},{},[595],{"type":39,"tag":54,"props":596,"children":597},{},[598],{"type":45,"value":261},{"type":39,"tag":263,"props":600,"children":602},{"className":265,"code":601,"language":267,"meta":268,"style":268},"# Create the bundle\nbundle = requests.post(\n    \"https:\u002F\u002Fnumbers.twilio.com\u002Fv2\u002FRegulatoryCompliance\u002FBundles\",\n    data={\n        \"FriendlyName\": \"Germany Local - Acme\",\n        \"RegulationSid\": regulations[\"results\"][0][\"sid\"],\n        \"IsoCountry\": \"DE\",\n        \"EndUserType\": \"business\",\n        \"Email\": \"compliance@acme.com\"\n    },\n    auth=(account_sid, auth_token)\n).json()\n\nbundle_sid = bundle[\"sid\"]\n\n# Assign End-User to bundle\nrequests.post(\n    f\"https:\u002F\u002Fnumbers.twilio.com\u002Fv2\u002FRegulatoryCompliance\u002FBundles\u002F{bundle_sid}\u002FItemAssignments\",\n    data={\"ObjectSid\": end_user[\"sid\"]},\n    auth=(account_sid, auth_token)\n)\n\n# Assign Supporting Document to bundle\nrequests.post(\n    f\"https:\u002F\u002Fnumbers.twilio.com\u002Fv2\u002FRegulatoryCompliance\u002FBundles\u002F{bundle_sid}\u002FItemAssignments\",\n    data={\"ObjectSid\": document[\"sid\"]},\n    auth=(account_sid, auth_token)\n)\n",[603],{"type":39,"tag":169,"props":604,"children":605},{"__ignoreMap":268},[606,614,622,630,637,645,653,661,669,677,684,691,698,705,713,720,729,738,747,756,764,773,781,790,798,805,814,822],{"type":39,"tag":274,"props":607,"children":608},{"class":276,"line":277},[609],{"type":39,"tag":274,"props":610,"children":611},{},[612],{"type":45,"value":613},"# Create the bundle\n",{"type":39,"tag":274,"props":615,"children":616},{"class":276,"line":286},[617],{"type":39,"tag":274,"props":618,"children":619},{},[620],{"type":45,"value":621},"bundle = requests.post(\n",{"type":39,"tag":274,"props":623,"children":624},{"class":276,"line":296},[625],{"type":39,"tag":274,"props":626,"children":627},{},[628],{"type":45,"value":629},"    \"https:\u002F\u002Fnumbers.twilio.com\u002Fv2\u002FRegulatoryCompliance\u002FBundles\",\n",{"type":39,"tag":274,"props":631,"children":632},{"class":276,"line":305},[633],{"type":39,"tag":274,"props":634,"children":635},{},[636],{"type":45,"value":451},{"type":39,"tag":274,"props":638,"children":639},{"class":276,"line":314},[640],{"type":39,"tag":274,"props":641,"children":642},{},[643],{"type":45,"value":644},"        \"FriendlyName\": \"Germany Local - Acme\",\n",{"type":39,"tag":274,"props":646,"children":647},{"class":276,"line":322},[648],{"type":39,"tag":274,"props":649,"children":650},{},[651],{"type":45,"value":652},"        \"RegulationSid\": regulations[\"results\"][0][\"sid\"],\n",{"type":39,"tag":274,"props":654,"children":655},{"class":276,"line":27},[656],{"type":39,"tag":274,"props":657,"children":658},{},[659],{"type":45,"value":660},"        \"IsoCountry\": \"DE\",\n",{"type":39,"tag":274,"props":662,"children":663},{"class":276,"line":339},[664],{"type":39,"tag":274,"props":665,"children":666},{},[667],{"type":45,"value":668},"        \"EndUserType\": \"business\",\n",{"type":39,"tag":274,"props":670,"children":671},{"class":276,"line":348},[672],{"type":39,"tag":274,"props":673,"children":674},{},[675],{"type":45,"value":676},"        \"Email\": \"compliance@acme.com\"\n",{"type":39,"tag":274,"props":678,"children":679},{"class":276,"line":357},[680],{"type":39,"tag":274,"props":681,"children":682},{},[683],{"type":45,"value":483},{"type":39,"tag":274,"props":685,"children":686},{"class":276,"line":366},[687],{"type":39,"tag":274,"props":688,"children":689},{},[690],{"type":45,"value":363},{"type":39,"tag":274,"props":692,"children":693},{"class":276,"line":375},[694],{"type":39,"tag":274,"props":695,"children":696},{},[697],{"type":45,"value":372},{"type":39,"tag":274,"props":699,"children":700},{"class":276,"line":383},[701],{"type":39,"tag":274,"props":702,"children":703},{"emptyLinePlaceholder":290},[704],{"type":45,"value":293},{"type":39,"tag":274,"props":706,"children":707},{"class":276,"line":392},[708],{"type":39,"tag":274,"props":709,"children":710},{},[711],{"type":45,"value":712},"bundle_sid = bundle[\"sid\"]\n",{"type":39,"tag":274,"props":714,"children":715},{"class":276,"line":401},[716],{"type":39,"tag":274,"props":717,"children":718},{"emptyLinePlaceholder":290},[719],{"type":45,"value":293},{"type":39,"tag":274,"props":721,"children":723},{"class":276,"line":722},16,[724],{"type":39,"tag":274,"props":725,"children":726},{},[727],{"type":45,"value":728},"# Assign End-User to bundle\n",{"type":39,"tag":274,"props":730,"children":732},{"class":276,"line":731},17,[733],{"type":39,"tag":274,"props":734,"children":735},{},[736],{"type":45,"value":737},"requests.post(\n",{"type":39,"tag":274,"props":739,"children":741},{"class":276,"line":740},18,[742],{"type":39,"tag":274,"props":743,"children":744},{},[745],{"type":45,"value":746},"    f\"https:\u002F\u002Fnumbers.twilio.com\u002Fv2\u002FRegulatoryCompliance\u002FBundles\u002F{bundle_sid}\u002FItemAssignments\",\n",{"type":39,"tag":274,"props":748,"children":750},{"class":276,"line":749},19,[751],{"type":39,"tag":274,"props":752,"children":753},{},[754],{"type":45,"value":755},"    data={\"ObjectSid\": end_user[\"sid\"]},\n",{"type":39,"tag":274,"props":757,"children":759},{"class":276,"line":758},20,[760],{"type":39,"tag":274,"props":761,"children":762},{},[763],{"type":45,"value":363},{"type":39,"tag":274,"props":765,"children":767},{"class":276,"line":766},21,[768],{"type":39,"tag":274,"props":769,"children":770},{},[771],{"type":45,"value":772},")\n",{"type":39,"tag":274,"props":774,"children":776},{"class":276,"line":775},22,[777],{"type":39,"tag":274,"props":778,"children":779},{"emptyLinePlaceholder":290},[780],{"type":45,"value":293},{"type":39,"tag":274,"props":782,"children":784},{"class":276,"line":783},23,[785],{"type":39,"tag":274,"props":786,"children":787},{},[788],{"type":45,"value":789},"# Assign Supporting Document to bundle\n",{"type":39,"tag":274,"props":791,"children":793},{"class":276,"line":792},24,[794],{"type":39,"tag":274,"props":795,"children":796},{},[797],{"type":45,"value":737},{"type":39,"tag":274,"props":799,"children":800},{"class":276,"line":23},[801],{"type":39,"tag":274,"props":802,"children":803},{},[804],{"type":45,"value":746},{"type":39,"tag":274,"props":806,"children":808},{"class":276,"line":807},26,[809],{"type":39,"tag":274,"props":810,"children":811},{},[812],{"type":45,"value":813},"    data={\"ObjectSid\": document[\"sid\"]},\n",{"type":39,"tag":274,"props":815,"children":817},{"class":276,"line":816},27,[818],{"type":39,"tag":274,"props":819,"children":820},{},[821],{"type":45,"value":363},{"type":39,"tag":274,"props":823,"children":825},{"class":276,"line":824},28,[826],{"type":39,"tag":274,"props":827,"children":828},{},[829],{"type":45,"value":772},{"type":39,"tag":243,"props":831,"children":833},{"id":832},"step-5-evaluate-and-submit",[834],{"type":45,"value":835},"Step 5 — Evaluate and Submit",{"type":39,"tag":48,"props":837,"children":838},{},[839],{"type":39,"tag":54,"props":840,"children":841},{},[842],{"type":45,"value":261},{"type":39,"tag":263,"props":844,"children":846},{"className":265,"code":845,"language":267,"meta":268,"style":268},"# Run evaluation (synchronous — returns field-level failures)\nevaluation = requests.post(\n    f\"https:\u002F\u002Fnumbers.twilio.com\u002Fv2\u002FRegulatoryCompliance\u002FBundles\u002F{bundle_sid}\u002FEvaluations\",\n    auth=(account_sid, auth_token)\n).json()\n\nif evaluation[\"status\"] == \"noncompliant\":\n    for violation in evaluation[\"results\"]:\n        print(f\"Field: {violation['friendly_name']} — {violation['description']}\")\n    # Fix the issues, then re-evaluate\nelse:\n    # Submit for review\n    requests.post(\n        f\"https:\u002F\u002Fnumbers.twilio.com\u002Fv2\u002FRegulatoryCompliance\u002FBundles\u002F{bundle_sid}\",\n        data={\"Status\": \"pending-review\"},\n        auth=(account_sid, auth_token)\n    )\n",[847],{"type":39,"tag":169,"props":848,"children":849},{"__ignoreMap":268},[850,858,866,874,881,888,895,903,911,919,927,935,943,951,959,967,975],{"type":39,"tag":274,"props":851,"children":852},{"class":276,"line":277},[853],{"type":39,"tag":274,"props":854,"children":855},{},[856],{"type":45,"value":857},"# Run evaluation (synchronous — returns field-level failures)\n",{"type":39,"tag":274,"props":859,"children":860},{"class":276,"line":286},[861],{"type":39,"tag":274,"props":862,"children":863},{},[864],{"type":45,"value":865},"evaluation = requests.post(\n",{"type":39,"tag":274,"props":867,"children":868},{"class":276,"line":296},[869],{"type":39,"tag":274,"props":870,"children":871},{},[872],{"type":45,"value":873},"    f\"https:\u002F\u002Fnumbers.twilio.com\u002Fv2\u002FRegulatoryCompliance\u002FBundles\u002F{bundle_sid}\u002FEvaluations\",\n",{"type":39,"tag":274,"props":875,"children":876},{"class":276,"line":305},[877],{"type":39,"tag":274,"props":878,"children":879},{},[880],{"type":45,"value":363},{"type":39,"tag":274,"props":882,"children":883},{"class":276,"line":314},[884],{"type":39,"tag":274,"props":885,"children":886},{},[887],{"type":45,"value":372},{"type":39,"tag":274,"props":889,"children":890},{"class":276,"line":322},[891],{"type":39,"tag":274,"props":892,"children":893},{"emptyLinePlaceholder":290},[894],{"type":45,"value":293},{"type":39,"tag":274,"props":896,"children":897},{"class":276,"line":27},[898],{"type":39,"tag":274,"props":899,"children":900},{},[901],{"type":45,"value":902},"if evaluation[\"status\"] == \"noncompliant\":\n",{"type":39,"tag":274,"props":904,"children":905},{"class":276,"line":339},[906],{"type":39,"tag":274,"props":907,"children":908},{},[909],{"type":45,"value":910},"    for violation in evaluation[\"results\"]:\n",{"type":39,"tag":274,"props":912,"children":913},{"class":276,"line":348},[914],{"type":39,"tag":274,"props":915,"children":916},{},[917],{"type":45,"value":918},"        print(f\"Field: {violation['friendly_name']} — {violation['description']}\")\n",{"type":39,"tag":274,"props":920,"children":921},{"class":276,"line":357},[922],{"type":39,"tag":274,"props":923,"children":924},{},[925],{"type":45,"value":926},"    # Fix the issues, then re-evaluate\n",{"type":39,"tag":274,"props":928,"children":929},{"class":276,"line":366},[930],{"type":39,"tag":274,"props":931,"children":932},{},[933],{"type":45,"value":934},"else:\n",{"type":39,"tag":274,"props":936,"children":937},{"class":276,"line":375},[938],{"type":39,"tag":274,"props":939,"children":940},{},[941],{"type":45,"value":942},"    # Submit for review\n",{"type":39,"tag":274,"props":944,"children":945},{"class":276,"line":383},[946],{"type":39,"tag":274,"props":947,"children":948},{},[949],{"type":45,"value":950},"    requests.post(\n",{"type":39,"tag":274,"props":952,"children":953},{"class":276,"line":392},[954],{"type":39,"tag":274,"props":955,"children":956},{},[957],{"type":45,"value":958},"        f\"https:\u002F\u002Fnumbers.twilio.com\u002Fv2\u002FRegulatoryCompliance\u002FBundles\u002F{bundle_sid}\",\n",{"type":39,"tag":274,"props":960,"children":961},{"class":276,"line":401},[962],{"type":39,"tag":274,"props":963,"children":964},{},[965],{"type":45,"value":966},"        data={\"Status\": \"pending-review\"},\n",{"type":39,"tag":274,"props":968,"children":969},{"class":276,"line":722},[970],{"type":39,"tag":274,"props":971,"children":972},{},[973],{"type":45,"value":974},"        auth=(account_sid, auth_token)\n",{"type":39,"tag":274,"props":976,"children":977},{"class":276,"line":731},[978],{"type":39,"tag":274,"props":979,"children":980},{},[981],{"type":45,"value":982},"    )\n",{"type":39,"tag":243,"props":984,"children":986},{"id":985},"step-6-provision-number-with-bundle",[987],{"type":45,"value":988},"Step 6 — Provision Number with Bundle",{"type":39,"tag":48,"props":990,"children":991},{},[992],{"type":45,"value":993},"Once the bundle is approved:",{"type":39,"tag":48,"props":995,"children":996},{},[997],{"type":39,"tag":54,"props":998,"children":999},{},[1000],{"type":45,"value":261},{"type":39,"tag":263,"props":1002,"children":1004},{"className":265,"code":1003,"language":267,"meta":268,"style":268},"from twilio.rest import Client\nclient = Client(account_sid, auth_token)\n\nnumber = client.incoming_phone_numbers.create(\n    phone_number=\"+4930xxxxxxx\",\n    bundle_sid=bundle_sid\n)\n",[1005],{"type":39,"tag":169,"props":1006,"children":1007},{"__ignoreMap":268},[1008,1016,1024,1031,1039,1047,1055],{"type":39,"tag":274,"props":1009,"children":1010},{"class":276,"line":277},[1011],{"type":39,"tag":274,"props":1012,"children":1013},{},[1014],{"type":45,"value":1015},"from twilio.rest import Client\n",{"type":39,"tag":274,"props":1017,"children":1018},{"class":276,"line":286},[1019],{"type":39,"tag":274,"props":1020,"children":1021},{},[1022],{"type":45,"value":1023},"client = Client(account_sid, auth_token)\n",{"type":39,"tag":274,"props":1025,"children":1026},{"class":276,"line":296},[1027],{"type":39,"tag":274,"props":1028,"children":1029},{"emptyLinePlaceholder":290},[1030],{"type":45,"value":293},{"type":39,"tag":274,"props":1032,"children":1033},{"class":276,"line":305},[1034],{"type":39,"tag":274,"props":1035,"children":1036},{},[1037],{"type":45,"value":1038},"number = client.incoming_phone_numbers.create(\n",{"type":39,"tag":274,"props":1040,"children":1041},{"class":276,"line":314},[1042],{"type":39,"tag":274,"props":1043,"children":1044},{},[1045],{"type":45,"value":1046},"    phone_number=\"+4930xxxxxxx\",\n",{"type":39,"tag":274,"props":1048,"children":1049},{"class":276,"line":322},[1050],{"type":39,"tag":274,"props":1051,"children":1052},{},[1053],{"type":45,"value":1054},"    bundle_sid=bundle_sid\n",{"type":39,"tag":274,"props":1056,"children":1057},{"class":276,"line":27},[1058],{"type":39,"tag":274,"props":1059,"children":1060},{},[1061],{"type":45,"value":772},{"type":39,"tag":83,"props":1063,"children":1064},{},[],{"type":39,"tag":40,"props":1066,"children":1068},{"id":1067},"updating-an-approved-bundle",[1069],{"type":45,"value":1070},"Updating an Approved Bundle",{"type":39,"tag":48,"props":1072,"children":1073},{},[1074],{"type":45,"value":1075},"When regulations change, you'll receive an email. Update without deprovisioning numbers:",{"type":39,"tag":1077,"props":1078,"children":1079},"ol",{},[1080,1091,1101,1111],{"type":39,"tag":1081,"props":1082,"children":1083},"li",{},[1084,1089],{"type":39,"tag":54,"props":1085,"children":1086},{},[1087],{"type":45,"value":1088},"Copy",{"type":45,"value":1090}," the approved bundle into a mutable state via the Bundle Copies resource",{"type":39,"tag":1081,"props":1092,"children":1093},{},[1094,1099],{"type":39,"tag":54,"props":1095,"children":1096},{},[1097],{"type":45,"value":1098},"Update",{"type":45,"value":1100}," the End-User or Supporting Document on the copy",{"type":39,"tag":1081,"props":1102,"children":1103},{},[1104,1109],{"type":39,"tag":54,"props":1105,"children":1106},{},[1107],{"type":45,"value":1108},"Re-evaluate",{"type":45,"value":1110}," the copy",{"type":39,"tag":1081,"props":1112,"children":1113},{},[1114,1119],{"type":39,"tag":54,"props":1115,"children":1116},{},[1117],{"type":45,"value":1118},"Replace",{"type":45,"value":1120}," items in the original bundle via the Replace Items resource",{"type":39,"tag":48,"props":1122,"children":1123},{},[1124],{"type":45,"value":1125},"Phone numbers remain provisioned throughout this process.",{"type":39,"tag":48,"props":1127,"children":1128},{},[1129,1134],{"type":39,"tag":54,"props":1130,"children":1131},{},[1132],{"type":45,"value":1133},"Alternative:",{"type":45,"value":1135}," Create a new bundle → get it approved → remap numbers to the new bundle.",{"type":39,"tag":48,"props":1137,"children":1138},{},[1139,1144,1146,1153,1155],{"type":39,"tag":54,"props":1140,"children":1141},{},[1142],{"type":45,"value":1143},"Docs:",{"type":45,"value":1145}," ",{"type":39,"tag":72,"props":1147,"children":1150},{"href":1148,"rel":1149},"https:\u002F\u002Fwww.twilio.com\u002Fdocs\u002Fphone-numbers\u002Fregulatory\u002Fapi\u002Fbundles-copies",[76],[1151],{"type":45,"value":1152},"Bundle Copies",{"type":45,"value":1154}," | ",{"type":39,"tag":72,"props":1156,"children":1159},{"href":1157,"rel":1158},"https:\u002F\u002Fwww.twilio.com\u002Fdocs\u002Fphone-numbers\u002Fregulatory\u002Fapi\u002Fbundles-replace-items",[76],[1160],{"type":45,"value":1161},"Replace Items",{"type":39,"tag":83,"props":1163,"children":1164},{},[],{"type":39,"tag":40,"props":1166,"children":1168},{"id":1167},"isv-multi-account-pattern",[1169],{"type":45,"value":1170},"ISV \u002F Multi-Account Pattern",{"type":39,"tag":48,"props":1172,"children":1173},{},[1174],{"type":45,"value":1175},"If managing Twilio subaccounts for multiple customers:",{"type":39,"tag":1177,"props":1178,"children":1179},"ul",{},[1180,1190,1202],{"type":39,"tag":1081,"props":1181,"children":1182},{},[1183,1188],{"type":39,"tag":54,"props":1184,"children":1185},{},[1186],{"type":45,"value":1187},"Each customer needs their own bundle",{"type":45,"value":1189}," — Do not reuse your business information in customer bundles",{"type":39,"tag":1081,"props":1191,"children":1192},{},[1193,1195,1200],{"type":45,"value":1194},"Use the ",{"type":39,"tag":54,"props":1196,"children":1197},{},[1198],{"type":45,"value":1199},"Bundle Clones",{"type":45,"value":1201}," resource to duplicate bundle structures across subaccounts",{"type":39,"tag":1081,"props":1203,"children":1204},{},[1205],{"type":45,"value":1206},"End-User records must reflect the actual end-user (your customer), not you",{"type":39,"tag":48,"props":1208,"children":1209},{},[1210,1214,1215],{"type":39,"tag":54,"props":1211,"children":1212},{},[1213],{"type":45,"value":1143},{"type":45,"value":1145},{"type":39,"tag":72,"props":1216,"children":1219},{"href":1217,"rel":1218},"https:\u002F\u002Fwww.twilio.com\u002Fdocs\u002Fphone-numbers\u002Fregulatory\u002Fapi\u002Fbundles-clones",[76],[1220],{"type":45,"value":1199},{"type":39,"tag":83,"props":1222,"children":1223},{},[],{"type":39,"tag":40,"props":1225,"children":1227},{"id":1226},"cannot",[1228],{"type":45,"value":1229},"CANNOT",{"type":39,"tag":1177,"props":1231,"children":1232},{},[1233,1243,1253,1263,1273,1283,1293],{"type":39,"tag":1081,"props":1234,"children":1235},{},[1236,1241],{"type":39,"tag":54,"props":1237,"children":1238},{},[1239],{"type":45,"value":1240},"Cannot provision numbers without required bundles",{"type":45,"value":1242}," — Provisioning fails immediately. Check Regulations resource first.",{"type":39,"tag":1081,"props":1244,"children":1245},{},[1246,1251],{"type":39,"tag":54,"props":1247,"children":1248},{},[1249],{"type":45,"value":1250},"Cannot reuse one bundle across different number types",{"type":45,"value":1252}," — Each bundle is tied to a specific regulation (country + number type + end-user type).",{"type":39,"tag":1081,"props":1254,"children":1255},{},[1256,1261],{"type":39,"tag":54,"props":1257,"children":1258},{},[1259],{"type":45,"value":1260},"Locality-matching addresses required in ~33 countries",{"type":45,"value":1262}," — Germany (and others) require the End-User address to be within the region of the phone number prefix, not just any address in the country. US HQ address will fail for a Berlin number.",{"type":39,"tag":1081,"props":1264,"children":1265},{},[1266,1271],{"type":39,"tag":54,"props":1267,"children":1268},{},[1269],{"type":45,"value":1270},"Cannot hardcode regulation requirements",{"type":45,"value":1272}," — Regulations change periodically. Always query the Regulations resource dynamically.",{"type":39,"tag":1081,"props":1274,"children":1275},{},[1276,1281],{"type":39,"tag":54,"props":1277,"children":1278},{},[1279],{"type":45,"value":1280},"Do not create a new bundle when evaluation fails",{"type":45,"value":1282}," — Fix the existing bundle. Creating new ones wastes time and clutters your account.",{"type":39,"tag":1081,"props":1284,"children":1285},{},[1286,1291],{"type":39,"tag":54,"props":1287,"children":1288},{},[1289],{"type":45,"value":1290},"Cannot reuse your ISV info in customer bundles",{"type":45,"value":1292}," — Bundles must represent the actual end-user. Twilio audits this.",{"type":39,"tag":1081,"props":1294,"children":1295},{},[1296,1301,1303,1309],{"type":39,"tag":54,"props":1297,"children":1298},{},[1299],{"type":45,"value":1300},"Some markets are business-only",{"type":45,"value":1302}," — Individual provisioning not allowed. Check the ",{"type":39,"tag":169,"props":1304,"children":1306},{"className":1305},[],[1307],{"type":45,"value":1308},"EndUserType",{"type":45,"value":1310}," in the Regulation.",{"type":39,"tag":83,"props":1312,"children":1313},{},[],{"type":39,"tag":40,"props":1315,"children":1317},{"id":1316},"next-steps",[1318],{"type":45,"value":1319},"Next Steps",{"type":39,"tag":1177,"props":1321,"children":1322},{},[1323,1338,1353,1368],{"type":39,"tag":1081,"props":1324,"children":1325},{},[1326,1331,1332],{"type":39,"tag":54,"props":1327,"children":1328},{},[1329],{"type":45,"value":1330},"Choose number type before provisioning:",{"type":45,"value":1145},{"type":39,"tag":169,"props":1333,"children":1335},{"className":1334},[],[1336],{"type":45,"value":1337},"twilio-numbers-senders",{"type":39,"tag":1081,"props":1339,"children":1340},{},[1341,1346,1347],{"type":39,"tag":54,"props":1342,"children":1343},{},[1344],{"type":45,"value":1345},"Register numbers after provisioning:",{"type":45,"value":1145},{"type":39,"tag":169,"props":1348,"children":1350},{"className":1349},[],[1351],{"type":45,"value":1352},"twilio-compliance-onboarding",{"type":39,"tag":1081,"props":1354,"children":1355},{},[1356,1361,1362],{"type":39,"tag":54,"props":1357,"children":1358},{},[1359],{"type":45,"value":1360},"Country-specific requirements:",{"type":45,"value":1145},{"type":39,"tag":72,"props":1363,"children":1365},{"href":74,"rel":1364},[76],[1366],{"type":45,"value":1367},"Regulatory Guidelines",{"type":39,"tag":1081,"props":1369,"children":1370},{},[1371,1376,1377],{"type":39,"tag":54,"props":1372,"children":1373},{},[1374],{"type":45,"value":1375},"API reference:",{"type":45,"value":1145},{"type":39,"tag":72,"props":1378,"children":1381},{"href":1379,"rel":1380},"https:\u002F\u002Fwww.twilio.com\u002Fdocs\u002Fphone-numbers\u002Fregulatory\u002Fapi",[76],[1382],{"type":45,"value":1383},"Regulatory Compliance API",{"type":39,"tag":1385,"props":1386,"children":1387},"style",{},[1388],{"type":45,"value":1389},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1391,"total":1567},[1392,1408,1428,1439,1451,1464,1479,1494,1508,1521,1537,1555],{"slug":1393,"name":1393,"fn":1394,"description":1395,"org":1396,"tags":1397,"stars":23,"repoUrl":24,"updatedAt":1407},"twilio-account-setup","configure Twilio accounts and credentials","Create and configure a Twilio account from scratch. Covers free trial signup, trial limitations, getting credentials (Account SID and Auth Token), buying a phone number, verifying recipient numbers for trial use, SDK installation, first API call, subaccount management (creation, inheritance, credential isolation, limits), and enabling specific products (AI Assistants, Conversations, Verify, ConversationRelay, WhatsApp). Use this skill before any other Twilio skill if you do not yet have a Twilio account or need to enable a product. For Organization-level governance (SSO, SCIM, multi-team), see `twilio-organizations-setup`.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1398,1401,1404],{"name":1399,"slug":1400,"type":15},"API Development","api-development",{"name":1402,"slug":1403,"type":15},"Communications","communications",{"name":1405,"slug":1406,"type":15},"SMS","sms","2026-08-01T05:43:28.968968",{"slug":1409,"name":1409,"fn":1410,"description":1411,"org":1412,"tags":1413,"stars":23,"repoUrl":24,"updatedAt":1427},"twilio-agent-augmentation-architect","augment human agents with AI intelligence","Planning skill for augmenting human agents with real-time AI intelligence. Qualifies the developer's use case across coaching, compliance, QA, and routing to recommend the right Conversation Intelligence + Conversation Memory + TaskRouter architecture. Handles both \"I want to add AI coaching to my call center\" and \"configure Conversation Intelligence operators for script adherence.\"\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1414,1417,1420,1423,1426],{"name":1415,"slug":1416,"type":15},"Agents","agents",{"name":1418,"slug":1419,"type":15},"AI","ai",{"name":1421,"slug":1422,"type":15},"Coaching","coaching",{"name":1424,"slug":1425,"type":15},"QA","qa",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:58.250609",{"slug":1429,"name":1429,"fn":1430,"description":1431,"org":1432,"tags":1433,"stars":23,"repoUrl":24,"updatedAt":1438},"twilio-agent-connect","connect AI agents to Twilio channels","Connect third-party AI agents (OpenAI, Bedrock, LangChain, Microsoft Foundry) to Twilio's communication channels using the Twilio Agent Connect SDK. Covers identity resolution, memory and context management via Conversation Memory, conversation orchestration via Conversation Orchestrator, multi-channel handling (Voice, SMS, RCS, WhatsApp, Chat), and AI-to-human escalation. Use this skill when integrating an existing LLM agent with Twilio services.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1434,1435,1436,1437],{"name":1415,"slug":1416,"type":15},{"name":1399,"slug":1400,"type":15},{"name":1402,"slug":1403,"type":15},{"name":9,"slug":8,"type":15},"2026-07-17T06:06:05.217098",{"slug":1440,"name":1440,"fn":1441,"description":1442,"org":1443,"tags":1444,"stars":23,"repoUrl":24,"updatedAt":1450},"twilio-ai-agent-architect","plan Twilio conversational AI agents","Planning skill for AI-powered conversational agents. Qualifies the developer's use case across outcome sophistication, entry point, and customer profile to recommend the right Twilio Conversations architecture and implementation skills. Handles both high-level requests (\"build me a voice AI assistant\") and specific ones (\"integrate ConversationRelay with my OpenAI backend\").\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1445,1446,1449],{"name":1415,"slug":1416,"type":15},{"name":1447,"slug":1448,"type":15},"Architecture","architecture",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:48.883723",{"slug":1452,"name":1452,"fn":1453,"description":1454,"org":1455,"tags":1456,"stars":23,"repoUrl":24,"updatedAt":1463},"twilio-call-recordings","record and manage Twilio voice calls","Record Twilio voice calls correctly. Covers the critical distinction between Record verb (voicemail) and Dial record (call recording), dual-channel for QA, mid-call pause for PCI, Conference recording, and the ConversationRelay workaround. Use this skill whenever you need to capture call audio for compliance, QA, or analytics.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1457,1460,1461,1462],{"name":1458,"slug":1459,"type":15},"Audio","audio",{"name":17,"slug":18,"type":15},{"name":1424,"slug":1425,"type":15},{"name":9,"slug":8,"type":15},"2026-07-17T06:07:55.268412",{"slug":1465,"name":1465,"fn":1466,"description":1467,"org":1468,"tags":1469,"stars":23,"repoUrl":24,"updatedAt":1478},"twilio-cli-reference","manage Twilio resources via CLI","Twilio CLI reference for managing Twilio resources from the terminal. Covers installation, credential profiles, phone number provisioning, sending SMS and email, webhook configuration, local development with a tunneling service, debugging with watch and logs, serverless deployment, and plugin ecosystem. Use when the developer asks to \"just do it\", \"set this up\", \"run a command\", mentions \"CLI\", \"command line\", or \"terminal\", or when an AI agent can execute a task directly instead of writing application code.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1470,1473,1476,1477],{"name":1471,"slug":1472,"type":15},"CLI","cli",{"name":1474,"slug":1475,"type":15},"Local Development","local-development",{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},"2026-07-17T06:07:54.925664",{"slug":1352,"name":1352,"fn":1480,"description":1481,"org":1482,"tags":1483,"stars":23,"repoUrl":24,"updatedAt":1493},"manage Twilio messaging and voice compliance","Registrations required BEFORE Twilio traffic works. Covers messaging programs (A2P 10DLC, toll-free verification, WhatsApp WABA, RCS, short code, alphanumeric sender) and voice trust programs (STIR\u002FSHAKEN, Voice Integrity, Branded Calling, CNAM). Each number\u002Fsender type has its own program — registration blocks traffic until complete.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1484,1485,1488,1489,1490],{"name":17,"slug":18,"type":15},{"name":1486,"slug":1487,"type":15},"Messaging","messaging",{"name":1405,"slug":1406,"type":15},{"name":9,"slug":8,"type":15},{"name":1491,"slug":1492,"type":15},"WhatsApp","whatsapp","2026-07-17T06:05:47.897229",{"slug":1495,"name":1495,"fn":1496,"description":1497,"org":1498,"tags":1499,"stars":23,"repoUrl":24,"updatedAt":1507},"twilio-compliance-traffic","ensure compliance for Twilio messaging traffic","Rules you must follow for Twilio messaging and voice traffic. Covers TCPA (consent tiers, quiet hours, DNC), GDPR (EU consent, right to deletion), PCI DSS (payment recording, Pay verb), HIPAA (BAA, PHI), FDCPA (debt collection limits), CAN-SPAM, WhatsApp policies, SHAKEN\u002FSTIR, and consent management patterns. Use this skill proactively when developers have working traffic to ensure they follow the rules.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1500,1501,1502,1503,1506],{"name":17,"slug":18,"type":15},{"name":1486,"slug":1487,"type":15},{"name":20,"slug":21,"type":15},{"name":1504,"slug":1505,"type":15},"Security","security",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:55.952779",{"slug":1509,"name":1509,"fn":1510,"description":1511,"org":1512,"tags":1513,"stars":23,"repoUrl":24,"updatedAt":1520},"twilio-conference-calls","build multi-party calls with Twilio Conference","Build multi-party calls using Twilio Conference. Covers warm transfer, cold transfer, coaching (whisper), hold vs mute, participant modes, and supervisor barge. Use this skill for any contact center, support line, or scenario requiring transfers, holds, or multi-party calls.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1514,1515,1516,1519],{"name":1458,"slug":1459,"type":15},{"name":1402,"slug":1403,"type":15},{"name":1517,"slug":1518,"type":15},"Meetings","meetings",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:55.603708",{"slug":1522,"name":1522,"fn":1523,"description":1524,"org":1525,"tags":1526,"stars":23,"repoUrl":24,"updatedAt":1536},"twilio-content-template-builder","create and send message templates with Twilio","Create, manage, and send message templates using Twilio's Content API. Covers template creation for WhatsApp, SMS, RCS, and MMS; variable usage; WhatsApp Meta approval; and sending templates via ContentSid. Use this skill when building structured messages that require pre-approval or consistent formatting across channels.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1527,1530,1531,1532,1535],{"name":1528,"slug":1529,"type":15},"Email","email",{"name":1486,"slug":1487,"type":15},{"name":1405,"slug":1406,"type":15},{"name":1533,"slug":1534,"type":15},"Templates","templates",{"name":9,"slug":8,"type":15},"2026-07-17T06:04:26.637309",{"slug":1538,"name":1538,"fn":1539,"description":1540,"org":1541,"tags":1542,"stars":23,"repoUrl":24,"updatedAt":1554},"twilio-conversation-intelligence","build conversation intelligence pipelines","Twilio Conversation Intelligence development guide. Use when building real-time or post-call conversation analysis, language operator pipelines, sentiment analysis, agent assist, cross-channel analytics, or querying aggregated conversation insights (sentiment trends, escalation rates, dashboards).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1543,1544,1547,1550,1553],{"name":1415,"slug":1416,"type":15},{"name":1545,"slug":1546,"type":15},"Analytics","analytics",{"name":1548,"slug":1549,"type":15},"Monitoring","monitoring",{"name":1551,"slug":1552,"type":15},"NLP","nlp",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:52.545387",{"slug":1556,"name":1556,"fn":1557,"description":1558,"org":1559,"tags":1560,"stars":23,"repoUrl":24,"updatedAt":1566},"twilio-conversation-memory","manage conversation memory with Twilio","Store and retrieve conversation context using Twilio Conversation Memory. Covers Memory Store provisioning, profile management, traits, observations, conversation summaries, and semantic Recall. Use this skill to give AI agents or human agents persistent memory of conversations across sessions and channels.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1561,1562,1565],{"name":1415,"slug":1416,"type":15},{"name":1563,"slug":1564,"type":15},"Memory","memory",{"name":9,"slug":8,"type":15},"2026-07-17T06:04:19.526724",57,{"items":1569,"total":1567},[1570,1576,1584,1591,1597,1604,1611],{"slug":1393,"name":1393,"fn":1394,"description":1395,"org":1571,"tags":1572,"stars":23,"repoUrl":24,"updatedAt":1407},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1573,1574,1575],{"name":1399,"slug":1400,"type":15},{"name":1402,"slug":1403,"type":15},{"name":1405,"slug":1406,"type":15},{"slug":1409,"name":1409,"fn":1410,"description":1411,"org":1577,"tags":1578,"stars":23,"repoUrl":24,"updatedAt":1427},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1579,1580,1581,1582,1583],{"name":1415,"slug":1416,"type":15},{"name":1418,"slug":1419,"type":15},{"name":1421,"slug":1422,"type":15},{"name":1424,"slug":1425,"type":15},{"name":9,"slug":8,"type":15},{"slug":1429,"name":1429,"fn":1430,"description":1431,"org":1585,"tags":1586,"stars":23,"repoUrl":24,"updatedAt":1438},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1587,1588,1589,1590],{"name":1415,"slug":1416,"type":15},{"name":1399,"slug":1400,"type":15},{"name":1402,"slug":1403,"type":15},{"name":9,"slug":8,"type":15},{"slug":1440,"name":1440,"fn":1441,"description":1442,"org":1592,"tags":1593,"stars":23,"repoUrl":24,"updatedAt":1450},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1594,1595,1596],{"name":1415,"slug":1416,"type":15},{"name":1447,"slug":1448,"type":15},{"name":9,"slug":8,"type":15},{"slug":1452,"name":1452,"fn":1453,"description":1454,"org":1598,"tags":1599,"stars":23,"repoUrl":24,"updatedAt":1463},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1600,1601,1602,1603],{"name":1458,"slug":1459,"type":15},{"name":17,"slug":18,"type":15},{"name":1424,"slug":1425,"type":15},{"name":9,"slug":8,"type":15},{"slug":1465,"name":1465,"fn":1466,"description":1467,"org":1605,"tags":1606,"stars":23,"repoUrl":24,"updatedAt":1478},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1607,1608,1609,1610],{"name":1471,"slug":1472,"type":15},{"name":1474,"slug":1475,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"slug":1352,"name":1352,"fn":1480,"description":1481,"org":1612,"tags":1613,"stars":23,"repoUrl":24,"updatedAt":1493},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1614,1615,1616,1617,1618],{"name":17,"slug":18,"type":15},{"name":1486,"slug":1487,"type":15},{"name":1405,"slug":1406,"type":15},{"name":9,"slug":8,"type":15},{"name":1491,"slug":1492,"type":15}]