{"files":{"SKILL.md":"---\nname: twilio-lookups\ndescription: \"Twilio - Lookups API skill. Use when working with Twilio - Lookups for PhoneNumbers, batch, RateLimits. Covers 10 endpoints.\"\nversion: 1.0.0\ngenerator: lapsh\n---\n\n# Twilio - Lookups\nAPI version: 1.0.0\n\n## Auth\nBearer basic\n\n## Base URL\nhttps://lookups.twilio.com\n\n## Setup\n1. Set Authorization header with Bearer token\n2. GET /v2/RateLimits -- get account rate limits\n3. POST /v2/batch/query -- create first query\n\n## Endpoints\n10 endpoints across 3 groups. See references/api-spec.lap for full details.\n\n### PhoneNumbers\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /v2/PhoneNumbers/{PhoneNumber} | Full API documentation: https://www.twilio.com/docs/lookup/v2-api |\n| GET | /v2/PhoneNumbers/{PhoneNumber}/Overrides/{Field} | Get Overrides for a Phone Number for a specific field. |\n| POST | /v2/PhoneNumbers/{PhoneNumber}/Overrides/{Field} | Create Override for a Phone Number for a specific field |\n| PUT | /v2/PhoneNumbers/{PhoneNumber}/Overrides/{Field} | Update Override for a Phone Number for a specific field |\n| DELETE | /v2/PhoneNumbers/{PhoneNumber}/Overrides/{Field} | Delete an Override for a Phone Number for a specific field |\n\n### Batch\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /v2/batch/query | In Request Bulk |\n\n### RateLimits\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /v2/RateLimits | Get account rate limits |\n| GET | /v2/RateLimits/Fields/{Field}/Bucket/{Bucket} | Get rate limit |\n| DELETE | /v2/RateLimits/Fields/{Field}/Bucket/{Bucket} | Delete rate limit |\n| PUT | /v2/RateLimits/Fields/{Field}/Bucket/{Bucket} | Upsert rate limit |\n\n## Common Questions\nMatch user requests to endpoints in references/api-spec.lap. Key patterns:\n- \"Get PhoneNumber details?\" -> GET /v2/PhoneNumbers/{PhoneNumber}\n- \"Create a query?\" -> POST /v2/batch/query\n- \"List all RateLimits?\" -> GET /v2/RateLimits\n- \"Get Bucket details?\" -> GET /v2/RateLimits/Fields/{Field}/Bucket/{Bucket}\n- \"Delete a Bucket?\" -> DELETE /v2/RateLimits/Fields/{Field}/Bucket/{Bucket}\n- \"Update a Bucket?\" -> PUT /v2/RateLimits/Fields/{Field}/Bucket/{Bucket}\n- \"Get Override details?\" -> GET /v2/PhoneNumbers/{PhoneNumber}/Overrides/{Field}\n- \"Update a Override?\" -> PUT /v2/PhoneNumbers/{PhoneNumber}/Overrides/{Field}\n- \"Delete a Override?\" -> DELETE /v2/PhoneNumbers/{PhoneNumber}/Overrides/{Field}\n- \"How to authenticate?\" -> See Auth section above\n\n## Response Tips\n- Check response schemas in references/api-spec.lap for field details\n- Paginated endpoints accept limit/offset or cursor parameters\n- Create/update endpoints return the modified resource on success\n- Error responses include status codes and descriptions in the spec\n\n## References\n- Full spec: See references/api-spec.lap for complete endpoint details, parameter tables, and response schemas\n\n> Generated from the official API spec by [LAP](https://lap.sh)\n","references/api-spec.lap":"@lap v0.3\n# Machine-readable API spec. Each @endpoint block is one API call.\n@api Twilio - Lookups\n@base https://lookups.twilio.com\n@version 1.0.0\n@auth Bearer basic\n@endpoints 10\n@toc PhoneNumbers(5), batch(1), RateLimits(4)\n\n@group PhoneNumbers\n@endpoint GET /v2/PhoneNumbers/{PhoneNumber}\n@desc Full API documentation: https://www.twilio.com/docs/lookup/v2-api\n@required {PhoneNumber: str # The phone number to lookup in E.164 or national format. Default country code is +1 (North America).}\n@optional {Fields: str # A comma-separated list of fields to return. Possible values are validation, caller_name, sim_swap, call_forwarding, line_status, line_type_intelligence, identity_match, reassigned_number, sms_pumping_risk, phone_number_quality_score, pre_fill., CountryCode: str # The [country code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) used if the phone number provided is in national format., FirstName: str # User’s first name. This query parameter is only used (optionally) for identity_match package requests., LastName: str # User’s last name. This query parameter is only used (optionally) for identity_match package requests., AddressLine1: str # User’s first address line. This query parameter is only used (optionally) for identity_match package requests., AddressLine2: str # User’s second address line. This query parameter is only used (optionally) for identity_match package requests., City: str # User’s city. This query parameter is only used (optionally) for identity_match package requests., State: str # User’s country subdivision, such as state, province, or locality. This query parameter is only used (optionally) for identity_match package requests., PostalCode: str # User’s postal zip code. This query parameter is only used (optionally) for identity_match package requests., AddressCountryCode: str(iso-country-code) # User’s country, up to two characters. This query parameter is only used (optionally) for identity_match package requests., NationalId: str # User’s national ID, such as SSN or Passport ID. This query parameter is only used (optionally) for identity_match package requests., DateOfBirth: str # User’s date of birth, in YYYYMMDD format. This query parameter is only used (optionally) for identity_match package requests., LastVerifiedDate: str # The date you obtained consent to call or text the end-user of the phone number or a date on which you are reasonably certain that the end-user could still be reached at that number. This query parameter is only used (optionally) for reassigned_number package requests., VerificationSid: str # The unique identifier associated with a verification process through verify API. This query parameter is only used (optionally) for pre_fill package requests., PartnerSubId: str # The optional partnerSubId parameter to provide context for your sub-accounts, tenantIDs, sender IDs or other segmentation, enhancing the accuracy of the risk analysis.}\n@returns(200) {calling_country_code: str?, country_code: str?, phone_number: str(phone-number)?, national_format: str?, valid: bool, validation_errors: [str], caller_name: map{caller_name: str, caller_type: str, error_code: int}, sim_swap: map{last_sim_swap: any, carrier_name: str, mobile_country_code: str, mobile_network_code: str, error_code: int}, call_forwarding: map{call_forwarding_enabled: bool, error_code: int(int32)}, line_type_intelligence: map{mobile_country_code: str, mobile_network_code: str, carrier_name: str, type: str, error_code: int}, line_status: map{status: str, error_code: int}, identity_match: map{first_name_match: str, last_name_match: str, address_lines_match: str, city_match: str, state_match: str, postal_code_match: str, address_country_match: str, national_id_match: str, date_of_birth_match: str, summary_score: int(int32), error_code: int(int32), error_message: str}, reassigned_number: map{last_verified_date: str, is_number_reassigned: str, error_code: str}, sms_pumping_risk: map{carrier_risk_category: str, number_blocked: bool, number_blocked_date: str(date-time), number_blocked_last_3_months: bool, sms_pumping_risk_score: int, error_code: int}, phone_number_quality_score: any, pre_fill: any, url: str(uri)} # OK\n\n@endgroup\n\n@group batch\n@endpoint POST /v2/batch/query\n@desc In Request Bulk\n@optional {phone_numbers: [map{correlation_id: str, phone_number!: str, fields: [str], country_code: str, identity_match: map, reassigned_number: map, sms_pumping_risk: map}]}\n@returns(200) {phone_numbers: [map]} # OK\n\n@endgroup\n\n@group RateLimits\n@endpoint GET /v2/RateLimits\n@desc Get account rate limits\n@optional {Fields: [str]}\n@returns(200) {rate_limits: [map]} # OK\n@errors {400: Bad Request}\n\n@endpoint GET /v2/RateLimits/Fields/{Field}/Bucket/{Bucket}\n@desc Get rate limit\n@required {Field: str # bucket name, Bucket: str # bucket name}\n@returns(200) {field: str, limit: int(int32), bucket: str, owner: str, ttl: int(int32)} # OK\n@errors {400: Bad Request, 404: Not Found}\n\n@endpoint DELETE /v2/RateLimits/Fields/{Field}/Bucket/{Bucket}\n@desc Delete rate limit\n@required {Field: str # bucket name, Bucket: str # bucket name}\n@returns(204) No Content\n@errors {400: Bad Request}\n\n@endpoint PUT /v2/RateLimits/Fields/{Field}/Bucket/{Bucket}\n@desc Upsert rate limit\n@required {Field: str # field name, Bucket: str # bucket name}\n@optional {limit: int(int32) # Limit of requests for the bucket, ttl: int(int32) # Time to live of the rule}\n@returns(200) {field: str, limit: int(int32), bucket: str, owner: str, ttl: int(int32)} # OK\n@errors {400: Bad Request}\n\n@endgroup\n\n@group PhoneNumbers\n@endpoint GET /v2/PhoneNumbers/{PhoneNumber}/Overrides/{Field}\n@desc Get Overrides for a Phone Number for a specific field.\n@required {Field: str, PhoneNumber: str}\n@returns(200) {phone_number: str, original_line_type: str, overridden_line_type: str, override_reason: str, override_timestamp: str(date-time), overridden_by_account_sid: str} # OK\n@errors {400: Bad Request, 404: Not Found}\n\n@endpoint POST /v2/PhoneNumbers/{PhoneNumber}/Overrides/{Field}\n@desc Create Override for a Phone Number for a specific field\n@required {Field: str, PhoneNumber: str}\n@optional {line_type: str(mobile/landline/tollFree/fixedVoip/nonFixedVoip/personal/premium/voicemail/sharedCost/uan/pager/unknown) # The new line type to override the original line type, reason: str # The reason for the override}\n@returns(201) {phone_number: str, original_line_type: str, overridden_line_type: str, override_reason: str, override_timestamp: str(date-time), overridden_by_account_sid: str} # Created\n@errors {400: Bad Request}\n\n@endpoint PUT /v2/PhoneNumbers/{PhoneNumber}/Overrides/{Field}\n@desc Update Override for a Phone Number for a specific field\n@required {Field: str, PhoneNumber: str}\n@optional {line_type: str(mobile/landline/tollFree/fixedVoip/nonFixedVoip/personal/premium/voicemail/sharedCost/uan/pager/unknown) # The new line type to override the original line type, reason: str # The reason for the override}\n@returns(200) {phone_number: str, original_line_type: str, overridden_line_type: str, override_reason: str, override_timestamp: str(date-time), overridden_by_account_sid: str} # OK\n@errors {400: Bad Request, 404: Not Found}\n\n@endpoint DELETE /v2/PhoneNumbers/{PhoneNumber}/Overrides/{Field}\n@desc Delete an Override for a Phone Number for a specific field\n@required {Field: str, PhoneNumber: str}\n@returns(204) No Content\n@errors {400: Bad Request}\n\n@endgroup\n\n@end\n"}}