Before sending
Use a sending number you are authorized to present and a recipient who expects your fax. This request creates a real, potentially billable transmission. Use a prepared PDF or TIFF for the most predictable page detection. A queued response confirms acceptance, not delivery.
Use an enabled MultiTEL API account. Send HTTP Basic credentials for a password account, or a Bearer token for a token account. Account permissions and IP restrictions still apply. Do not use internal worker credentials.
Upload the document
curl --silent --show-error --user "$API_USER:$API_PASSWORD" \
--form-string from_number=+12125550123 \
--form-string to_number=+12125550124 \
--form fax_file=@./document.pdf \
https://api.multitel.net/v3/send_fax| Field | Required | Meaning |
|---|---|---|
from_number | Yes | Your authorized sender number. Use international format beginning with + and country code. |
to_number | Yes | The destination fax number, in international format. |
fax_file | Yes for multipart | The uploaded document. Let curl set the multipart Content-Type and boundary. |
webhook_url | No | Optional HTTP or HTTPS callback URL; HTTPS is preferable. Callback payload and delivery guarantees are still under review: poll fax_status for the documented status workflow. |
JSON is also accepted with Content-Type: application/json, the same number fields and optional webhook_url, plus file_name and file_b64. file_b64 contains strict Base64 document bytes, without a data: prefix. A valid multipart fax_file takes precedence. This is not a file-URL fetch API.
Document and submission limits
The application accepts at most 15,728,640 decoded document bytes (15 MiB), with pdf, tif, tiff, jpg, jpeg, png, doc, docx or txt extensions. An allowed extension does not guarantee that the service can count or convert the pages. Infrastructure request limits may be lower, and Base64 increases the request size.
Per account, the current application permits one queued or sending job to the same destination, at most five submissions to that destination in the preceding hour, and at most 50 submissions overall in the preceding hour. A rate-limit response uses API code 429. Wait before retrying; do not try to bypass the limits.
Keep the job ID
Read both the HTTP result and the JSON status.code. JSON failures may arrive with HTTP 200. A successful JSON response has status and response; the examples use fictional data.
{
"status": {
"code": 200,
"msg": "Fax queued"
},
"response": {
"job_id": "0123456789abcdef0123456789abcdef"
}
}Poll fax_status using response.job_id. If the send response is lost, check the portal outbox before sending again: repeated requests can create separate transmissions. No client idempotency parameter is exposed by this handler.
Errors and balance checks
API codes include 400 for missing fields, invalid callback URL, rejected document or page-detection failure; 401 for missing authentication; 402 when the estimated fax cost plus queued/sending estimates exceeds the available account balance; 429 for rate limits; and 500 for a staging failure. Read status.msg for the specific reason.
The queue records an estimated cost before transmission. Do not interpret acceptance, the balance check or this estimate as confirmation of a completed charge. Final billing and callback details remain subject to verification.