Skip to content

API reference

XipFax's API, for your own server and the apps you connect, at https://api.xipfax.com.

Version
2026-11-03
On this page

Keys

Every operation takes an API key of your XipFax account as a bearer token, as in Authorization: Bearer xipfax_key_live_…. A key acts for its own account alone, and a revoked key stops at once. A request with no key is refused 401 authentication_required, and one whose key is revoked or unknown 401 authentication_failed.

An API key of your XipFax account, xipfax_key_live_ and 32 more characters, sent as a bearer token. It opens every operation for its own account; it carries no scopes.

Apps

Every operation also takes, as a bearer token, the access token XipFax's OAuth server gives an app XipFax registers for the API, once a client connects it. The app asks for the resource https://api.xipfax.com and the scope fax; a token for another resource opens nothing here, and an app that names itself by the address of its metadata document is refused invalid_target for this one. A token acts for the client who allowed the app, and stops at once when they disconnect it. A request whose token has expired, or whose app is disconnected, is refused 401 authentication_failed, and one whose token lacks fax 403 insufficient_scope.

The access token XipFax's OAuth server gives an app XipFax registers for the API, once a client connects it, for the resource https://api.xipfax.com, sent as a bearer token. The app proves its code by PKCE with S256. An app that names itself by the address of its metadata document is refused invalid_target for this resource.

The server’s addresses

https://backend.xipfax.com/auth/oauth2/authorize
Where the client allows the app.
https://backend.xipfax.com/auth/oauth2/token
Where the app takes its token, and refreshes it.

Its scopes

fax
Every operation, for the client who allowed the app.
offline_access
A refresh token beside the access token.

Versions

A request may name a version in Xip-Version; without one, it is answered in the version that was current when its account was made. Every answer names the version it is in, and a version that isn't released is refused 400 version_invalid, with the released ones in valid_versions. A version is the day its contract was fixed: a change that would break a client ships only in a new version, and one that adds ships to every version.

The headers of every answer

X-Request-Idstring
XipFax's id for the request, which an error body names as request_id.
Xip-Versionone of 2026-11-03
The version the answer is in.

Errors

A refusal is {"error": {...}}: a code to branch on, a message for a person, one entry in details for each problem, and the request's id, which X-Request-Id names on every answer.

Each is an Error.

Retries

Every POST names a key of your own in Idempotency-Key, and runs once for it: for 24 hours, a request that names the key again is answered as the first was, with its status, body and X-Request-Id, its signed links null. A success and a 422 are kept; any other refusal lets the key go, for a retry to run.

Webhooks

XipFax doesn’t offer a way to register an endpoint yet. Until it does, no event is posted. Each event goes to every webhook endpoint of your account when a fax you sent is delivered or fails for good, and when a fax sent to your number arrives, as webhooks describes each: {"id", "type", "api_version", "created_at", "data"}, the fax in data as GET /faxes gives it. Each delivery is signed per Standard Webhooks with the endpoint’s own secret, shown once, when the endpoint is registered: verify webhook-signature before you trust the body. XipFax posts only to https at a public address, and follows no redirect. Answer a 2xx within 15 seconds. After a 408, a 429, a 5xx or no answer, XipFax tries again over about three days, later where Retry-After asks for longer, up to a day; after a redirect or another 4xx, it stops. An event may come more than once, or after a later one: take each id once.

Growth

Within a version, an answer may gain a member and an open set a new value: read what you know, and carry the rest through.

Quote

Quote a fax

GET /quote

The price of one fax of so many pages, sent without a plan, from XipFax’s price list: what its checkout charges. A fax sent on the plan counts its pages there instead.

Parameters

Xip-Versionheaderone of 2026-11-03optional
The version to answer in; without it, the version that was current when the account was made.
pagesqueryinteger, 1 to 250
The pages to send, the cover page among them.

Answers

200Quote
The quote.
400
Refused: parameter_missing, parameter_invalid, parameter_unknown, version_invalid.
401
Refused: authentication_required, authentication_failed.
403
Refused: insufficient_scope.
Request
curl "https://api.xipfax.com/quote?pages=1" \
  -H "Authorization: Bearer $XIPFAX_API_KEY"

Draft

Read the draft

GET /draft

The fax you prepare, one at a time: the same draft your account’s web app shows, with its documents in the order it sends them.

Parameters

Xip-Versionheaderone of 2026-11-03optional
The version to answer in; without it, the version that was current when the account was made.

Answers

200Draft
The draft.
400
Refused: parameter_unknown, version_invalid.
401
Refused: authentication_required, authentication_failed.
403
Refused: insufficient_scope.
Request
curl "https://api.xipfax.com/draft" \
  -H "Authorization: Bearer $XIPFAX_API_KEY"

Add a document

POST /draft/documents

Adds a PDF after the draft’s last document. Give size_bytes to upload it: the answer gives a link to send its bytes to, and the document is uploading until you complete it. Or give url, for XipFax to fetch it: the answer gives it ready, its pages counted. A PDF XipFax can’t read, one locked with a password, and one that takes the fax past 250 pages, its cover page included, are refused.

Parameters

Xip-Versionheaderone of 2026-11-03optional
The version to answer in; without it, the version that was current when the account was made.
Idempotency-Keyheaderstring, 255 characters at most
A key of your own for the request, such as a UUID: 1 to 255 printable ASCII characters. For 24 hours, a request that names it again is answered as the first was, rather than run again, its signed links null; one for another request is refused.

Body

NewDocument

Answers

201DocumentAdded
The document added, and where to upload it.
201 Locationheaderstring
The document, as /draft/documents/{document_id}.
400
Refused: parameter_missing, parameter_invalid, parameter_unknown, idempotency_key_missing, version_invalid.
401
Refused: authentication_required, authentication_failed.
403
Refused: insufficient_scope.
409
Refused: idempotency_key_in_use.
413
Refused: content_too_large.
422
Refused: fax_too_long, document_unreadable, document_locked, document_too_large, document_link_not_public, document_link_refused, idempotency_key_reused.
502
Refused: upstream_error.
504
Refused: upstream_timeout.
Request
curl -X POST "https://api.xipfax.com/draft/documents" \
  -H "Authorization: Bearer $XIPFAX_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "lease.pdf",
    "url": "https://example.com/lease.pdf"
  }'

Complete a document

POST /draft/documents/{document_id}/complete

Reads an uploaded document back: ready, its pages counted; or removed and refused, where XipFax can’t read it, it’s locked with a password, or it takes the fax past 250 pages, its cover page included. A document ready already is answered as it is.

Parameters

Xip-Versionheaderone of 2026-11-03optional
The version to answer in; without it, the version that was current when the account was made.
Idempotency-Keyheaderstring, 255 characters at most
A key of your own for the request, such as a UUID: 1 to 255 printable ASCII characters. For 24 hours, a request that names it again is answered as the first was, rather than run again, its signed links null; one for another request is refused.
document_idpathstring
The document, as the draft names it.

Answers

200DraftDocument
The document, ready.
400
Refused: parameter_unknown, idempotency_key_missing, version_invalid.
401
Refused: authentication_required, authentication_failed.
403
Refused: insufficient_scope.
404
Refused: resource_not_found.
409
Refused: document_not_uploaded, idempotency_key_in_use.
413
Refused: content_too_large.
422
Refused: fax_too_long, document_unreadable, document_locked, idempotency_key_reused.
Request
curl -X POST "https://api.xipfax.com/draft/documents/$DOCUMENT_ID/complete" \
  -H "Authorization: Bearer $XIPFAX_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)"

Remove a document

DELETE /draft/documents/{document_id}

Removes a document from the draft, its bytes with it.

Parameters

Xip-Versionheaderone of 2026-11-03optional
The version to answer in; without it, the version that was current when the account was made.
document_idpathstring
The document, as the draft names it.

Answers

204
The document is removed.
400
Refused: parameter_unknown, version_invalid.
401
Refused: authentication_required, authentication_failed.
403
Refused: insufficient_scope.
404
Refused: resource_not_found.
Request
curl -X DELETE "https://api.xipfax.com/draft/documents/$DOCUMENT_ID" \
  -H "Authorization: Bearer $XIPFAX_API_KEY"

Send the draft

POST /draft/send

Sends the draft to the number or the office you name, as far as you let your credential send without you. Your API key sends it on your plan, its pages counted there; or, where you have no plan, on the card you saved, its price held until the fax ends. An app you connected sends it on your plan alone, and only where you let it send straight away. Otherwise nothing is sent or held, the draft keeps where you named, and the answer gives the link where the fax waits for you on xipfax.com. So does a draft whose cover page is on, which xipfax.com draws there: a send to an office that asks for a cover page marked Confidential turns it on. So do a card its bank refused or asked you to confirm, and a send past the 20 a day your credentials make without you. paid_by and confirm_url say which. A send refused changes nothing of the draft. Name the draft’s documents as GET /draft gives them: a draft whose documents aren’t these, in this order, is refused draft_changed, so that nothing you didn’t name is sent.

Parameters

Xip-Versionheaderone of 2026-11-03optional
The version to answer in; without it, the version that was current when the account was made.
Idempotency-Keyheaderstring, 255 characters at most
A key of your own for the request, such as a UUID: 1 to 255 printable ASCII characters. For 24 hours, a request that names it again is answered as the first was, rather than run again, its signed links null; one for another request is refused.

Body

SendDraft

Answers

200Sent
The fax on its way, or your draft and where it waits for you.
400
Refused: parameter_missing, parameter_invalid, parameter_unknown, idempotency_key_missing, version_invalid.
401
Refused: authentication_required, authentication_failed.
403
Refused: insufficient_scope.
404
Refused: resource_not_found.
409
Refused: draft_changed, document_uploading, fax_already_paid, plan_missing, idempotency_key_in_use.
413
Refused: content_too_large.
422
Refused: office_unknown, documents_missing, fax_too_long, account_sending_stopped, idempotency_key_reused.
502
Refused: upstream_error.
503
Refused: payments_unavailable.
Request
curl -X POST "https://api.xipfax.com/draft/send" \
  -H "Authorization: Bearer $XIPFAX_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "fax_number": "+1 202 555 0143",
    "document_ids": [
      "01JC0000000000000000000002"
    ]
  }'

Faxes

List the faxes

GET /faxes

Every fax you sent and every fax sent to your number, newest first, a page at a time: the faxes your account’s web app logs, page for page. Give a page’s next_cursor as starting_after for the page after it.

Parameters

Xip-Versionheaderone of 2026-11-03optional
The version to answer in; without it, the version that was current when the account was made.
limitqueryinteger, 1 to 100, 20 if not namedoptional
How many items the page holds.
starting_afterquerystring, 64 characters at mostoptional
The next_cursor of the page before, for the page after it. A cursor that names nothing the list holds gives an empty page.
directionqueryone of sent, receivedoptional
One way’s faxes alone.

Answers

200FaxPage
A page of your faxes.
400
Refused: parameter_invalid, parameter_unknown, version_invalid.
401
Refused: authentication_required, authentication_failed.
403
Refused: insufficient_scope.
Request
curl "https://api.xipfax.com/faxes" \
  -H "Authorization: Bearer $XIPFAX_API_KEY"

Read a fax

GET /faxes/{fax_id}

A fax you sent or one sent to your number, as GET /faxes gives it, where it stands now; or your draft, draft, by its id, which the fax keeps once you send it.

Parameters

Xip-Versionheaderone of 2026-11-03optional
The version to answer in; without it, the version that was current when the account was made.
fax_idpathstring
The fax, as your log names it, or your draft, by its id.

Answers

200Fax
The fax.
400
Refused: parameter_unknown, version_invalid.
401
Refused: authentication_required, authentication_failed.
403
Refused: insufficient_scope.
404
Refused: resource_not_found.
Request
curl "https://api.xipfax.com/faxes/$FAX_ID" \
  -H "Authorization: Bearer $XIPFAX_API_KEY"

Read a fax’s confirmation

GET /faxes/{fax_id}/confirmation

A delivered fax’s confirmation, by a link that reads it for a few minutes: one page that says who received how many pages, from whom and when, and none of your pages, so you can pass it on. A fax not delivered has none.

Parameters

Xip-Versionheaderone of 2026-11-03optional
The version to answer in; without it, the version that was current when the account was made.
fax_idpathstring
The fax, as your log names it, or your draft, by its id.

Answers

200Confirmation
The link that reads the confirmation.
400
Refused: parameter_unknown, version_invalid.
401
Refused: authentication_required, authentication_failed.
403
Refused: insufficient_scope.
404
Refused: resource_not_found.
409
Refused: fax_not_delivered.
Request
curl "https://api.xipfax.com/faxes/$FAX_ID/confirmation" \
  -H "Authorization: Bearer $XIPFAX_API_KEY"

Plan

Read the plan

GET /plan

Your plan, as your account’s web app shows it: how it is paid for and what that costs, when it renews or ends, its fax number and this month’s pages; plan is null where you have none.

Parameters

Xip-Versionheaderone of 2026-11-03optional
The version to answer in; without it, the version that was current when the account was made.

Answers

200PlanAnswer
Your plan, or none.
400
Refused: parameter_unknown, version_invalid.
401
Refused: authentication_required, authentication_failed.
403
Refused: insufficient_scope.
Request
curl "https://api.xipfax.com/plan" \
  -H "Authorization: Bearer $XIPFAX_API_KEY"

Offices

List the offices

GET /offices

The government offices XipFax gives the fax number of, from the agencies’ own pages: those search finds, as XipFax’s own office search finds them for the same words, and for place where the agency gives a number for each place; in the list’s order, a page at a time. Give a page’s next_cursor as starting_after for the page after it.

Parameters

Xip-Versionheaderone of 2026-11-03optional
The version to answer in; without it, the version that was current when the account was made.
limitqueryinteger, 1 to 100, 20 if not namedoptional
How many items the page holds.
starting_afterquerystring, 64 characters at mostoptional
The next_cursor of the page before, for the page after it. A cursor that names nothing the list holds gives an empty page.
searchquerystring, 100 characters at mostoptional
The words an office’s name, its number or what it takes holds.
placequeryone of AL, AK, AZ, AR, CA, CO, CT, DE, DC, FL, GA, HI, ID, IL, IN, IA, KS, KY, LA, ME, MD, MA, MI, MN, MS, MO, MT, NE, NV, NH, NJ, NM, NY, NC, ND, OH, OK, OR, PA, RI, SC, SD, TN, TX, UT, VT, VA, WA, WV, WI, WY, AS, GU, MP, PR, VI, APO-FPO, ABROADoptional
Where the person lives, or where the business is.

Answers

200OfficePage
A page of the offices.
400
Refused: parameter_invalid, parameter_unknown, version_invalid.
401
Refused: authentication_required, authentication_failed.
403
Refused: insufficient_scope.
Request
curl "https://api.xipfax.com/offices" \
  -H "Authorization: Bearer $XIPFAX_API_KEY"

Webhooks

A fax was delivered

fax.delivered

Posted once a fax you sent is delivered: data is the fax, delivered. XipFax doesn’t offer a way to register an endpoint yet.

Parameters

webhook-idheaderstring
The event’s id, the same on every delivery of it: take each once.
webhook-timestampheaderstring
When XipFax made this delivery, in Unix seconds: refuse one far from your own clock.
webhook-signatureheaderstring
v1, and the base64 HMAC-SHA256 of {webhook-id}.{webhook-timestamp}.{body}, the body exactly as it came, under the key your endpoint’s secret holds: the base64 after whsec_.

Body

FaxEvent

Answers

2XX
The event is taken. Anything else, or no answer within 15 seconds, is not: after a 408, a 429, a 5xx or no answer, XipFax tries again over about three days; after a redirect, which it doesn’t follow, or another 4xx, it stops.

A fax failed

fax.failed

Posted once a fax you sent fails for good, with no try left: data is the fax, failed. XipFax doesn’t offer a way to register an endpoint yet.

Parameters

webhook-idheaderstring
The event’s id, the same on every delivery of it: take each once.
webhook-timestampheaderstring
When XipFax made this delivery, in Unix seconds: refuse one far from your own clock.
webhook-signatureheaderstring
v1, and the base64 HMAC-SHA256 of {webhook-id}.{webhook-timestamp}.{body}, the body exactly as it came, under the key your endpoint’s secret holds: the base64 after whsec_.

Body

FaxEvent

Answers

2XX
The event is taken. Anything else, or no answer within 15 seconds, is not: after a 408, a 429, a 5xx or no answer, XipFax tries again over about three days; after a redirect, which it doesn’t follow, or another 4xx, it stops.

A fax arrived

fax.received

Posted once a fax sent to your number arrives: data is the fax, received. XipFax doesn’t offer a way to register an endpoint yet.

Parameters

webhook-idheaderstring
The event’s id, the same on every delivery of it: take each once.
webhook-timestampheaderstring
When XipFax made this delivery, in Unix seconds: refuse one far from your own clock.
webhook-signatureheaderstring
v1, and the base64 HMAC-SHA256 of {webhook-id}.{webhook-timestamp}.{body}, the body exactly as it came, under the key your endpoint’s secret holds: the base64 after whsec_.

Body

FaxEvent

Answers

2XX
The event is taken. Anything else, or no answer within 15 seconds, is not: after a 408, a 429, a 5xx or no answer, XipFax tries again over about three days; after a redirect, which it doesn’t follow, or another 4xx, it stops.

Objects

Error

errorobject
error.codestring
What refused the request, from an open set: branch on it.
error.messagestring
XipFax's sentence, for a person; never branch on it.
error.detailsarray of object
One entry for each problem with the request; none where it has no parts.
error.details[].pathstring
The member it is about, as a dotted path from the body's root; query.<name> for a query parameter and header.<name> for a header.
error.details[].codestring
What is wrong with it.
error.details[].messagestring
The same, for a person.
error.request_idstring
The request, as its answer's X-Request-Id names it.
error.doc_urlstring or null
The page that explains the code; null while none does.
error.valid_versionsarray of stringoptional
The released versions, which version_invalid names.

Quote

pagesinteger
The pages quoted.
priceobject
What the fax costs without a plan. A fax sent on the plan counts its pages there instead.
price.amount_minorinteger
In the currency’s smallest unit: cents.
price.currencyUSD
price_shownstring
The price as XipFax prints it: $4.99.
termsstring
How the price is made, as XipFax’s pages say it: the first pages, then each page.
price_liststring
The version of XipFax’s price list the quote is from.

Draft

The fax you prepare, one at a time: the one your account’s web app shows too.

idstring
The draft, which becomes the fax once it is sent.
documentsarray of DraftDocument
Its documents, in the order the fax sends them: 250 at most.

DraftDocument

A document of the draft, in its place in the fax.

idstring
The document.
namestring
Its name, as it was added.
size_bytesinteger
Its size.
page_countinteger or null
Its pages, once XipFax has read it; null while it uploads.
statusone of uploading, ready
uploading until XipFax has read it back, then ready. An open set: read what you know.
urlstring or null
A link that reads the document for a few minutes, once it is ready; null while it uploads, and in an answer given again for a repeated Idempotency-Key.

DocumentAdded

A document added to the draft, and where its bytes go.

documentDraftDocument
A document of the draft, in its place in the fax.
uploadobject or null
Where to send its bytes: a PUT to url with these headers, within a few minutes, as many bytes as size_bytes says; then complete it. Null where XipFax fetched it from its link, and in an answer given again for a repeated Idempotency-Key.
upload.urlstring
upload.headersmap of string

Money

An amount of money.

amount_minorinteger
In the currency’s smallest unit: cents.
currencystring
Its ISO 4217 code: USD.

Fax

A fax of your log: one you sent, or one sent to your number.

idstring
The fax.
directionone of sent, received
sent for a fax you sent, received for one sent to your number.
statusone of draft, sending, delivered, failed, received
Where it stands: draft for your draft, read by its id until it is sent; sending until it is delivered or fails for good, then delivered or failed; received for a fax sent to your number. An open set: read what you know.
stepone of queued, preparing, sending or null
Where a fax being sent has got to: queued, preparing its pages, then sending; null for a draft, once it has ended, and for a fax received. An open set.
office_idstring or null
The office it went to, by its id on XipFax’s list (GET /offices); null for a number typed, and for a fax received.
to_numberstring or null
The number it went to, +1 and ten digits; for a fax received, your number it came to.
from_numberstring or null
For a fax you sent, your XipFax number it went from; for a fax received, the caller’s number in E.164, null where the caller’s line gave none.
pagesinteger or null
Its pages, the cover page among them.
priceMoney or null
What it costs: what its payment holds while it sends, and what was taken once it was delivered. Null for a fax sent on the plan, for one that failed, which costs nothing, and for a fax received.
sent_atstring or null
When you sent it; for a fax received, when it came.
finished_atstring or null
When it was delivered or failed for good; null until then.
retry_atstring or null
When it is tried again, while a failed try waits for the next; null otherwise.
failureone of no_answer, busy, call_dropped, declined, not_a_fax_number, ours or null
Why its last try failed: no_answer, busy, call_dropped, declined, not_a_fax_number, or ours for a failure on XipFax’s side. Null where none failed. An open set.
time_zonestring or null
The time zone its confirmation tells its times in, as the IANA database names it; null for a fax received.
sender_namestring or null
For a fax you sent, the sender’s name its header line gave.
cover_confidentialboolean
Whether its cover page was marked Confidential; false for a fax received.

FaxPage

A page of your log: the faxes you sent and received, newest first.

dataarray of Fax
The page’s items, in the list’s order.
has_moreboolean
Whether a page comes after this one.
next_cursorstring or null
What starting_after takes for the page after this one; null on the last page.

Sent

The draft sent: fax is the fax on its way, sending; or, where it waits for you on xipfax.com, your draft, draft, under the id the fax keeps once you send it.

faxFax
A fax of your log: one you sent, or one sent to your number.
paid_byone of plan, card or null
How the fax is paid, once it is sent: plan, its pages counted on your plan; or card, its price held on the card you saved until it ends, taken once it is delivered and let go if it fails. Null where it isn’t sent, nothing held: confirm_url says where it waits. An open set: read what you know.
confirm_urlstring or null
Where the fax waits for you, where it isn’t sent: your draft on xipfax.com, once you sign in, where you look it over and send it, paying for it there where you have no plan. Null once it is sent.

Confirmation

A delivered fax’s confirmation: one page that says who received how many pages, from whom and when, which you can pass on.

urlstring
A link that reads the confirmation, a PDF of one page, for a few minutes.

Plan

Your plan: your own fax number, and pages each month.

intervalone of month, year
How often it is paid for: each month, or each year.
priceMoney
What it costs each time it is paid for.
period_ends_atstring
The end of the period paid for: the plan renews then, or ends then where it is cancelled.
is_endingboolean
Whether it is cancelled, to end at period_ends_at rather than renew.
refused_renewalMoney or null
What the renewal the card refused charges, until it is paid; null where none is owed.
numberobject
The fax number that comes with the plan, yours while the plan lasts.
number.area_codestring
The US area code it is in.
number.statusone of ordering, active, failed
ordering while XipFax gets it, active once it is yours, failed where none could be had in its area code. An open set.
number.fax_numberstring or null
The number, +1 and ten digits, once it is ordered; null before, and once one fails.
pagesobject
The month’s pages, sent and received together.
pages.usedinteger
The pages sent and received this month.
pages.includedinteger
The pages the plan includes each month.
pages.resets_atstring
When the month’s pages start again.

PlanAnswer

Your plan, or none.

planPlan or null
Your plan; null where you have none.

Office

A government office whose fax number XipFax gives, from the agency’s own pages.

idstring
The office, as XipFax’s list names it: irs-caf-ogden. A fax of your log names the office it went to by it.
namestring
The office by its agency and its name: IRS Ogden CAF unit.
fax_numberstring
The number a fax to it goes to, +1 and ten digits.
fax_number_from_abroadstring or null
The number the agency gives a sender outside the United States, in E.164; null where it gives none.
applies_toarray of string
Whom or what the agency gives this number for, where it gives others another: Ohio, or businesses in Wisconsin; with place, only what applies there, where any of it does. Empty where the office takes what it takes from anyone.
takesarray of string
The forms and notices it takes, as XipFax’s pages name them: Form 2848.
signed_in_inkboolean
Whether it takes a form only signed by hand, in ink.
confidential_coverboolean
Whether it asks for a cover page marked Confidential, which a fax to it from XipFax marks.
sourcesarray of object
The agency’s own pages that print the number.
sources[].titlestring
The page’s or the form’s own title.
sources[].urlstring
Its address.
checked_onstring
The day XipFax last found the number on each of its sources: YYYY-MM-DD.

OfficePage

A page of XipFax’s offices: those your search finds, for your place where you give one, in the list’s order.

dataarray of Office
The page’s items, in the list’s order.
has_moreboolean
Whether a page comes after this one.
next_cursorstring or null
What starting_after takes for the page after this one; null on the last page.

FaxEvent

What XipFax tells your endpoint of a fax: one delivered, failed for good, or received.

idstring
The event, the same on every delivery of it, as webhook-id names it: take each once.
typeone of fax.delivered, fax.failed, fax.received
What happened: fax.delivered once a fax you sent is delivered, fax.failed once one fails for good, and fax.received once a fax sent to your number arrives. An open set: ignore a type you don’t handle.
api_versionone of 2026-11-03
The version data is in.
created_atstring
When it happened.
dataFax
The fax, as the event found it and as GET /faxes gives it.

NewDocument

namestring, 255 characters at most
Its name, such as its file’s: 255 characters at most.
size_bytesinteger, 1 to 41943040optional
Its size, to upload it: a PDF of 40 MB at most, sent by the link the answer gives.
urlstring, 2048 characters at mostoptional
Where XipFax fetches it from: an https link to a public address that answers with the PDF itself, 40 MB at most, within 15 seconds. XipFax follows no redirect.

SendDraft

fax_numberstringoptional
The number to send it to, in the US, its territories or Canada, written as you like, such as +1 202 555 0143.
office_idstring, 80 characters at mostoptional
Or the office to send it to, by its id on XipFax’s list (GET /offices), which gives its number.
document_idsarray of string
The draft’s documents, as GET /draft names them, in its order: a draft whose documents aren’t these, in this order, is refused draft_changed, so that nothing you didn’t name is sent.