Permanently, in an OP_RETURN output. In minutes.
SatWire writes your message into the Bitcoin blockchain itself. Not a link to it,
not a hash of it — the text, in an OP_RETURN output of a real Bitcoin
transaction, where it stays as long as Bitcoin does. You get the transaction id and
can check it in any block explorer.
There is no account and no signup. You type a message, we quote a price, you pay a one-off address, and the transaction is broadcast. You can publish a picture the same way: it is resized and re-encoded to WebP in your own browser, so the original file never leaves your device and its GPS data never goes anywhere. The bytes that reach the chain are a complete, valid image file — anyone can pull them out of the transaction and open them, with no tool of ours.
Two parts: a flat 2,000-sat service fee, and the Bitcoin network fee for the transaction. The network fee depends on how big your message is and how fast you want it confirmed — a short line of text costs about 220 sats to publish, a picture costs more because it is bigger.
| What you publish | On-chain size | Total |
|---|---|---|
| A line of text | ~100 bytes | ~2,220 sats |
| Picture, 160×120 | ~1,500 bytes | ~5,250 sats |
| Picture, 256×192 | ~2,840 bytes | ~7,930 sats |
| Picture, 512×384 | ~7,880 bytes | ~18,000 sats |
| Picture, 1024×768 | ~20,000 bytes | ~42,250 sats |
The limits are 1,000 bytes for text and 20,000 bytes for a picture. The composer above shows the exact price before you pay anything.
OP_RETURN is the image file itself, so a hex decode is enough.A small HTTP API for publishing to the Bitcoin blockchain without the composer. No key is needed for the public endpoints.
/api/message-request
Returns an address to pay. Body: message, and optionally targetAddress, amountToSend, feeRate, isPublic.
/api/request-status/:idPoll a request./api/request/:idCancel, while unpaid./api/wallMessages customers chose to show publicly./api/payment-qr.svg?requestId=A BIP21 code for an open order./api/internal/embedX-API-Key
Publishes straight from the treasury. No payment step.
/api/internal/treasuryX-API-KeyAddress and balance.