API reference
XipFax's API, for your own server and the apps you connect, at https://api.xipfax.com.
- Version
- 2026-11-03
- As OpenAPI 3.1
- https://api.xipfax.com/openapi.json
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 of2026-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 of2026-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.
curl "https://api.xipfax.com/quote?pages=1" \
-H "Authorization: Bearer $XIPFAX_API_KEY"This browser didn’t let us copy it. Select the code to copy it.
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 of2026-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.
curl "https://api.xipfax.com/draft" \
-H "Authorization: Bearer $XIPFAX_API_KEY"This browser didn’t let us copy it. Select the code to copy it.
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 of2026-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
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.
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"
}'This browser didn’t let us copy it. Select the code to copy it.
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 of2026-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.
curl -X POST "https://api.xipfax.com/draft/documents/$DOCUMENT_ID/complete" \
-H "Authorization: Bearer $XIPFAX_API_KEY" \
-H "Idempotency-Key: $(uuidgen)"This browser didn’t let us copy it. Select the code to copy it.
Remove a document
DELETE /draft/documents/{document_id}
Removes a document from the draft, its bytes with it.
Parameters
Xip-Versionheaderone of2026-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.
curl -X DELETE "https://api.xipfax.com/draft/documents/$DOCUMENT_ID" \
-H "Authorization: Bearer $XIPFAX_API_KEY"This browser didn’t let us copy it. Select the code to copy it.
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 of2026-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
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.
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"
]
}'This browser didn’t let us copy it. Select the code to copy it.
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 of2026-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_cursorof the page before, for the page after it. A cursor that names nothing the list holds gives an empty page. directionqueryone ofsent,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.
curl "https://api.xipfax.com/faxes" \
-H "Authorization: Bearer $XIPFAX_API_KEY"This browser didn’t let us copy it. Select the code to copy it.
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 of2026-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.
curl "https://api.xipfax.com/faxes/$FAX_ID" \
-H "Authorization: Bearer $XIPFAX_API_KEY"This browser didn’t let us copy it. Select the code to copy it.
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 of2026-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.
curl "https://api.xipfax.com/faxes/$FAX_ID/confirmation" \
-H "Authorization: Bearer $XIPFAX_API_KEY"This browser didn’t let us copy it. Select the code to copy it.
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 of2026-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.
curl "https://api.xipfax.com/plan" \
-H "Authorization: Bearer $XIPFAX_API_KEY"This browser didn’t let us copy it. Select the code to copy it.
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 of2026-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_cursorof 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 ofAL,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.
curl "https://api.xipfax.com/offices" \
-H "Authorization: Bearer $XIPFAX_API_KEY"This browser didn’t let us copy it. Select the code to copy it.
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-signatureheaderstringv1,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 afterwhsec_.
Body
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-signatureheaderstringv1,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 afterwhsec_.
Body
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-signatureheaderstringv1,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 afterwhsec_.
Body
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
errorobjecterror.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 andheader.<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-Idnames 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_invalidnames.
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.currencyUSDprice_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 ofuploading,readyuploadinguntil XipFax has read it back, thenready. 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
urlwith theseheaders, within a few minutes, as many bytes assize_bytessays; then complete it. Null where XipFax fetched it from its link, and in an answer given again for a repeatedIdempotency-Key. upload.urlstringupload.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 ofsent,receivedsentfor a fax you sent,receivedfor one sent to your number.statusone ofdraft,sending,delivered,failed,received- Where it stands:
draftfor your draft, read by its id until it is sent;sendinguntil it is delivered or fails for good, thendeliveredorfailed;receivedfor a fax sent to your number. An open set: read what you know. stepone ofqueued,preparing,sendingor null- Where a fax being sent has got to:
queued,preparingits pages, thensending; 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,
+1and 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 ofno_answer,busy,call_dropped,declined,not_a_fax_number,oursor null- Why its last try failed:
no_answer,busy,call_dropped,declined,not_a_fax_number, oroursfor 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_aftertakes 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 ofplan,cardor null- How the fax is paid, once it is sent:
plan, its pages counted on your plan; orcard, 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_urlsays 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 ofmonth,year- How often it is paid for: each
month, or eachyear. 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_atrather 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 ofordering,active,failedorderingwhile XipFax gets it,activeonce it is yours,failedwhere none could be had in its area code. An open set.number.fax_numberstring or null- The number,
+1and 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,
+1and 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, orbusinesses in Wisconsin; withplace, 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_aftertakes 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-idnames it: take each once. typeone offax.delivered,fax.failed,fax.received- What happened:
fax.deliveredonce a fax you sent is delivered,fax.failedonce one fails for good, andfax.receivedonce a fax sent to your number arrives. An open set: ignore a type you don’t handle. api_versionone of2026-11-03- The version
datais in. created_atstring- When it happened.
dataFax- The fax, as the event found it and as
GET /faxesgives 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 /draftnames them, in its order: a draft whose documents aren’t these, in this order, is refuseddraft_changed, so that nothing you didn’t name is sent.