Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Port phone numbers into Telnyx. Check portability, create port orders, upload LOA documents, and track porting status. This skill provides Ruby SDK examples.
.claude/skills/team-telnyx-telnyx-porting-in-ruby/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-03 | ✗→✓ | ▲ Improved | 386% | 0% |
| case-01 | ✗→✓ | ▲ Improved | 387% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 350% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 324% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 380% | 0% |
<!-- Auto-generated from Telnyx OpenAPI specs. Do not edit. -->
bashgem install telnyx
rubyrequire "telnyx" client = Telnyx::Client.new( api_key: ENV["TELNYX_API_KEY"], # This is the default and can be omitted )
All examples below assume client is already initialized as shown above.
All API calls can fail with network errors, rate limits (429), validation errors (422), or authentication errors (401). Always handle errors in production code:
rubybegin result = client.messages.send_(to: "+13125550001", from: "+13125550002", text: "Hello") rescue Telnyx::Errors::APIConnectionError puts "Network error — check connectivity and retry" rescue Telnyx::Errors::RateLimitError # 429: rate limited — wait and retry with exponential backoff sleep(1) # Check Retry-After header for actual delay rescue Telnyx::Errors::APIStatusError => e puts "API error #{e.status}: #{e.message}" if e.status == 422 puts "Validation error — check required fields and formats" end end
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).
+13125550001). Include the + prefix and country code. No spaces, dashes, or parentheses..auto_paging_each for automatic iteration: page.auto_paging_each { |item| puts item.id }.Runs a portability check, returning the results immediately.
POST /portability_checks
Optional: phone_numbers (arraystring])
rubyresponse = client.portability_checks.run(phone_numbers: ["+18005550101"]) puts(response)
Returns: fast_portable (boolean), not_portable_reason (string), phone_number (string), portable (boolean), record_type (string)
Returns a list of all porting events.
GET /porting/events
rubypage = client.porting.events.list puts(page)
Returns: available_notification_methods (arraystring]), event_type (enum: porting_order.deleted), id (uuid), payload (object), payload_status (enum: created, completed), porting_order_id (uuid)
Show a specific porting event.
GET /porting/events/{id}
rubyevent = client.porting.events.retrieve("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") puts(event)
Returns: available_notification_methods (arraystring]), event_type (enum: porting_order.deleted), id (uuid), payload (object), payload_status (enum: created, completed), porting_order_id (uuid)
Republish a specific porting event.
POST /porting/events/{id}/republish
rubyresult = client.porting.events.republish("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") puts(result)
List the LOA configurations.
GET /porting/loa_configurations
rubypage = client.porting.loa_configurations.list puts(page)
Returns: address (object), company_name (string), contact (object), created_at (date-time), id (uuid), logo (object), name (string), organization_id (string), record_type (string), updated_at (date-time)
Create a LOA configuration.
POST /porting/loa_configurations
rubyloa_configuration = client.porting.loa_configurations.create( address: {city: "Austin", country_code: "US", state: "TX", street_address: "600 Congress Avenue", zip_code: "78701"}, company_name: "Telnyx", contact: {email: "testing@client.com", phone_number: "+12003270001"}, logo: {document_id: "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e"}, name: "My LOA Configuration" ) puts(loa_configuration)
Returns: address (object), company_name (string), contact (object), created_at (date-time), id (uuid), logo (object), name (string), organization_id (string), record_type (string), updated_at (date-time)
Preview the LOA template that would be generated without need to create LOA configuration.
POST /porting/loa_configurations/preview
rubyresponse = client.porting.loa_configurations.preview( address: {city: "Austin", country_code: "US", state: "TX", street_address: "600 Congress Avenue", zip_code: "78701"}, company_name: "Telnyx", contact: {email: "testing@client.com", phone_number: "+12003270001"}, logo: {document_id: "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e"}, name: "My LOA Configuration" ) puts(response)
Retrieve a specific LOA configuration.
GET /porting/loa_configurations/{id}
rubyloa_configuration = client.porting.loa_configurations.retrieve("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") puts(loa_configuration)
Returns: address (object), company_name (string), contact (object), created_at (date-time), id (uuid), logo (object), name (string), organization_id (string), record_type (string), updated_at (date-time)
Update a specific LOA configuration.
PATCH /porting/loa_configurations/{id}
rubyloa_configuration = client.porting.loa_configurations.update( "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", address: {city: "Austin", country_code: "US", state: "TX", street_address: "600 Congress Avenue", zip_code: "78701"}, company_name: "Telnyx", contact: {email: "testing@client.com", phone_number: "+12003270001"}, logo: {document_id: "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e"}, name: "My LOA Configuration" ) puts(loa_configuration)
Returns: address (object), company_name (string), contact (object), created_at (date-time), id (uuid), logo (object), name (string), organization_id (string), record_type (string), updated_at (date-time)
Delete a specific LOA configuration.
DELETE /porting/loa_configurations/{id}
rubyresult = client.porting.loa_configurations.delete("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") puts(result)
Preview a specific LOA configuration.
GET /porting/loa_configurations/{id}/preview
rubyresponse = client.porting.loa_configurations.preview_1("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") puts(response)
List the reports generated about porting operations.
GET /porting/reports
rubypage = client.porting.reports.list puts(page)
Returns: created_at (date-time), document_id (uuid), id (uuid), params (object), record_type (string), report_type (enum: export_porting_orders_csv), status (enum: pending, completed), updated_at (date-time)
Generate reports about porting operations.
POST /porting/reports
rubyreport = client.porting.reports.create(params: {filters: {}}, report_type: :export_porting_orders_csv) puts(report)
Returns: created_at (date-time), document_id (uuid), id (uuid), params (object), record_type (string), report_type (enum: export_porting_orders_csv), status (enum: pending, completed), updated_at (date-time)
Retrieve a specific report generated.
GET /porting/reports/{id}
rubyreport = client.porting.reports.retrieve("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") puts(report)
Returns: created_at (date-time), document_id (uuid), id (uuid), params (object), record_type (string), report_type (enum: export_porting_orders_csv), status (enum: pending, completed), updated_at (date-time)
List available carriers in the UK.
GET /porting/uk_carriers
rubyresponse = client.porting.list_uk_carriers puts(response)
Returns: alternative_cupids (arraystring]), created_at (date-time), cupid (string), id (uuid), name (string), record_type (string), updated_at (date-time)
Returns a list of your porting order.
GET /porting_orders
rubypage = client.porting_orders.list puts(page)
Returns: activation_settings (object), additional_steps (arraystring]), created_at (date-time), customer_group_reference (string | null), customer_reference (string | null), description (string), documents (object), end_user (object), id (uuid), messaging (object), misc (object), old_service_provider_ocn (string), parent_support_key (string | null), phone_number_configuration (object), phone_number_type (enum: landline, local, mobile, national, shared_cost, toll_free), phone_numbers (arrayobject]), porting_phone_numbers_count (integer), record_type (string), requirements (arrayobject]), requirements_met (boolean), status (object), support_key (string | null), updated_at (date-time), user_feedback (object), user_id (uuid), webhook_url (uri)
Creates a new porting order object.
POST /porting_orders — Required: phone_numbers
Optional: customer_group_reference (string), customer_reference (string | null)
rubyporting_order = client.porting_orders.create(phone_numbers: ["+13035550000", "+13035550001", "+13035550002"]) puts(porting_order)
Returns: activation_settings (object), additional_steps (arraystring]), created_at (date-time), customer_group_reference (string | null), customer_reference (string | null), description (string), documents (object), end_user (object), id (uuid), messaging (object), misc (object), old_service_provider_ocn (string), parent_support_key (string | null), phone_number_configuration (object), phone_number_type (enum: landline, local, mobile, national, shared_cost, toll_free), phone_numbers (arrayobject]), porting_phone_numbers_count (integer), record_type (string), requirements (arrayobject]), requirements_met (boolean), status (object), support_key (string | null), updated_at (date-time), user_feedback (object), user_id (uuid), webhook_url (uri)
Returns a list of all possible exception types for a porting order.
GET /porting_orders/exception_types
rubyresponse = client.porting_orders.retrieve_exception_types puts(response)
Returns: code (enum: ACCOUNT_NUMBER_MISMATCH, AUTH_PERSON_MISMATCH, BTN_ATN_MISMATCH, ENTITY_NAME_MISMATCH, FOC_EXPIRED, FOC_REJECTED, LOCATION_MISMATCH, LSR_PENDING, MAIN_BTN_PORTING, OSP_IRRESPONSIVE, OTHER, PASSCODE_PIN_INVALID, PHONE_NUMBER_HAS_SPECIAL_FEATURE, PHONE_NUMBER_MISMATCH, PHONE_NUMBER_NOT_PORTABLE, PORT_TYPE_INCORRECT, PORTING_ORDER_SPLIT_REQUIRED, POSTAL_CODE_MISMATCH, RATE_CENTER_NOT_PORTABLE, SV_CONFLICT, SV_UNKNOWN_FAILURE), description (string)
Returns a list of phone number configurations paginated.
GET /porting_orders/phone_number_configurations
rubypage = client.porting_orders.phone_number_configurations.list puts(page)
Returns: created_at (date-time), id (uuid), porting_phone_number_id (uuid), record_type (string), updated_at (date-time), user_bundle_id (uuid)
Creates a list of phone number configurations.
POST /porting_orders/phone_number_configurations
rubyphone_number_configuration = client.porting_orders.phone_number_configurations.create puts(phone_number_configuration)
Returns: created_at (date-time), id (uuid), porting_phone_number_id (uuid), record_type (string), updated_at (date-time), user_bundle_id (uuid)
Retrieves the details of an existing porting order.
GET /porting_orders/{id}
rubyporting_order = client.porting_orders.retrieve("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") puts(porting_order)
Returns: activation_settings (object), additional_steps (arraystring]), created_at (date-time), customer_group_reference (string | null), customer_reference (string | null), description (string), documents (object), end_user (object), id (uuid), messaging (object), misc (object), old_service_provider_ocn (string), parent_support_key (string | null), phone_number_configuration (object), phone_number_type (enum: landline, local, mobile, national, shared_cost, toll_free), phone_numbers (arrayobject]), porting_phone_numbers_count (integer), record_type (string), requirements (arrayobject]), requirements_met (boolean), status (object), support_key (string | null), updated_at (date-time), user_feedback (object), user_id (uuid), webhook_url (uri)
Edits the details of an existing porting order. Any or all of a porting orders attributes may be included in the resource object included in a PATCH request. If a request does not include all of the attributes for a resource, the system will interpret the missing attributes as if they were included with their current values.
PATCH /porting_orders/{id}
Optional: activation_settings (object), customer_group_reference (string), customer_reference (string), documents (object), end_user (object), messaging (object), misc (object), phone_number_configuration (object), requirement_group_id (uuid), requirements (arrayobject]), user_feedback (object), webhook_url (uri)
rubyporting_order = client.porting_orders.update("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") puts(porting_order)
Returns: activation_settings (object), additional_steps (arraystring]), created_at (date-time), customer_group_reference (string | null), customer_reference (string | null), description (string), documents (object), end_user (object), id (uuid), messaging (object), misc (object), old_service_provider_ocn (string), parent_support_key (string | null), phone_number_configuration (object), phone_number_type (enum: landline, local, mobile, national, shared_cost, toll_free), phone_numbers (arrayobject]), porting_phone_numbers_count (integer), record_type (string), requirements (arrayobject]), requirements_met (boolean), status (object), support_key (string | null), updated_at (date-time), user_feedback (object), user_id (uuid), webhook_url (uri)
Deletes an existing porting order. This operation is restrict to porting orders in draft state.
DELETE /porting_orders/{id}
rubyresult = client.porting_orders.delete("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") puts(result)
Activate each number in a porting order asynchronously. This operation is limited to US FastPort orders only.
POST /porting_orders/{id}/actions/activate
rubyresponse = client.porting_orders.actions.activate("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") puts(response)
Returns: activate_at (date-time), activation_type (enum: scheduled, on-demand), activation_windows (arrayobject]), created_at (date-time), id (uuid), record_type (string), status (enum: created, in-process, completed, failed), updated_at (date-time)
POST /porting_orders/{id}/actions/cancel
rubyresponse = client.porting_orders.actions.cancel("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") puts(response)
Returns: activation_settings (object), additional_steps (arraystring]), created_at (date-time), customer_group_reference (string | null), customer_reference (string | null), description (string), documents (object), end_user (object), id (uuid), messaging (object), misc (object), old_service_provider_ocn (string), parent_support_key (string | null), phone_number_configuration (object), phone_number_type (enum: landline, local, mobile, national, shared_cost, toll_free), phone_numbers (arrayobject]), porting_phone_numbers_count (integer), record_type (string), requirements (arrayobject]), requirements_met (boolean), status (object), support_key (string | null), updated_at (date-time), user_feedback (object), user_id (uuid), webhook_url (uri)
Confirm and submit your porting order.
POST /porting_orders/{id}/actions/confirm
rubyresponse = client.porting_orders.actions.confirm("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") puts(response)
Returns: activation_settings (object), additional_steps (arraystring]), created_at (date-time), customer_group_reference (string | null), customer_reference (string | null), description (string), documents (object), end_user (object), id (uuid), messaging (object), misc (object), old_service_provider_ocn (string), parent_support_key (string | null), phone_number_configuration (object), phone_number_type (enum: landline, local, mobile, national, shared_cost, toll_free), phone_numbers (arrayobject]), porting_phone_numbers_count (integer), record_type (string), requirements (arrayobject]), requirements_met (boolean), status (object), support_key (string | null), updated_at (date-time), user_feedback (object), user_id (uuid), webhook_url (uri)
Creates a sharing token for a porting order. The token can be used to share the porting order with non-Telnyx users.
POST /porting_orders/{id}/actions/share
rubyresponse = client.porting_orders.actions.share("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") puts(response)
Returns: created_at (date-time), expires_at (date-time), expires_in_seconds (integer), id (uuid), permissions (arraystring]), porting_order_id (uuid), record_type (string), token (string)
Returns a list of your porting activation jobs.
GET /porting_orders/{id}/activation_jobs
rubypage = client.porting_orders.activation_jobs.list("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") puts(page)
Returns: activate_at (date-time), activation_type (enum: scheduled, on-demand), activation_windows (arrayobject]), created_at (date-time), id (uuid), record_type (string), status (enum: created, in-process, completed, failed), updated_at (date-time)
Returns a porting activation job.
GET /porting_orders/{id}/activation_jobs/{activationJobId}
rubyactivation_job = client.porting_orders.activation_jobs.retrieve( "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", id: "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e" ) puts(activation_job)
Returns: activate_at (date-time), activation_type (enum: scheduled, on-demand), activation_windows (arrayobject]), created_at (date-time), id (uuid), record_type (string), status (enum: created, in-process, completed, failed), updated_at (date-time)
Updates the activation time of a porting activation job.
PATCH /porting_orders/{id}/activation_jobs/{activationJobId}
rubyactivation_job = client.porting_orders.activation_jobs.update( "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", id: "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e" ) puts(activation_job)
Returns: activate_at (date-time), activation_type (enum: scheduled, on-demand), activation_windows (arrayobject]), created_at (date-time), id (uuid), record_type (string), status (enum: created, in-process, completed, failed), updated_at (date-time)
Returns a list of additional documents for a porting order.
GET /porting_orders/{id}/additional_documents
rubypage = client.porting_orders.additional_documents.list("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") puts(page)
Returns: content_type (string), created_at (date-time), document_id (uuid), document_type (enum: loa, invoice, csr, other), filename (string), id (uuid), porting_order_id (uuid), record_type (string), updated_at (date-time)
Creates a list of additional documents for a porting order.
POST /porting_orders/{id}/additional_documents
rubyadditional_document = client.porting_orders.additional_documents.create("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") puts(additional_document)
Returns: content_type (string), created_at (date-time), document_id (uuid), document_type (enum: loa, invoice, csr, other), filename (string), id (uuid), porting_order_id (uuid), record_type (string), updated_at (date-time)
Deletes an additional document for a porting order.
DELETE /porting_orders/{id}/additional_documents/{additional_document_id}
rubyresult = client.porting_orders.additional_documents.delete( "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", id: "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e" ) puts(result)
Returns a list of allowed FOC dates for a porting order.
GET /porting_orders/{id}/allowed_foc_windows
rubyresponse = client.porting_orders.retrieve_allowed_foc_windows("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") puts(response)
Returns: ended_at (date-time), record_type (string), started_at (date-time)
Returns a list of all comments of a porting order.
GET /porting_orders/{id}/comments
rubypage = client.porting_orders.comments.list("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") puts(page)
Returns: body (string), created_at (date-time), id (uuid), porting_order_id (uuid), record_type (string), user_type (enum: admin, user, system)
Creates a new comment for a porting order.
POST /porting_orders/{id}/comments
Optional: body (string)
rubycomment = client.porting_orders.comments.create("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") puts(comment)
Returns: body (string), created_at (date-time), id (uuid), porting_order_id (uuid), record_type (string), user_type (enum: admin, user, system)
GET /porting_orders/{id}/loa_template
rubyresponse = client.porting_orders.retrieve_loa_template("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") puts(response)
Returns a list of all requirements based on country/number type for this porting order.
GET /porting_orders/{id}/requirements
rubypage = client.porting_orders.retrieve_requirements("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") puts(page)
Returns: field_type (enum: document, textual), field_value (string), record_type (string), requirement_status (string), requirement_type (object)
GET /porting_orders/{id}/sub_request
rubyresponse = client.porting_orders.retrieve_sub_request("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") puts(response)
Returns: port_request_id (string), sub_request_id (string)
Returns a list of verification codes for a porting order.
GET /porting_orders/{id}/verification_codes
rubypage = client.porting_orders.verification_codes.list("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") puts(page)
Returns: created_at (date-time), id (uuid), phone_number (string), porting_order_id (uuid), record_type (string), updated_at (date-time), verified (boolean)
Send the verification code for all porting phone numbers.
POST /porting_orders/{id}/verification_codes/send
rubyresult = client.porting_orders.verification_codes.send_("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") puts(result)
Verifies the verification code for a list of phone numbers.
POST /porting_orders/{id}/verification_codes/verify
rubyresponse = client.porting_orders.verification_codes.verify("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") puts(response)
Returns: created_at (date-time), id (uuid), phone_number (string), porting_order_id (uuid), record_type (string), updated_at (date-time), verified (boolean)
Returns a list of action requirements for a specific porting order.
GET /porting_orders/{porting_order_id}/action_requirements
rubypage = client.porting_orders.action_requirements.list("porting_order_id") puts(page)
Returns: action_type (string), action_url (string | null), cancel_reason (string | null), created_at (date-time), id (string), porting_order_id (string), record_type (enum: porting_action_requirement), requirement_type_id (string), status (enum: created, pending, completed, cancelled, failed), updated_at (date-time)
Initiates a specific action requirement for a porting order.
POST /porting_orders/{porting_order_id}/action_requirements/{id}/initiate
rubyresponse = client.porting_orders.action_requirements.initiate( "id", porting_order_id: "550e8400-e29b-41d4-a716-446655440000", params: {first_name: "John", last_name: "Doe"} ) puts(response)
Returns: action_type (string), action_url (string | null), cancel_reason (string | null), created_at (date-time), id (string), porting_order_id (string), record_type (enum: porting_action_requirement), requirement_type_id (string), status (enum: created, pending, completed, cancelled, failed), updated_at (date-time)
Returns a list of all associated phone numbers for a porting order. Associated phone numbers are used for partial porting in GB to specify which phone numbers should be kept or disconnected.
GET /porting_orders/{porting_order_id}/associated_phone_numbers
rubypage = client.porting_orders.associated_phone_numbers.list("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") puts(page)
Returns: action (enum: keep, disconnect), country_code (string), created_at (date-time), id (uuid), phone_number_range (object), phone_number_type (enum: landline, local, mobile, national, shared_cost, toll_free), porting_order_id (uuid), record_type (string), updated_at (date-time)
Creates a new associated phone number for a porting order. This is used for partial porting in GB to specify which phone numbers should be kept or disconnected.
POST /porting_orders/{porting_order_id}/associated_phone_numbers
rubyassociated_phone_number = client.porting_orders.associated_phone_numbers.create( "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", action: :keep, phone_number_range: {} ) puts(associated_phone_number)
Returns: action (enum: keep, disconnect), country_code (string), created_at (date-time), id (uuid), phone_number_range (object), phone_number_type (enum: landline, local, mobile, national, shared_cost, toll_free), porting_order_id (uuid), record_type (string), updated_at (date-time)
Deletes an associated phone number from a porting order.
DELETE /porting_orders/{porting_order_id}/associated_phone_numbers/{id}
rubyassociated_phone_number = client.porting_orders.associated_phone_numbers.delete( "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", porting_order_id: "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e" ) puts(associated_phone_number)
Returns: action (enum: keep, disconnect), country_code (string), created_at (date-time), id (uuid), phone_number_range (object), phone_number_type (enum: landline, local, mobile, national, shared_cost, toll_free), porting_order_id (uuid), record_type (string), updated_at (date-time)
Returns a list of all phone number blocks of a porting order.
GET /porting_orders/{porting_order_id}/phone_number_blocks
rubypage = client.porting_orders.phone_number_blocks.list("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") puts(page)
Returns: activation_ranges (arrayobject]), country_code (string), created_at (date-time), id (uuid), phone_number_range (object), phone_number_type (enum: landline, local, mobile, national, shared_cost, toll_free), record_type (string), updated_at (date-time)
Creates a new phone number block.
POST /porting_orders/{porting_order_id}/phone_number_blocks
rubyphone_number_block = client.porting_orders.phone_number_blocks.create( "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", activation_ranges: [{end_at: "+4930244999910", start_at: "+4930244999901"}], phone_number_range: {end_at: "+4930244999910", start_at: "+4930244999901"} ) puts(phone_number_block)
Returns: activation_ranges (arrayobject]), country_code (string), created_at (date-time), id (uuid), phone_number_range (object), phone_number_type (enum: landline, local, mobile, national, shared_cost, toll_free), record_type (string), updated_at (date-time)
Deletes a phone number block.
DELETE /porting_orders/{porting_order_id}/phone_number_blocks/{id}
rubyphone_number_block = client.porting_orders.phone_number_blocks.delete( "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", porting_order_id: "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e" ) puts(phone_number_block)
Returns: activation_ranges (arrayobject]), country_code (string), created_at (date-time), id (uuid), phone_number_range (object), phone_number_type (enum: landline, local, mobile, national, shared_cost, toll_free), record_type (string), updated_at (date-time)
Returns a list of all phone number extensions of a porting order.
GET /porting_orders/{porting_order_id}/phone_number_extensions
rubypage = client.porting_orders.phone_number_extensions.list("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") puts(page)
Returns: activation_ranges (arrayobject]), created_at (date-time), extension_range (object), id (uuid), porting_phone_number_id (uuid), record_type (string), updated_at (date-time)
Creates a new phone number extension.
POST /porting_orders/{porting_order_id}/phone_number_extensions
rubyphone_number_extension = client.porting_orders.phone_number_extensions.create( "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", activation_ranges: [{end_at: 10, start_at: 1}], extension_range: {end_at: 10, start_at: 1}, porting_phone_number_id: "f24151b6-3389-41d3-8747-7dd8c681e5e2" ) puts(phone_number_extension)
Returns: activation_ranges (arrayobject]), created_at (date-time), extension_range (object), id (uuid), porting_phone_number_id (uuid), record_type (string), updated_at (date-time)
Deletes a phone number extension.
DELETE /porting_orders/{porting_order_id}/phone_number_extensions/{id}
rubyphone_number_extension = client.porting_orders.phone_number_extensions.delete( "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", porting_order_id: "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e" ) puts(phone_number_extension)
Returns: activation_ranges (arrayobject]), created_at (date-time), extension_range (object), id (uuid), porting_phone_number_id (uuid), record_type (string), updated_at (date-time)
Returns a list of your porting phone numbers.
GET /porting_phone_numbers
rubypage = client.porting_phone_numbers.list puts(page)
Returns: activation_status (enum: New, Pending, Conflict, Cancel Pending, Failed, Concurred, Activate RDY, Disconnect Pending, Concurrence Sent, Old, Sending, Active, Cancelled), phone_number (string), phone_number_type (enum: landline, local, mobile, national, shared_cost, toll_free), portability_status (enum: pending, confirmed, provisional), porting_order_id (uuid), porting_order_status (enum: draft, in-process, submitted, exception, foc-date-confirmed, cancel-pending, ported, cancelled), record_type (string), requirements_status (enum: requirement-info-pending, requirement-info-under-review, requirement-info-exception, approved), support_key (string)
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-03 | fail→pass | 12,514 | 7,526 | -40% | 1 | 1 | 0% | 2,568 | 12,493 | +386% | 0 | 0 | — |
case-01 | fail→pass | 12,916 | 9,208 | -29% | 1 | 1 | 0% | 2,664 | 12,985 | +387% | 0 | 0 | — |
case-02 | fail→pass | 14,124 | 6,921 | -51% | 1 | 1 | 0% | 2,782 | 12,527 | +350% | 0 | 0 | — |
case-04 | fail→pass | 14,779 | 2,499 | -83% | 1 | 1 | 0% | 2,682 | 11,368 | +324% | 0 | 0 | — |
case-05 | fail→pass | 12,441 | 5,324 | -57% | 1 | 1 | 0% | 2,515 | 12,080 | +380% | 0 | 0 | — |
case-06 | fail→pass | 5,538 | 2,781 | -50% | 1 | 1 | 0% | 1,086 | 11,514 | +960% | 0 | 0 | — |
case-07 | fail→pass | 7,385 | 2,564 | -65% | 1 | 1 | 0% | 1,551 | 11,453 | +638% | 0 | 0 | — |
case-08 | fail→pass | 6,368 | 3,155 | -50% | 1 | 1 | 0% | 1,441 | 11,622 | +707% | 0 | 0 | — |
case-09 | fail→pass | 5,829 | 2,881 | -51% | 1 | 1 | 0% | 1,252 | 11,564 | +824% | 0 | 0 | — |
case-10 | fail→pass | 8,140 | 2,740 | -66% | 1 | 1 | 0% | 1,770 | 11,575 | +554% | 0 | 0 | — |
case-11 | fail→pass | 10,757 | 3,866 | -64% | 1 | 1 | 0% | 2,303 | 11,886 | +416% | 0 | 0 | — |
case-12 | fail→pass | 6,724 | 3,892 | -42% | 1 | 1 | 0% | 1,446 | 11,633 | +704% | 0 | 0 | — |
case-13 | fail→pass | 7,757 | 3,736 | -52% | 1 | 1 | 0% | 1,661 | 11,877 | +615% | 0 | 0 | — |
case-14 | fail→pass | 7,391 | 3,196 | -57% | 1 | 1 | 0% | 1,549 | 11,692 | +655% | 0 | 0 | — |
case-15 | fail→pass | 8,912 | 3,786 | -58% | 1 | 1 | 0% | 1,881 | 11,850 | +530% | 0 | 0 | — |
case-16 | fail→pass | 9,220 | 4,279 | -54% | 1 | 1 | 0% | 1,874 | 11,970 | +539% | 0 | 0 | — |
case-17 | fail→pass | 11,455 | 4,027 | -65% | 1 | 1 | 0% | 2,441 | 11,808 | +384% | 0 | 0 | — |
case-18 | fail→pass | 7,497 | 3,602 | -52% | 1 | 1 | 0% | 1,637 | 11,779 | +620% | 0 | 0 | — |
case-19 | fail→pass | 9,854 | 3,445 | -65% | 1 | 1 | 0% | 1,928 | 11,716 | +508% | 0 | 0 | — |
case-20 | pass→pass | 12,898 | 8,232 | -36% | 1 | 1 | 0% | 2,680 | 12,703 | +374% | 0 | 0 | — |
case-21 | pass→pass | 4,828 | 5,105 | +6% | 1 | 1 | 0% | 1,096 | 12,148 | +1008% | 0 | 0 | — |
case-22 | pass→pass | 7,416 | 5,445 | -27% | 1 | 1 | 0% | 1,608 | 12,154 | +656% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +86 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.