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 |
mdn | Required | MDN phone number to be ported |
authorization_name | Required | Name on Letter of Authorization (LoA) |
first_name | Required | Customer first name |
last_name | Required | Customer last name |
address1 | Required | Service address line 1 |
address2 | Required | Service address line 2 |
city | Required | Service address city |
state | Required | Service address state |
postal_code | Required | Service address postal code |
account_number | Required | Losing carrier account number |
pin | Required | Losing carrier account PIN/passcode |
service_plan | Required | Apeiron service plan code |
iccid | Required | SIM ICCID for the cellular service |
ticket_id | Optional | External ticket/reference ID |
reference | Optional | Additional reference information |
subscriber_service_plan_id | Optional | Plan ID (alternative to service_plan) |
business_name | Optional | Business name for subscriber |
e911_address1 | Optional | Line 1 of street address for subscriber e911 information |
e911_address2 | Optional | Line 2 of street address for subscriber e911 information |
e911_city | Optional | City for subscriber e911 information |
e911_state | Optional | State for subscriber e911 information |
e911_postal_code | Optional | Postal code for subscriber e911 information |
create_subscriber | Optional | Create a Subscriber entry using the address information sent in the port request |
use_subscriber_address_for_e911 | Optional | Create 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