unopost

API x402

Postez une lettre depuis votre code, payez en USDC

Les applications et les agents IA peuvent poster une lettre partout en Australie et payer à la lettre en USDC via x402. Sans compte, sans clé d'API, sans abonnement : il suffit d'un portefeuille et d'un client HTTP.

10 USDC par lettre en Courrier standard20 USDC par lettre en Express Post

Un seul prix jusqu'à 20 pages à plat, GST incluse. Payé en USDC sur Base, frais de gas pris en charge.

Démarrage rapideSpécification OpenAPI

Pourquoi poster des lettres via x402 ?

La même lettre que sur le site, payée par HTTP.

  • Sans compte ni clé d'API Aucune inscription. Votre code crée une lettre, obtient un prix et paie par un paiement USDC signé.
  • Un prix fixe par lettre 20 USDC en Express Post, à plat en enveloppe B4, ou 10 USDC en Courrier standard, plié pour entrer dans une boîte aux lettres : ce prix couvre l'impression, l'enveloppe, l'affranchissement et le suivi jusqu'à 12 pages pliées ou 20 à plat, puis 0.30 USDC par page. GST incluse, et les frais de gas sont pour nous.
  • La même lettre que sur le site Imprimée telle qu'importée sur papier A4 80 g/m², suivie, et postée le même jour ouvré si elle est payée avant 14 h 30, heure de Melbourne.
  • Remboursée si elle ne peut pas être postée Si nous ne pouvons pas la poster, nous remboursons intégralement, en USDC, le portefeuille qui a payé. Une lettre que nous annulons est remboursée de la même manière.

À qui s'adresse l'API

  • Agents IA Un agent qui gère un litige sur un dépôt de garantie, une déclaration de sinistre ou une réclamation auprès d'une mairie peut poster la lettre lui-même et payer depuis son propre portefeuille.
  • Applications et scripts Des logiciels de gestion immobilière, juridiques ou de facturation qui postent des lettres, sans compte marchand ni forfait mensuel.

Démarrage rapide

  1. Créer une lettre
  2. Importer le document
  3. Récupérer une lettre
  4. Payer et poster
  5. Suivre la lettre

Cinq requêtes mènent une lettre de votre code à la poste. Ni compte ni clé : le paiement nous suffit.

send-letter.sh
# 1. Create the letter
curl -X POST https://unopost.com.au/api/x402 \
  -H "Content-Type: application/json" \
  -d '{
  "fileName": "notice.pdf",
  "recipient": {
    "name": "Ruth Mitchell",
    "line1": "7 High Street",
    "suburb": "Echuca",
    "postcode": "3564"
  },
  "sender": {
    "name": "Sam Nguyen",
    "company": "Nguyen Property",
    "line1": "14 Carnarvon Street",
    "suburb": "Broome",
    "postcode": "6725"
  },
  "service": "express",
  "signature": true
}'

# 2. Upload the document to the uploadUrl you got back
curl -X PUT "$UPLOAD_URL" \
  -H "Content-Type: application/pdf" \
  --data-binary @notice.pdf

# 3. Poll until the status is ready_to_send, and check the price
curl https://unopost.com.au/api/x402/$JOB_ID

# 4. Ask to send it: the 402 says what to pay
curl -i -X POST https://unopost.com.au/api/x402/$JOB_ID/send

# 5. Sign the payment with an x402 client, and send it again
curl -i -X POST https://unopost.com.au/api/x402/$JOB_ID/send \
  -H "PAYMENT-SIGNATURE: $PAYMENT_SIGNATURE"

Points de terminaison

Les points de terminaison sont relatifs à https://unopost.com.au. Les requêtes et les réponses sont en JSON ; les erreurs ont la forme {"error": "..."}. Référence complète : la spécification OpenAPI.

URL de base
https://unopost.com.au

Créer une lettre

POST/api/x402

Envoyez par POST le nom du fichier, l'adresse du destinataire et votre adresse de retour. Vous obtenez un jobId, une uploadUrl signée et des URL pour consulter et payer la lettre.

Corps de la requête

fileNamestring · obligatoire
Le nom du fichier avec son extension : .pdf, .doc, .docx, .jpg, .jpeg ou .png.
recipientAddress · obligatoire
L'adresse à laquelle poster la lettre.
senderAddress · obligatoire
Votre adresse de retour, imprimée sur l'enveloppe pour que le courrier non distribuable vous revienne.
servicestring · facultatif
"express" pour l'Express Post (valeur par défaut) ou "regular" pour le Courrier standard.
duplexboolean · facultatif
Impression recto verso. Valeur par défaut : false. Les déclarations solennelles (statutory declarations) sont toujours imprimées en recto.
monoboolean · facultatif
Impression en noir et blanc. Valeur par défaut : false ; un document contenant de la couleur est imprimé en couleur.
stapleboolean · facultatif
Agrafage des pages, une fois dans le coin supérieur gauche. Uniquement pour les documents de 12 pages au plus ; un document plus long est refusé lors du calcul du prix. Valeur par défaut : false.
foldboolean · facultatif
Express Post uniquement : plie la lettre dans une enveloppe C5 au lieu de l'envoyer à plat en B4, sans supplément. Ignoré pour les documents de plus de 20 pages, qui partent à plat. Les lettres en Courrier standard sont toujours pliées.
signatureboolean · facultatif
Signature à la livraison, 6 USDC de plus, avec l'un ou l'autre service. Avec regular, la lettre part en Courrier recommandé.

Adresse

Le destinataire doit se trouver en Australie. L'adresse de retour peut être n'importe où : indiquez son pays, et son code postal devient facultatif. Chaque ligne peut compter jusqu'à 40 caractères.

namestring · facultatif
Le nom complet de la personne.
companystring · facultatif
Une entreprise ou un organisme.
line1string · obligatoire
L'adresse postale, ou une PO Box telle que "PO Box 123".
line2string · facultatif
Une seconde ligne d'adresse.
suburbstring · obligatoire
Le quartier ou la ville.
statestring · facultatif
À omettre en Australie : le code postal le détermine. S'il est fourni, l'une des valeurs ACT, NSW, NT, QLD, SA, TAS, VIC ou WA, en accord avec le code postal.
postcodestring · obligatoire
Quatre chiffres.
countrystring · facultatif
Adresse de retour uniquement. À omettre pour l'Australie.
Requête
curl -X POST https://unopost.com.au/api/x402 \
  -H "Content-Type: application/json" \
  -d '{
  "fileName": "notice.pdf",
  "recipient": {
    "name": "Ruth Mitchell",
    "line1": "7 High Street",
    "suburb": "Echuca",
    "postcode": "3564"
  },
  "sender": {
    "name": "Sam Nguyen",
    "company": "Nguyen Property",
    "line1": "14 Carnarvon Street",
    "suburb": "Broome",
    "postcode": "6725"
  },
  "service": "express",
  "signature": true
}'
Réponse 200
{
  "jobId": "019d7a7f-a183-752d-9b3b-11511179033b",
  "uploadUrl": "https://unopost.com.au/uploads/019d7a7f-a183-752d-9b3b-11511179033b/notice.pdf?Expires=...&Signature=...&Key-Pair-Id=...",
  "statusUrl": "/api/x402/019d7a7f-a183-752d-9b3b-11511179033b",
  "sendUrl": "/api/x402/019d7a7f-a183-752d-9b3b-11511179033b/send",
  "status": "awaiting_upload"
}

Importer le document

PUTuploadUrl

Envoyez les octets bruts du fichier par PUT à uploadUrl dans les 15 minutes. Jusqu'à 50 Mo et 80 pages. La mise en page au format A4 commence dès la réception du fichier ; il n'y a rien d'autre à appeler.

Requête
curl -X PUT "$UPLOAD_URL" \
  -H "Content-Type: application/pdf" \
  --data-binary @notice.pdf

Récupérer une lettre

GET/api/x402/{jobId}

Attendre le prix

Interrogez toutes les quelques secondes jusqu'à ce que status vaille ready_to_send. La réponse contient alors le nombre de pages, le prix dans payment, la sendUrl et une previewUrl vers le PDF prêt à imprimer, à vérifier avant de payer.

fold suit désormais le service, true pour le Courrier standard et false pour l'Express Post, et duplex peut valoir false : les déclarations solennelles sont imprimées en recto. Une lettre en Courrier standard de plus de 12 pages est rejetée au moment de la tarification.

Suivre la lettre

Continuez d'interroger, moins souvent, jusqu'à ce que la lettre soit posted, puis delivered. Il n'y a pas d'e-mails ; chaque mise à jour apparaît dans le statut.

Requête
curl https://unopost.com.au/api/x402/$JOB_ID
Réponse 200 · ready_to_send
{
  "jobId": "019d7a7f-a183-752d-9b3b-11511179033b",
  "service": "express",
  "duplex": false,
  "mono": false,
  "fold": false,
  "signature": true,
  "recipient": {
    "name": "Ruth Mitchell",
    "line1": "7 High Street",
    "suburb": "Echuca",
    "postcode": "3564"
  },
  "sender": {
    "name": "Sam Nguyen",
    "company": "Nguyen Property",
    "line1": "14 Carnarvon Street",
    "suburb": "Broome",
    "postcode": "6725"
  },
  "pageCount": 3,
  "status": "ready_to_send",
  "previewUrl": "/preview/019d7a7f-a183-752d-9b3b-11511179033b/notice.pdf?Expires=...&Signature=...&Key-Pair-Id=...",
  "payment": {
    "scheme": "exact",
    "network": "eip155:8453",
    "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "amountAtomic": "20000000",
    "amountDisplay": "20 USDC",
    "payTo": "0x1111111111111111111111111111111111111111",
    "expiresAt": "2026-09-25T02:15:00Z"
  },
  "sendUrl": "/api/x402/019d7a7f-a183-752d-9b3b-11511179033b/send"
}
Réponse 200 · posted
{
  "jobId": "019d7a7f-a183-752d-9b3b-11511179033b",
  "service": "express",
  "duplex": false,
  "mono": false,
  "fold": false,
  "signature": true,
  "recipient": {
    "name": "Ruth Mitchell",
    "line1": "7 High Street",
    "suburb": "Echuca",
    "postcode": "3564"
  },
  "sender": {
    "name": "Sam Nguyen",
    "company": "Nguyen Property",
    "line1": "14 Carnarvon Street",
    "suburb": "Broome",
    "postcode": "6725"
  },
  "pageCount": 3,
  "status": "posted",
  "providerReference": "LTR-8F3A21C9"
}

Payer et poster

POST/api/x402/{jobId}/send

Envoyez un POST à sendUrl sans paiement. La réponse est 402 Payment Required, avec les exigences de paiement encodées en base64 dans l'en-tête PAYMENT-REQUIRED.

Signez le paiement comme le décrit le protocole x402 (ou laissez une bibliothèque cliente x402 s'en charger) et renvoyez la requête avec la charge utile dans un en-tête PAYMENT-SIGNATURE. Nous le vérifions et le réglons, et la lettre part à l'impression. L'en-tête PAYMENT-RESPONSE contient le règlement.

Vous recevez un 409 avec job not ready to send juste après ready_to_send ? Patientez un instant et réessayez. Un nouvel appel après le paiement renvoie le statut sans débiter deux fois.

Requête
curl -i -X POST https://unopost.com.au/api/x402/$JOB_ID/send
Réponse 402
HTTP/2 402
payment-required: eyJ4NDAyVmVyc2lvbiI6Mi...

{
  "error": "payment required"
}
En-tête PAYMENT-REQUIRED, décodé du base64
{
  "x402Version": 2,
  "accepts": [
    {
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "amount": "20000000",
      "payTo": "0x1111111111111111111111111111111111111111",
      "maxTimeoutSeconds": 300,
      "extra": {
        "name": "USD Coin",
        "version": "2"
      }
    }
  ]
}
Requête
curl -i -X POST https://unopost.com.au/api/x402/$JOB_ID/send \
  -H "PAYMENT-SIGNATURE: $PAYMENT_SIGNATURE"
Réponse 202
HTTP/2 202
payment-response: eyJzdWNjZXNzIjp0cnVlLC...

{
  "jobId": "019d7a7f-a183-752d-9b3b-11511179033b",
  "status": "sending"
}

Statuts

awaiting_upload
En attente du fichier.
processing
Mise en page du document au format A4 et tarification.
ready_to_send
Tarifée et en attente de paiement. Le devis est valable 7 jours.
sending
Payée, et placée dans la file d'impression.
retrying
L'impression a rencontré un problème ; nous réessayons automatiquement.
posted
Imprimée et déposée auprès d'Australia Post.
delivered
Livrée par Australia Post. Le document a été supprimé à l'expédition.
failed
Non postée ; la raison figure dans error, par exemple un devis expiré sans paiement. Une lettre payée qui ne peut pas être postée est intégralement remboursée.
refunded
Le paiement a été renvoyé au portefeuille qui l'avait effectué.

Erreurs

400
Requête invalide : par exemple un champ manquant, un type de fichier non pris en charge, une ligne d'adresse de plus de 40 caractères, un code postal hors de l'État, la signature à la livraison avec le Courrier standard, ou une lettre en Courrier standard de plus de 12 pages.
402
Un paiement est requis, ou le paiement n'a pas pu être vérifié ou réglé. error en indique la raison.
404
Aucune lettre ne porte ce jobId.
409
job not ready to send : attendez ready_to_send et réessayez. quote expired : créez de nouveau la lettre.

Foire aux questions

Qu'est-ce que x402 ?

Un protocole ouvert pour payer par HTTP. Le serveur répond 402 Payment Required avec un prix ; le client signe un paiement en stablecoin et renvoie la requête. Sans compte, sans carte, sans facture.

De quoi ai-je besoin ?

D'un portefeuille sur Base avec suffisamment d'USDC, et d'un client HTTP. Pas besoin d'ETH pour le gas : le paiement est une autorisation de transfert d'USDC signée, et nous prenons en charge les frais de réseau.

Combien coûte une lettre ?

20 USDC en Express Post jusqu'à 20 pages, puis 0.30 USDC par page, ou 10 USDC en Courrier standard pour une lettre de 12 pages au plus, GST incluse. La signature à la livraison coûte 6 USDC de plus avec l'un ou l'autre service ; le Courrier standard remis contre signature est le Courrier recommandé, 16 USDC. Le suivi, l'impression recto verso et en noir et blanc, l'agrafage jusqu'à 12 pages, ainsi que le pliage d'une lettre Express Post dans une enveloppe DL à fenêtre sont gratuits. La réponse de statut indique le prix exact avant le paiement.

Puis-je vérifier la lettre avant de payer ?

Oui. Une fois la lettre prête à l'envoi, previewUrl donne le PDF prêt à imprimer, mis en page au format A4 exactement tel qu'il sera imprimé. Rien n'est débité tant que vous ne payez pas.

Quand est-elle postée, et combien de temps met-elle à arriver ?

Les lettres payées avant 14 h 30, heure de Melbourne, un jour ouvré sont postées le jour même ; les suivantes, le jour ouvré d'après. L'Express Post arrive en général le jour ouvré suivant au sein du réseau Express Post, le Courrier standard en 3 à 7 jours ouvrés.

Que se passe-t-il si la lettre ne peut pas être postée ?

Son statut passe à failed et nous remboursons le montant intégral en USDC au portefeuille qui a payé, qu'elle ait échoué ou que nous l'ayons annulée. Pour toute autre question, écrivez à support@unopost.com.au en indiquant le jobId.

Que devient mon document ?

Il est chiffré en transit et définitivement supprimé, avec sa copie prête à imprimer, une fois la lettre déposée auprès d'Australia Post. Si une lettre n'est pas payée ou ne peut pas être postée, il est supprimé au bout de 14 jours.

Où les lettres peuvent-elles aller ?

À toute adresse en Australie, PO Box comprises, dans tous les États et territoires. L'API ne poste pas vers l'étranger.

Qui est responsable de ce qu'envoie un agent ?

Vous. Chaque lettre payée depuis votre portefeuille est la vôtre, y compris celle qu'un agent a rédigée et envoyée sur vos instructions, et vous devez avoir le droit d'envoyer ce qu'elle contient. Nos Conditions d'utilisation énumèrent ce qui ne peut pas être posté : l'usurpation d'identité, le harcèlement, les escroqueries, la publicité non sollicitée en nombre et tout ce qui enfreint une décision de justice. Nous annulons les lettres qui enfreignent ces règles et les remboursons intégralement. Si vous postez pour le compte d'un tiers, vous êtes responsable de son document comme s'il était le vôtre.

Tarifs

PrestationPrix
Courrier standard, plié pour entrer dans une boîte aux lettres : jusqu'à 12 pages10 USDC
Courrier recommandé, le Courrier standard remis contre signature : jusqu'à 12 pages16 USDC
Express Post, à plat en enveloppe B4 : 20 pages incluses, puis 0.30 USDC par page supplémentaire20 USDC
Express Post avec signature à la livraison : 20 pages incluses, puis 0.30 USDC par page supplémentaire26 USDC
Suivi, impression couleur, recto verso ou noir et blanc, et agrafageGratuit
Frais de réseau (gas)Pris en charge

Les prix sont en USDC sur Base. Le prix est fixé une fois votre document mis en page au format A4 ; les devis sont valables 7 jours.

Les tarifs peuvent évoluer. L'utilisation de ce service est soumise à nos Conditions d'utilisation et à notre Politique de confidentialité.