Start a port-in request (the guided LOA)
POST
/v1/workspace/numbers/port-ins
const url = 'https://api.vocapable.com/v1/workspace/numbers/port-ins';const options = { method: 'POST', headers: { 'Idempotency-Key': 'example', Authorization: 'Bearer <token>', 'Content-Type': 'application/json' }, body: '{"numbers":[{"phone_e164":"example","pin":"example"}],"customer_type":"Business","business_name":"example","authorized_representative":"example","authorized_representative_email":"example","account_telephone_number":"example","account_number":"example","service_address":{"street":"example","street_2":"example","city":"example","state":"example","zip":"example"},"target_port_in_date":"2026-04-15"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.vocapable.com/v1/workspace/numbers/port-ins \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --header 'Idempotency-Key: example' \ --data '{ "numbers": [ { "phone_e164": "example", "pin": "example" } ], "customer_type": "Business", "business_name": "example", "authorized_representative": "example", "authorized_representative_email": "example", "account_telephone_number": "example", "account_number": "example", "service_address": { "street": "example", "street_2": "example", "city": "example", "state": "example", "zip": "example" }, "target_port_in_date": "2026-04-15" }'Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Header Parameters
Section titled “Header Parameters”Idempotency-Key
required
string
Unique key for this request, so a retry replays the original result instead of repeating the work. Stored for 24 hours; a replayed response carries Idempotent-Replay: true. A UUID is the documented shape. Required on this endpoint: a retry without one would dial a human twice or spend money twice.
Request Bodyrequired
Section titled “Request Bodyrequired”Media typeapplication/json
WorkspacePortInCreate
The guided LOA. Twilio generates the Letter of Authorization from these facts and emails it to the authorized representative to sign.
object
numbers
required
customer_type
Customer Type
string
business_name
required
Business Name
string
authorized_representative
required
Authorized Representative
string
authorized_representative_email
required
Authorized Representative Email
string
account_telephone_number
required
Account Telephone Number
string
account_number
required
Account Number
string
service_address
required
target_port_in_date
required
Target Port In Date
string format: date
Responses
Section titled “Responses”Successful Response
Media typeapplication/json
WorkspacePortIn
object
id
required
Id
string
stage
required
Stage
string
numbers
required
business_name
required
Business Name
string
authorized_representative
required
Authorized Representative
string
authorized_representative_email
required
Authorized Representative Email
string
service_address_summary
required
Service Address Summary
string
bill_uploaded
required
Bill Uploaded
boolean
forwarding_guidance
required
Forwarding Guidance
string
can_submit
required
Can Submit
boolean
can_cancel
required
Can Cancel
boolean
revision
required
Revision
integer
created_at
required
Created At
string format: date-time
Example
{ "stage": "draft"}Validation Error
Media typeapplication/json
HTTPValidationError
object
detail
Detail
Array<object>
ValidationErrorobject
loc
required
Location
Array
msg
required
Message
string
type
required
Error Type
string
input
Input
ctx
Context
object
Examplegenerated
{ "detail": [ { "loc": [ "example" ], "msg": "example", "type": "example", "input": "example", "ctx": {} } ]}