Step‑by‑step guidance to submit a Cellular Port‑In via the Apeiron API, including endpoint/auth, field definitions, JSON/multipart examples, troubleshooting, and a pre‑submission checklist.

1) Endpoint & Authentication

Method: POST
URL: https://api.apeiron.io/v2/cellular/port
Auth: Authorization: Basic <base64(user:pass)>

2) Required & Useful Fields

Field Required? Description
mdnRequiredMDN phone number to be ported
authorization_nameRequiredName on Letter of Authorization (LoA)
first_nameRequiredCustomer first name
last_nameRequiredCustomer last name
address1RequiredService address line 1
address2RequiredService address line 2
cityRequiredService address city
stateRequiredService address state
postal_codeRequiredService address postal code
account_numberRequiredLosing carrier account number
pinRequiredLosing carrier account PIN/passcode
service_planRequiredApeiron service plan code
iccidRequiredSIM ICCID for the cellular service
ticket_idOptionalExternal ticket/reference ID
referenceOptionalAdditional reference information
subscriber_service_plan_idOptionalPlan ID (alternative to service_plan)
business_nameOptionalBusiness name for subscriber
e911_address1OptionalLine 1 of street address for subscriber e911 information
e911_address2OptionalLine 2 of street address for subscriber e911 information
e911_cityOptionalCity for subscriber e911 information
e911_stateOptionalState for subscriber e911 information
e911_postal_codeOptionalPostal code for subscriber e911 information
create_subscriberOptionalCreate a Subscriber entry using the address information sent in the port request
use_subscriber_address_for_e911OptionalCreate a Subscriber entry using the address information sent in the port request if it doesn't exist. Additionally use the new or existing subscriber's address as the e911 address. This option is incompatible with the other e911 fields on this API

3) JSON Example (cURL)

curl -X POST https://api.apeiron.io/v2/cellular/port \
  -H 'Authorization: Basic BASE64_USER_PASS' \
  -H 'Content-Type: application/json' \
  -d '{
    "mdn":"4246346488",
    "authorization_name":"John Doe",
    "first_name":"John",
    "last_name":"Doe",
    "address1":"123 Main St",
    "address2":"",
    "city":"Anytown",
    "state":"CA",
    "postal_code":"12345",
    "account_number":"123456789",
    "pin":"1234",
    "service_plan":"UTT5GB",
    "iccid":"89012345678901234567"
  }'

4) JSON Example (Python requests)

import requests

url = "https://api.apeiron.io/v2/cellular/port"
headers = { "Authorization": "Basic BASE64_USER_PASS", "Content-Type": "application/json" }
payload = {
  "mdn": "4246346488",
  "authorization_name": "John Doe",
  "first_name": "John",
  "last_name": "Doe",
  "address1": "123 Main St",
  "address2": "",
  "city": "Anytown",
  "state": "CA",
  "postal_code": "12345",
  "account_number": "123456789",
  "pin": "1234",
  "service_plan": "UTT5GB",
  "iccid": "89012345678901234567"
}
r = requests.post(url, headers=headers, json=payload)
print(r.status_code, r.text)

5) Multipart Example (with LOA / Bill)

import requests

url = "https://api.apeiron.io/v2/cellular/port"
headers = { "Authorization": "Basic BASE64_USER_PASS" }
data = {
  "mdn": "4246346488",
  "authorization_name": "John Doe",
  "first_name": "John",
  "last_name": "Doe",
  "address1": "123 Main St",
  "address2": "",
  "city": "Anytown",
  "state": "CA",
  "postal_code": "12345",
  "account_number": "123456789",
  "pin": "1234",
  "service_plan": "UTT5GB",
  "iccid": "89012345678901234567"
}
files = { "loa": ("loa.pdf", open("loa.pdf","rb"), "application/pdf") }
r = requests.post(url, headers=headers, data=data, files=files)

6) Troubleshooting & Common Rejections

  • Address mismatch: must match losing carrier records
  • Invalid ICCID: must be unused and assigned to your org
  • Incorrect PIN: verify with losing carrier
  • MDN inactive: must be active and not pending port
  • Plan invalid: check service_plan or subscriber_service_plan_id

7) Pre‑Submission Checklist

  • ✓ Verify MDN is active and eligible
  • ✓ Confirm account number + PIN
  • ✓ Match service address to losing carrier records
  • ✓ Ensure ICCID is assigned and unused
  • ✓ Confirm plan/plan ID is valid
  • ✓ Provide E911 address if required
  • ✓ Attach LoA and bill if required
  • ✓ Use JSON unless files needed
  • ✓ Record returned port order ID
Need Additional Help?

For more detailed API documentation, visit our API Reference or contact our support team.