Faxette EU
Send a fax to the EU, the UK, Switzerland and more of Europe from a chat. Pay per fax on Faxette.
Should I use this
Quality & Safety
Findings (6)
- LOWin get_fax_review
- LOWin get_fax_review
- LOWin prepare_fax_upload
- LOWin prepare_fax_upload
- LOWin update_fax_review
- LOWin update_fax_review
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"faxette-eu": {
"url": "https://mcp.eu.faxette.com/mcp"
}
}
}Remote endpoints
https://mcp.eu.faxette.com/mcpstreamable-httpWhat it can do
Tool inventory
Tools (15)
🟡open_fax_review(id)
Open the private upload and PDF review interface for an account fax before approving payment. Requires sign-in. The browser review link works when the client cannot show MCP Apps.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢get_fax_review(id, review_token)
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"review_token": {
"type": "string",
"minLength": 1
}
},
"required": [
"id",
"review_token"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡prepare_fax_upload(id, review_token, filename, byte_size, checksum, ...)
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"review_token": {
"type": "string",
"minLength": 1
},
"filename": {
"type": "string",
"minLength": 1
},
"byte_size": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"checksum": {
"type": "string",
"minLength": 1
},
"content_type": {
"type": "string",
"minLength": 1
}
},
"required": [
"id",
"review_token",
"filename",
"byte_size",
"checksum",
"content_type"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴update_fax_review(id, review_token, document_ids)
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"review_token": {
"type": "string",
"minLength": 1
},
"document_ids": {
"minItems": 1,
"maxItems": 10,
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"id",
"review_token",
"document_ids"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢get_capabilities
Use this before preparing a fax to check this region's supported countries, languages, file limits and current retail and credit pricing rules. Prices are before tax; the exact total is confirmed after document processing and at checkout. It changes nothing.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"region": {
"type": "string",
"enum": [
"us",
"eu"
]
},
"connector_url": {
"type": "string",
"format": "uri"
},
"countries": {
"type": "array",
"items": {
"type": "string"
}
},
"languages": {
"type": "array",
"items": {
"type": "string"
}
},
"formats": {
"type": "array",
"items": {
"type": "string"
}
},
"text_formats": {
"type": "array",
"items": {
"type": "string"
}
},
"limits": {
"type": "object",
"properties": {
"documents": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"bytes_per_document": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"text_characters": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"pages": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"cover_page": {
"type": "object",
"properties": {
"sender": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"recipient": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"subject": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"message": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"required": [
"sender",
"recipient",
"subject",
"message"
],
"additionalProperties": false
}
},
"required": [
"documents",
"bytes_per_document",
"pages",
"cover_page"
],
"additionalProperties": false
},
"pricing": {
"type": "object",
"properties": {
"currency": {
"type": "string"
},
"zones": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "object",
"properties": {
"countries": {
"type": "array",
"items": {
"type": "string"
}
},
"retail": {
"type": "object",
"properties": {
"base_cents": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"included_pages": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"overage_cents_per_page": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"required": [
"base_cents",
"included_pages",
"overage_cents_per_page"
],
"additionalProperties": false
},
"credits": {
"type": "object",
"properties": {
"base_cents": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"included_pages": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"overage_cents_per_page": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"required": [
"base_cents",
"included_pages",
"overage_cents_per_page"
],
"additionalProperties": false
}
},
"required": [
"countries",
"retail",
"credits"
],
"additionalProperties": false
}
}
},
"required": [
"currency",
"zones"
],
"additionalProperties": false
},
"tax": {
"type": "object",
"properties": {
"included": {
"type": "boolean"
},
"applies": {
"type": "boolean"
},
"finalized_at": {
"type": "string"
}
},
"required": [
"included",
"applies",
"finalized_at"
],
"additionalProperties": false
}
},
"required": [
"region",
"connector_url",
"countries",
"languages",
"formats",
"limits",
"pricing",
"tax"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢lookup_fax_number(query)
Search Faxette's catalog by agency, form number or purpose. Returns only numbers supported by this connector, with the official source and verification date. An empty result means we have no current match, not that the office has no fax number. Show the source and have the person confirm the right office before creating a fax. It changes nothing.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 2,
"maxLength": 100
}
},
"required": [
"query"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"destinations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"purpose": {
"type": [
"string",
"null"
]
},
"signature": {
"type": [
"string",
"null"
]
},
"numbers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"fax_number": {
"type": "string"
},
"label": {
"type": [
"string",
"null"
]
},
"regions": {
"type": "array",
"items": {
"type": "string"
}
},
"source_url": {
"type": "string",
"format": "uri"
},
"verified_at": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
}
},
"required": [
"fax_number",
"label",
"regions",
"source_url",
"verified_at"
],
"additionalProperties": false
}
}
},
"required": [
"id",
"name",
"purpose",
"signature",
"numbers"
],
"additionalProperties": false
}
}
},
"required": [
"destinations"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢get_fax_report(id, status_url)
Use this when the person asks for a delivery report or the transmitted document. Returns the destination, page count, delivery result, timestamps and attempts. A report URL is available after delivery, failure or cancellation. Document links are only returned for the signed-in owner of an account fax while its files are retained. Report and document links expire after five minutes. A delivered fax does not establish that the recipient read it. It changes nothing.
Input Schema
{
"type": "object",
"properties": {
"id": {
"description": "An account fax ID; requires sign-in. Pass this or status_url, not both.",
"type": "string",
"minLength": 1
},
"status_url": {
"description": "The original status link, including its token for a guest fax.",
"type": "string",
"format": "uri"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"draft",
"processing_documents",
"documents_ready",
"awaiting_payment",
"scheduled",
"sending",
"delivered",
"failed",
"canceled"
]
},
"fax_number": {
"type": "string"
},
"page_count": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"created_at": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"delivered_at": {
"anyOf": [
{
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
{
"type": "null"
}
]
},
"failed_at": {
"anyOf": [
{
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
{
"type": "null"
}
]
},
"canceled_at": {
"anyOf": [
{
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
{
"type": "null"
}
]
},
"document_sha256": {
"type": [
"string",
"null"
]
},
"report_available": {
"type": "boolean"
},
"document_available": {
"type": "boolean"
},
"report_url": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"type": "null"
}
]
},
"document_url": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"type": "null"
}
]
},
"attempts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"number": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"fax_number": {
"type": "string"
},
"status": {
"type": "string"
},
"pages_sent": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"started_at": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"updated_at": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"failure_reason": {
"type": [
"string",
"null"
]
}
},
"required": [
"number",
"fax_number",
"status",
"pages_sent",
"started_at",
"updated_at",
"failure_reason"
],
"additionalProperties": false
}
}
},
"required": [
"id",
"status",
"fax_number",
"page_count",
"created_at",
"delivered_at",
"failed_at",
"canceled_at",
"document_sha256",
"report_available",
"document_available",
"report_url",
"document_url",
"attempts"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🔴resend_fax(id, status_url, fax_number)
Use this only after the person asks to resend a failed fax and confirms its destination, including any corrected number. Check get_fax or get_fax_status first. Reuses the existing fax, payment hold and resend rules; it does not create a new paid fax. Faxette refuses expired resend windows and exhausted retries. If a call is interrupted, check the existing fax before calling again.
Input Schema
{
"type": "object",
"properties": {
"id": {
"description": "An account fax ID; requires sign-in. Pass this or status_url, not both.",
"type": "string",
"minLength": 1
},
"status_url": {
"description": "The original fax status link, including its token for a guest fax.",
"type": "string",
"format": "uri"
},
"fax_number": {
"description": "A corrected number explicitly confirmed by the person. Omit to use the existing destination.",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The fax's id. Pass it to get_fax when the person is signed in."
},
"status": {
"type": "string",
"enum": [
"draft",
"processing_documents",
"documents_ready",
"awaiting_payment",
"scheduled",
"sending",
"delivered",
"failed",
"canceled"
],
"description": "draft: waiting for files, or for a file to be fixed. processing_documents: counting pages. documents_ready: ready to pay. awaiting_payment: the person is paying. scheduled: paid, about to dial. sending, delivered, failed. canceled: not paid in time."
},
"fax_number": {
"type": "string"
},
"page_count": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "Null until the pages are counted."
},
"price": {
"anyOf": [
{
"type": "object",
"properties": {
"amount_cents": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"currency": {
"type": "string",
"description": "usd or eur."
}
},
"required": [
"amount_cents",
"currency"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Before tax. Null until the pages are counted."
},
"payment": {
"anyOf": [
{
"type": "object",
"properties": {
"status": {
"type": "string"
},
"method": {
"type": "string",
"enum": [
"card",
"credit"
]
},
"tax_cents": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"amount_cents": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"currency": {
"type": "string",
"description": "usd or eur."
}
},
"required": [
"status",
"method",
"tax_cents",
"amount_cents",
"currency"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "The person's payment once they start paying, by card or from their credit. amount_cents includes tax."
},
"checkout_available": {
"type": "boolean",
"description": "True when the person can pay on the status page."
},
"attempt": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "The current attempt to dial the fax number."
},
"max_attempts": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"next_attempt_at": {
"anyOf": [
{
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
{
"type": "null"
}
],
"description": "When the next attempt dials, if the line was busy or didn't answer."
},
"resend_by": {
"anyOf": [
{
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
{
"type": "null"
}
],
"description": "For a failed fax: until when the person can correct the fax number on the status page and send it again."
},
"document_errors": {
"type": "array",
"items": {
"type": "object",
"properties": {
"reason": {
"type": "string"
},
"position": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"message": {
"type": "string"
}
},
"required": [
"reason",
"position",
"message"
],
"additionalProperties": false
},
"description": "Files Faxette couldn't use. position is the file's number in the fax. The person fixes them on the status page."
},
"failure_reason": {
"anyOf": [
{
"type": "string",
"enum": [
"temporary",
"wrong_number",
"our_side"
]
},
{
"type": "null"
}
],
"description": "For a failed fax: temporary (busy or no answer on every attempt), wrong_number (no fax machine answered), or our_side."
},
"language": {
"type": [
"string",
"null"
]
},
"checkout_quote": {
"type": [
"string",
"null"
]
},
"review_url": {
"description": "A private review link, valid for 30 minutes. Give it to the person so they can inspect the prepared PDF before paying.",
"type": "string",
"format": "uri"
},
"status_url": {
"type": "string",
"format": "uri",
"description": "The page where the person checks the fax and pays. Give it to them."
}
},
"required": [
"id",
"status",
"fax_number",
"page_count",
"price",
"payment",
"checkout_available",
"attempt",
"max_attempts",
"next_attempt_at",
"resend_by",
"document_errors",
"failure_reason",
"status_url"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟡create_document(fax_number, filename, byte_size, checksum, content_type)
Use this to add a file the person gave you to a fax: a PDF, or a photo saved as JPG, PNG, WEBP or HEIC, up to 20 MB. Call it once per file, before create_fax, in the order the files should be faxed. It returns document_id, upload_url and upload_headers: PUT the file's exact bytes to upload_url with those headers within 5 minutes, then pass document_id to create_fax within an hour. Nothing is faxed or charged. If you can't read the file's bytes, don't use this: call create_fax without document_ids, and the person adds the file on the status page.
Input Schema
{
"type": "object",
"properties": {
"fax_number": {
"type": "string",
"description": "The fax number the file will be faxed to, in international format, like +31201234567. Numbers in the EU, the UK, Switzerland, Norway, Iceland, Liechtenstein, Monaco, Montenegro, Ukraine, the Isle of Man, the US and Canada only. Use the same number in create_fax."
},
"filename": {
"type": "string",
"minLength": 1,
"description": "The file's name with its extension, like referral.pdf."
},
"byte_size": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The file's exact size in bytes."
},
"checksum": {
"type": "string",
"minLength": 1,
"description": "The file's MD5 digest, base64-encoded, as printed by: openssl md5 -binary <file> | base64"
},
"content_type": {
"type": "string",
"enum": [
"application/pdf",
"image/jpeg",
"image/png",
"image/webp",
"image/heic",
"image/heif"
],
"description": "The file's media type. It must match the file's contents."
}
},
"required": [
"fax_number",
"filename",
"byte_size",
"checksum",
"content_type"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"document_id": {
"type": "string",
"description": "Pass this to create_fax in document_ids."
},
"upload_url": {
"type": "string",
"format": "uri",
"description": "PUT the file's exact bytes here within 5 minutes."
},
"upload_headers": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
},
"description": "Send these headers, unchanged, with the PUT."
}
},
"required": [
"document_id",
"upload_url",
"upload_headers"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟡create_fax(idempotency_key, content, fax_number, email, cover_page, ...)
Use this once the person has confirmed the fax number, and given you their email if they aren't signed in. It creates the fax and returns status_url, the page where the person checks the fax number, documents and price, and pays to send it. Nothing is sent or charged until they pay there. Pass the document_ids from create_document. Without them, the fax waits on the status page for the person to add their files. Choose a private random idempotency_key for each intentional new fax. Reuse the exact same key and request after a timeout or request_in_progress; never change the key just to retry. The key is retained for 24 hours. To check a fax, use get_fax_status or get_fax.
Input Schema
{
"type": "object",
"properties": {
"idempotency_key": {
"type": "string",
"pattern": "^[A-Za-z0-9_.-]{32,128}$",
"description": "A private random UUID for this intentional new fax. Keep it unchanged for retries of the same request within 24 hours."
},
"content": {
"description": "Text approved by the person, rendered as a PDF before the uploaded documents. Markdown supports headings, lists, tables and links as printed text. Images, raw HTML and remote assets are refused. Always show the generated proof before sending.",
"type": "object",
"properties": {
"text": {
"type": "string",
"minLength": 1,
"maxLength": 50000
},
"format": {
"type": "string",
"enum": [
"text",
"markdown"
]
}
},
"required": [
"text",
"format"
]
},
"fax_number": {
"type": "string",
"description": "The fax number the fax goes to, in international format, like +31201234567. Numbers in the EU, the UK, Switzerland, Norway, Iceland, Liechtenstein, Monaco, Montenegro, Ukraine, the Isle of Man, the US and Canada only."
},
"email": {
"description": "The person's email address, where Faxette sends the receipt and updates. Ask the person for it. Leave it out when they're signed in: their account's email is used.",
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"cover_page": {
"description": "An optional cover page. Confirm its wording with the person first. It counts toward the total pages; omit if not requested.",
"type": "object",
"properties": {
"sender": {
"type": "string",
"maxLength": 120
},
"recipient": {
"type": "string",
"maxLength": 120
},
"subject": {
"type": "string",
"maxLength": 200
},
"message": {
"type": "string",
"maxLength": 2000
}
}
},
"language": {
"description": "The language the person chooses for the fax page, checkout and emails. Check get_capabilities for this region. Omit to use the account preference or regional default.",
"type": "string",
"minLength": 1
},
"document_ids": {
"description": "The document_id of each file from create_document, in the order they're faxed. Up to 10. Leave it out to let the person add files on the status page.",
"maxItems": 10,
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"idempotency_key",
"fax_number"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The fax's id. Pass it to get_fax when the person is signed in."
},
"status": {
"type": "string",
"enum": [
"draft",
"processing_documents",
"documents_ready",
"awaiting_payment",
"scheduled",
"sending",
"delivered",
"failed",
"canceled"
],
"description": "draft: waiting for files, or for a file to be fixed. processing_documents: counting pages. documents_ready: ready to pay. awaiting_payment: the person is paying. scheduled: paid, about to dial. sending, delivered, failed. canceled: not paid in time."
},
"fax_number": {
"type": "string"
},
"page_count": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "Null until the pages are counted."
},
"price": {
"anyOf": [
{
"type": "object",
"properties": {
"amount_cents": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"currency": {
"type": "string",
"description": "usd or eur."
}
},
"required": [
"amount_cents",
"currency"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Before tax. Null until the pages are counted."
},
"payment": {
"anyOf": [
{
"type": "object",
"properties": {
"status": {
"type": "string"
},
"method": {
"type": "string",
"enum": [
"card",
"credit"
]
},
"tax_cents": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"amount_cents": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"currency": {
"type": "string",
"description": "usd or eur."
}
},
"required": [
"status",
"method",
"tax_cents",
"amount_cents",
"currency"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "The person's payment once they start paying, by card or from their credit. amount_cents includes tax."
},
"checkout_available": {
"type": "boolean",
"description": "True when the person can pay on the status page."
},
"attempt": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "The current attempt to dial the fax number."
},
"max_attempts": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"next_attempt_at": {
"anyOf": [
{
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
{
"type": "null"
}
],
"description": "When the next attempt dials, if the line was busy or didn't answer."
},
"resend_by": {
"anyOf": [
{
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
{
"type": "null"
}
],
"description": "For a failed fax: until when the person can correct the fax number on the status page and send it again."
},
"document_errors": {
"type": "array",
"items": {
"type": "object",
"properties": {
"reason": {
"type": "string"
},
"position": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"message": {
"type": "string"
}
},
"required": [
"reason",
"position",
"message"
],
"additionalProperties": false
},
"description": "Files Faxette couldn't use. position is the file's number in the fax. The person fixes them on the status page."
},
"failure_reason": {
"anyOf": [
{
"type": "string",
"enum": [
"temporary",
"wrong_number",
"our_side"
]
},
{
"type": "null"
}
],
"description": "For a failed fax: temporary (busy or no answer on every attempt), wrong_number (no fax machine answered), or our_side."
},
"language": {
"type": [
"string",
"null"
]
},
"checkout_quote": {
"type": [
"string",
"null"
]
},
"review_url": {
"description": "A private review link, valid for 30 minutes. Give it to the person so they can inspect the prepared PDF before paying.",
"type": "string",
"format": "uri"
},
"status_url": {
"type": "string",
"format": "uri",
"description": "The page where the person checks the fax and pays. Give it to them."
}
},
"required": [
"id",
"status",
"fax_number",
"page_count",
"price",
"payment",
"checkout_available",
"attempt",
"max_attempts",
"next_attempt_at",
"resend_by",
"document_errors",
"failure_reason",
"status_url"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢get_fax_status(status_url)
Use this when the person asks how their fax is doing, or to see whether it's ready to pay. It reads the fax from its status_url and returns its status, page count, price, payment and attempts. checkout_available is true once the person can pay on the status page. It changes nothing. While a fax is sending, call it at most once a minute.
Input Schema
{
"type": "object",
"properties": {
"status_url": {
"type": "string",
"format": "uri",
"description": "The status_url create_fax returned, like https://eu.faxette.com/f/abc123?token=xyz."
}
},
"required": [
"status_url"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The fax's id. Pass it to get_fax when the person is signed in."
},
"status": {
"type": "string",
"enum": [
"draft",
"processing_documents",
"documents_ready",
"awaiting_payment",
"scheduled",
"sending",
"delivered",
"failed",
"canceled"
],
"description": "draft: waiting for files, or for a file to be fixed. processing_documents: counting pages. documents_ready: ready to pay. awaiting_payment: the person is paying. scheduled: paid, about to dial. sending, delivered, failed. canceled: not paid in time."
},
"fax_number": {
"type": "string"
},
"page_count": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "Null until the pages are counted."
},
"price": {
"anyOf": [
{
"type": "object",
"properties": {
"amount_cents": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"currency": {
"type": "string",
"description": "usd or eur."
}
},
"required": [
"amount_cents",
"currency"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Before tax. Null until the pages are counted."
},
"payment": {
"anyOf": [
{
"type": "object",
"properties": {
"status": {
"type": "string"
},
"method": {
"type": "string",
"enum": [
"card",
"credit"
]
},
"tax_cents": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"amount_cents": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"currency": {
"type": "string",
"description": "usd or eur."
}
},
"required": [
"status",
"method",
"tax_cents",
"amount_cents",
"currency"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "The person's payment once they start paying, by card or from their credit. amount_cents includes tax."
},
"checkout_available": {
"type": "boolean",
"description": "True when the person can pay on the status page."
},
"attempt": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "The current attempt to dial the fax number."
},
"max_attempts": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"next_attempt_at": {
"anyOf": [
{
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
{
"type": "null"
}
],
"description": "When the next attempt dials, if the line was busy or didn't answer."
},
"resend_by": {
"anyOf": [
{
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
{
"type": "null"
}
],
"description": "For a failed fax: until when the person can correct the fax number on the status page and send it again."
},
"document_errors": {
"type": "array",
"items": {
"type": "object",
"properties": {
"reason": {
"type": "string"
},
"position": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"message": {
"type": "string"
}
},
"required": [
"reason",
"position",
"message"
],
"additionalProperties": false
},
"description": "Files Faxette couldn't use. position is the file's number in the fax. The person fixes them on the status page."
},
"failure_reason": {
"anyOf": [
{
"type": "string",
"enum": [
"temporary",
"wrong_number",
"our_side"
]
},
{
"type": "null"
}
],
"description": "For a failed fax: temporary (busy or no answer on every attempt), wrong_number (no fax machine answered), or our_side."
},
"language": {
"type": [
"string",
"null"
]
},
"checkout_quote": {
"type": [
"string",
"null"
]
},
"review_url": {
"description": "A private review link, valid for 30 minutes. Give it to the person so they can inspect the prepared PDF before paying.",
"type": "string",
"format": "uri"
},
"status_url": {
"type": "string",
"format": "uri",
"description": "The page where the person checks the fax and pays. Give it to them."
}
},
"required": [
"id",
"status",
"fax_number",
"page_count",
"price",
"payment",
"checkout_available",
"attempt",
"max_attempts",
"next_attempt_at",
"resend_by",
"document_errors",
"failure_reason",
"status_url"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢get_account
Use this to see which Faxette account the person signed in with: their name, email, credit, and whether it's the US or EU copy. Needs the person to sign in to Faxette; calling it while they aren't asks the app to sign them in. It changes nothing.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": [
"string",
"null"
]
},
"email": {
"type": "string",
"description": "Where Faxette sends receipts and updates for faxes started while signed in."
},
"region": {
"type": "string",
"enum": [
"us",
"eu"
],
"description": "Which copy of Faxette the account is on."
},
"credit": {
"type": "object",
"properties": {
"amount_cents": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"currency": {
"type": "string",
"description": "usd or eur."
}
},
"required": [
"amount_cents",
"currency"
],
"additionalProperties": false,
"description": "The account's credit, which send_fax spends."
}
},
"required": [
"id",
"name",
"email",
"region",
"credit"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢get_faxes(status, page)
Use this when the person asks about faxes they've sent from their Faxette account, like what they sent last week or which faxes failed. Returns 25 at a time, newest first. Pass next_page back as page for the next 25. Filter with status, for example ["failed"] or ["delivered"]. Use get_fax for one fax's details. Needs the person to sign in to Faxette; calling it while they aren't asks the app to sign them in. It changes nothing.
Input Schema
{
"type": "object",
"properties": {
"status": {
"description": "Only faxes in these states.",
"type": "array",
"items": {
"type": "string",
"enum": [
"draft",
"processing_documents",
"documents_ready",
"awaiting_payment",
"scheduled",
"sending",
"delivered",
"failed",
"canceled"
]
}
},
"page": {
"description": "The next_page from the previous call.",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"faxes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Pass it to get_fax for the details."
},
"status": {
"type": "string",
"enum": [
"draft",
"processing_documents",
"documents_ready",
"awaiting_payment",
"scheduled",
"sending",
"delivered",
"failed",
"canceled"
]
},
"fax_number": {
"type": "string"
},
"page_count": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"created_at": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"url": {
"type": "string",
"format": "uri",
"description": "The fax's page, where the person checks it and pays. Give it to them."
}
},
"required": [
"id",
"status",
"fax_number",
"page_count",
"created_at",
"url"
],
"additionalProperties": false
}
},
"next_page": {
"description": "Pass it as page for the next 25. Null on the last page.",
"type": [
"string",
"null"
]
}
},
"required": [
"faxes",
"next_page"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢get_fax(id)
Use this for one fax from the person's Faxette account: its status, price, payment, documents' file names and history. Pass the id from get_faxes or create_fax. While a fax is sending, call it at most once a minute. Needs the person to sign in to Faxette; calling it while they aren't asks the app to sign them in. It changes nothing.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "The fax's id, from get_faxes or create_fax."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The fax's id. Pass it to get_fax when the person is signed in."
},
"status": {
"type": "string",
"enum": [
"draft",
"processing_documents",
"documents_ready",
"awaiting_payment",
"scheduled",
"sending",
"delivered",
"failed",
"canceled"
],
"description": "draft: waiting for files, or for a file to be fixed. processing_documents: counting pages. documents_ready: ready to pay. awaiting_payment: the person is paying. scheduled: paid, about to dial. sending, delivered, failed. canceled: not paid in time."
},
"fax_number": {
"type": "string"
},
"page_count": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "Null until the pages are counted."
},
"price": {
"anyOf": [
{
"type": "object",
"properties": {
"amount_cents": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"currency": {
"type": "string",
"description": "usd or eur."
}
},
"required": [
"amount_cents",
"currency"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Before tax. Null until the pages are counted."
},
"payment": {
"anyOf": [
{
"type": "object",
"properties": {
"status": {
"type": "string"
},
"method": {
"type": "string",
"enum": [
"card",
"credit"
]
},
"tax_cents": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"amount_cents": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"currency": {
"type": "string",
"description": "usd or eur."
}
},
"required": [
"status",
"method",
"tax_cents",
"amount_cents",
"currency"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "The person's payment once they start paying, by card or from their credit. amount_cents includes tax."
},
"checkout_available": {
"type": "boolean",
"description": "True when the person can pay on the status page."
},
"attempt": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "The current attempt to dial the fax number."
},
"max_attempts": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"next_attempt_at": {
"anyOf": [
{
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
{
"type": "null"
}
],
"description": "When the next attempt dials, if the line was busy or didn't answer."
},
"resend_by": {
"anyOf": [
{
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
{
"type": "null"
}
],
"description": "For a failed fax: until when the person can correct the fax number on the status page and send it again."
},
"document_errors": {
"type": "array",
"items": {
"type": "object",
"properties": {
"reason": {
"type": "string"
},
"position": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"message": {
"type": "string"
}
},
"required": [
"reason",
"position",
"message"
],
"additionalProperties": false
},
"description": "Files Faxette couldn't use. position is the file's number in the fax. The person fixes them on the status page."
},
"failure_reason": {
"anyOf": [
{
"type": "string",
"enum": [
"temporary",
"wrong_number",
"our_side"
]
},
{
"type": "null"
}
],
"description": "For a failed fax: temporary (busy or no answer on every attempt), wrong_number (no fax machine answered), or our_side."
},
"language": {
"type": [
"string",
"null"
]
},
"checkout_quote": {
"type": [
"string",
"null"
]
},
"review_url": {
"description": "A private review link, valid for 30 minutes. Give it to the person so they can inspect the prepared PDF before paying.",
"type": "string",
"format": "uri"
},
"status_url": {
"type": "string",
"format": "uri",
"description": "The page where the person checks the fax and pays. Give it to them."
},
"created_at": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"delivered_at": {
"anyOf": [
{
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
{
"type": "null"
}
]
},
"failed_at": {
"anyOf": [
{
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
{
"type": "null"
}
]
},
"documents": {
"type": "array",
"items": {
"type": "string"
},
"description": "The documents' file names, in the order they're faxed. Empty once deleted."
},
"credit_quote": {
"type": [
"string",
"null"
]
},
"credit_price": {
"anyOf": [
{
"type": "object",
"properties": {
"amount_cents": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"currency": {
"type": "string",
"description": "usd or eur."
}
},
"required": [
"amount_cents",
"currency"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "What send_fax takes from the credit for this fax. Null once it can no longer be paid for."
},
"immediate_sending_consent_required": {
"description": "When true, obtain agreement to immediate sending and acknowledgement that the withdrawal right ends on delivery before calling send_fax.",
"type": "boolean"
},
"status_message": {
"type": "string",
"description": "Where the fax is, in the words the fax page uses."
},
"history": {
"type": "array",
"items": {
"type": "object",
"properties": {
"at": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"event": {
"type": "string"
}
},
"required": [
"at",
"event"
],
"additionalProperties": false
},
"description": "What has happened to the fax, oldest first."
}
},
"required": [
"id",
"status",
"fax_number",
"page_count",
"price",
"payment",
"checkout_available",
"attempt",
"max_attempts",
"next_attempt_at",
"resend_by",
"document_errors",
"failure_reason",
"status_url",
"created_at",
"delivered_at",
"failed_at",
"documents",
"credit_price",
"status_message",
"history"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🔴send_fax(quote, id, amount_cents, immediate_sending_consent)
Use this to send a fax from the person's Faxette credit. Only for a fax in their account that's ready to pay for: call get_fax first. Show the prepared PDF with open_fax_review or its review_url. Have the person confirm the destination, documents and credit_price, explain that it comes from their credit, and call this only once they clearly agree. If get_account shows their credit doesn't cover it, give them the status page instead, where they can pay for this fax by card. For the EU connector, also explain that sending starts immediately and the person's right to cancel ends once the fax is delivered. Obtain their explicit agreement before setting immediate_sending_consent to true. Needs the person to sign in to Faxette; calling it while they aren't asks the app to sign them in.
Input Schema
{
"type": "object",
"properties": {
"quote": {
"type": "string",
"minLength": 1,
"description": "The credit_quote returned by get_fax for the exact destination, PDF and price the person reviewed and approved. After quote_changed or quote_required, show the new proof and obtain fresh approval."
},
"id": {
"type": "string",
"minLength": 1,
"description": "The fax's id, from create_fax, get_faxes or get_fax."
},
"amount_cents": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The credit_price amount_cents from get_fax that the person agreed to. If the fax's documents changed since, Faxette refuses with price_changed: call get_fax and confirm the new price."
},
"immediate_sending_consent": {
"description": "Required as true for EU credit sends, only after the person explicitly agrees to immediate sending and acknowledges that their right to cancel ends on delivery. Never infer this from agreement to the price alone.",
"type": "boolean"
}
},
"required": [
"quote",
"id",
"amount_cents"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The fax's id. Pass it to get_fax when the person is signed in."
},
"status": {
"type": "string",
"enum": [
"draft",
"processing_documents",
"documents_ready",
"awaiting_payment",
"scheduled",
"sending",
"delivered",
"failed",
"canceled"
],
"description": "draft: waiting for files, or for a file to be fixed. processing_documents: counting pages. documents_ready: ready to pay. awaiting_payment: the person is paying. scheduled: paid, about to dial. sending, delivered, failed. canceled: not paid in time."
},
"fax_number": {
"type": "string"
},
"page_count": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "Null until the pages are counted."
},
"price": {
"anyOf": [
{
"type": "object",
"properties": {
"amount_cents": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"currency": {
"type": "string",
"description": "usd or eur."
}
},
"required": [
"amount_cents",
"currency"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Before tax. Null until the pages are counted."
},
"payment": {
"anyOf": [
{
"type": "object",
"properties": {
"status": {
"type": "string"
},
"method": {
"type": "string",
"enum": [
"card",
"credit"
]
},
"tax_cents": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"amount_cents": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"currency": {
"type": "string",
"description": "usd or eur."
}
},
"required": [
"status",
"method",
"tax_cents",
"amount_cents",
"currency"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "The person's payment once they start paying, by card or from their credit. amount_cents includes tax."
},
"checkout_available": {
"type": "boolean",
"description": "True when the person can pay on the status page."
},
"attempt": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "The current attempt to dial the fax number."
},
"max_attempts": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"next_attempt_at": {
"anyOf": [
{
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
{
"type": "null"
}
],
"description": "When the next attempt dials, if the line was busy or didn't answer."
},
"resend_by": {
"anyOf": [
{
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
{
"type": "null"
}
],
"description": "For a failed fax: until when the person can correct the fax number on the status page and send it again."
},
"document_errors": {
"type": "array",
"items": {
"type": "object",
"properties": {
"reason": {
"type": "string"
},
"position": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"message": {
"type": "string"
}
},
"required": [
"reason",
"position",
"message"
],
"additionalProperties": false
},
"description": "Files Faxette couldn't use. position is the file's number in the fax. The person fixes them on the status page."
},
"failure_reason": {
"anyOf": [
{
"type": "string",
"enum": [
"temporary",
"wrong_number",
"our_side"
]
},
{
"type": "null"
}
],
"description": "For a failed fax: temporary (busy or no answer on every attempt), wrong_number (no fax machine answered), or our_side."
},
"language": {
"type": [
"string",
"null"
]
},
"checkout_quote": {
"type": [
"string",
"null"
]
},
"review_url": {
"description": "A private review link, valid for 30 minutes. Give it to the person so they can inspect the prepared PDF before paying.",
"type": "string",
"format": "uri"
},
"status_url": {
"type": "string",
"format": "uri",
"description": "The page where the person checks the fax and pays. Give it to them."
}
},
"required": [
"id",
"status",
"fax_number",
"page_count",
"price",
"payment",
"checkout_available",
"attempt",
"max_attempts",
"next_attempt_at",
"resend_by",
"document_errors",
"failure_reason",
"status_url"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}Community
Evidence