API v1
A link from your terminal, in one command.
Simple text/plain for daily work and a JSON contract for full access control.
01 / text/plain
Quick paste
The request body becomes an unlisted paste. Pass language and expiry as query parameters. No account is required.
curl --data-binary @main.go 'https://paste.maralys.com/api/v1/pastes?language=go&expires=1d'02 / application/json
Full contract
JSON exposes format, visibility, password, burn-after-reading, and E2E fields.
curl 'https://paste.maralys.com/api/v1/pastes' \
-H 'Content-Type: application/json' \
--data '{"content":"console.log(42)","kind":"code","language":"javascript","visibility":"unlisted","access":"open","expires_in":"1h","burn_after_read":false}'03 / Response
Short URL and expiry
{
"slug": "4n8Kx2RjQ7Wa",
"url": "https://paste.maralys.com/4n8Kx2RjQ7Wa",
"expires_at": "2026-07-14T12:00:00Z",
"revision": 1,
"manage_token": "shown-once-for-guests"
}The guest manage_token is returned only on creation. Maralys Paste stores its HMAC, so a lost key cannot be recovered.
04 / Endpoints
Public REST API
POST/api/v1/pastesCreate a paste
GET/api/v1/pastes/{slug}Get metadata and accessible content
POST/api/v1/pastes/{slug}/revealExplicitly reveal protected or one-time content
GET/api/v1/pastes/{slug}/rawSafe text/plain output
PATCH/api/v1/pastes/{slug}Update with the current revision
DELETE/api/v1/pastes/{slug}Delete a paste
GET/api/v1/catalogBrowse the public catalog
05 / Updates
No lost updates
Send X-Paste-Manage-Token for a guest paste and the current revision or If-Match. If it changed already, the API returns 409 Conflict. Revision history is not stored.