Skip to content
xashadocs
Tab to a result · Enter to open · Esc to close

API reference

Create a secret

Store an encrypted envelope and receive a reference, a private deletion token, and an expiry.

POST/secrets

Request#

envelopeRequired object with version, iv, ciphertext.
expiresIn3600, 86400, or 604800 seconds. Default: 86400.

Send JSON with Content-Type: application/json. Unknown fields, null expiry, and arbitrary durations are rejected. JavaScript uses Quickstart setup; cURL requires a real encrypted envelope.

JavaScript
// Run only when the sender chooses Create.
const { envelope, keyFragment } = await encryptText('A disposable demo note')
const createResponse = await fetch(`${api}/secrets`, {
  ...requestOptions,
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ envelope, expiresIn: 3600 }),
  signal: AbortSignal.timeout(15000),
})
if (createResponse.status !== 201) {
  throw new Error(`Creation failed (${createResponse.status})`)
}
const { id, deleteToken, expiresAt } = await createResponse.json()

Response#

201 Created. Example values below are placeholders, not valid credentials.

json
{
  "id": "<32-character base64url reference>",
  "deleteToken": "<43-character base64url token>",
  "expiresAt": "2026-10-08T12:00:00.000Z"
}

Errors and retries#

400 for invalid input; 413 for oversized payloads; 415 for unsupported content type; 429 for throttling; 500/503 for service failure.