Account and project access
Use an enabled API account over HTTPS from an allowed IP address. The project must belong to that account and must not be deleted. Use the project’s unique ID from the port-order workflow, not its numeric database ID or a phone number. URL-encode the project ID when building a request.
Request
curl --silent --show-error --user "$API_USER:$API_PASSWORD" \
"https://api.multitel.net/v3/lnp/project/$PROJECT_ID/numbers"Response
Fictional response example.
{
"status": {
"code": 200,
"msg": "Project Numbers",
"results": 1
},
"response": [
{
"id": 21,
"number": "12025550123",
"status": 0,
"status_str": "Pending",
"isocode": "US",
"updated": "2026-10-23 12:00:00",
"foc": "",
"comment": "Example customer-visible note",
"date_created": "2026-10-23 12:00:00",
"date_completed": ""
}
]
}response is a list. An existing project with no numbers returns an empty list with API code 200 and status.results equal to 0. Missing projects instead return API code 404.
Number fields
| Field | Meaning |
|---|---|
| id, number, isocode | Numeric row ID, stored phone-number text and country code. The row ID is not the project ID. |
| status, status_str | Numeric status and its known label. |
| foc | Stored firm-order-commitment scheduling value. It may be empty; the handler does not convert it to a documented timezone or timestamp format. |
| updated, date_created, date_completed | Stored update, creation and completion values. Treat empty values explicitly; do not assume ISO8601 or infer a timezone from the fictional example. |
| comment | Stored customer-facing comment. Display it as text, not executable HTML. |
This projection omits the staff-only internal_comment field. It does not mean the separate single-number legacy lookup uses the same projection.
Ordering and monitoring
The query orders by creation time ascending. Rows with equal creation times have no additional guaranteed order. There is no pagination, incremental cursor or date filter. Read the complete list to reconcile a project, and avoid treating its current row count as a permanent catalogue.
Interpret porting status
| Value | Label |
|---|---|
| 0 | Pending |
| 1 | In Progress |
| 2 | Completed |
| 9 | Rejected |
Keep the numeric status and tolerate unknown values. Unknown labels fall back to the stored value rather than a guaranteed new label. A stored completion status or scheduled date does not by itself test inbound routing or every service on the number.
Errors and limits
Check both the HTTP response and status.code/status.msg. A missing, deleted or unowned project returns API code 404 with a project-not-found message. Authentication and source-IP restrictions also apply. The examples do not make a live request, and a successful response is not proof that a carrier has accepted or completed a transfer.
Effects
The reviewed handler only reads the project and its stored number rows. The response is a snapshot, not a carrier confirmation or a live service test. It does not initiate a port, change routing or debit the account.