Spext LogoSpext
Developer Platformv1.0.0 Stable

Spext Developer Platform & REST API

Integrate secure, encrypted, and auto-expiring transfer infrastructure into your applications using our REST API, real-time Webhooks, and AI Model Context Protocol (MCP).

Base API Endpoint:https://spext.fun/api/v1
OpenAPI 3.1 JSON
Generate API Key
HTTP/JSON

High-Throughput REST API

Programmatically create, read, and manage text, links, and file transfers with clean JSON payloads.

HMAC SHA-256

Real-Time Webhooks

Receive instant push notifications signed with HMAC SHA-256 when transfers are created, viewed, or expired.

AI Tools

Model Context Protocol (MCP)

Expose Spext capabilities natively to Claude Desktop, Cursor, and custom LLM agents.

AES-256 GCM

SSP Cryptographic Envelope

PBKDF2 key derivation and AES-256 GCM encryption for zero-knowledge data transfers.

Self-Destruct

Atomic Burn-After-Reading

Guaranteed single-recipient access with atomic deletion upon first successful consumption.

Idempotent

Safe Idempotent Requests

Safely retry failed requests without accidental duplication using Idempotency-Key headers.

Quickstart Guide

Create your first encrypted ephemeral transfer in 3 simple steps.

01

Obtain an API Key

Visit Account > Developer Settings to generate your secret key with spx_sk_ prefix.

02

Include Bearer Token Header

Add Authorization: Bearer <API_KEY> to every HTTP request.

03

Execute Your First Transfer

Choose your preferred language below and create your first self-destructing payload.

curl -X POST https://spext.fun/api/v1/transfers \
  -H "Authorization: Bearer spx_sk_live_abc123" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
    "type": "text",
    "text": "Sensitive database configuration password",
    "expiration": "1h",
    "oneTime": true
  }'

Authentication & Scopes

All Spext REST API endpoints are protected using standard Bearer Token authentication.

API keys are stored exclusively as SHA-256 hashes at rest. The raw token is displayed exactly once upon creation.

Authorization

Authorization:Bearer spx_sk_live_...

Granular Scopes

Following the principle of least privilege, grant only necessary scopes to each key:

ScopeAçıklama
transfer:createCreate new text, link, and file transfers
transfer:readQuery status, views, and metadata of owned transfers
transfer:deleteManually revoke and permanently delete transfers immediately
request:createGenerate file upload request links with PIN authentication
request:readInspect upload request progress and files
secret:createCreate burn-after-reading zero-knowledge secrets
room:createProvision temporary end-to-end encrypted collaboration rooms
room:writeSend messages and transient payloads into active rooms

SECURITY BEST PRACTICES

  • Never expose secret keys in client-side code or commit them to public version control.
  • Use environment variables (.env.local) to store secrets securely.
  • Immediately revoke any key suspected of being compromised from Developer Settings.
  • Always verify the X-Spext-Signature header for incoming webhook deliveries.

Interactive API Playground & Request Sandbox

SANDBOX SIMULATOR

Test live endpoints, adjust payload fields, and inspect simulated server responses in real time.

POSThttps://spext.fun/api/v1/transfers
Click "Send Request" to execute...

API Reference (Endpoints)

REST documentation with schemas, parameters, payloads, and response structures.

POST/transfers
Transfers

Create a Transfer

Creates a new encrypted, time-limited transfer for text, link, or file payloads.

PARAMETERS
FieldTypeRequiredDescription
typestringRequiredTransfer type: "text", "url", or "file"
textstringOptionalText content (required when type="text")
targetUrlstringOptionalDestination URL (required when type="url")
expirationstringOptionalRetention duration: 15m, 1h, 6h, 1d, 7d, forever
oneTimebooleanOptionalBurn immediately after first successful read
passwordstringOptionalOptional password requirement for access
Request Payload (JSON)
{
  "type": "text",
  "text": "Production API Key: prod_sec_9998271",
  "expiration": "1h",
  "oneTime": true
}
Response (201)
{
  "success": true,
  "id": "x8k9m2p1",
  "shareUrl": "https://spext.fun/en/x8k9m2p1",
  "type": "text",
  "expiresAt": "2026-09-01T11:00:00.000Z",
  "oneTime": true,
  "createdAt": "2026-09-01T10:00:00.000Z"
}
GET/transfers
Transfers

List Owned Transfers

Retrieves a paginated list of active and recent transfers belonging to your API key.

PARAMETERS
FieldTypeRequiredDescription
limitnumberOptionalNumber of records (max 100)
statusstringOptionalFilter: "active", "expired", "consumed"
Response (200)
{
  "transfers": [
    {
      "id": "x8k9m2p1",
      "type": "text",
      "views": 0,
      "expiresAt": "2026-09-01T11:00:00.000Z",
      "status": "active"
    }
  ],
  "total": 1
}
GET/transfers/{id}
Transfers

Get Transfer Metadata

Fetches status, view count, expiration date, and payload snippet for a transfer.

PARAMETERS
FieldTypeRequiredDescription
idstringRequiredUnique transfer ID or short code
Response (200)
{
  "id": "x8k9m2p1",
  "type": "text",
  "contentSnippet": "Production API Key: prod_***",
  "views": 1,
  "maxViews": 1,
  "expiresAt": "2026-09-01T11:00:00.000Z",
  "isConsumed": false
}
DELETE/transfers/{id}
Transfers

Revoke and Delete Transfer

Permanently destroys the transfer ahead of its natural expiration.

PARAMETERS
FieldTypeRequiredDescription
idstringRequiredID of the transfer to delete
Response (200)
{
  "success": true,
  "message": "Transfer successfully revoked and deleted."
}
POST/requests
Requests

Create Upload Request Link

Generates a secure PIN-protected inbox URL where external parties can upload files directly to you.

PARAMETERS
FieldTypeRequiredDescription
titlestringRequiredTitle or description of the requested files
expirationstringOptionalRequest validity duration
Request Payload (JSON)
{
  "title": "Identity Verification & Tax Documents",
  "expiration": "1d"
}
Response (201)
{
  "requestId": "req_87192",
  "requestUrl": "https://spext.fun/en/request/req_87192",
  "pin": "849201",
  "expiresAt": "2026-09-02T10:00:00.000Z"
}
POST/secrets
Secrets

Create Burn-After-Reading Secret

Encrypts a zero-knowledge secret that vaporizes from memory and persistence immediately upon access.

PARAMETERS
FieldTypeRequiredDescription
secretstringRequiredSecret text or credentials
passwordstringOptionalOptional passphrase
expirationstringOptionalMaximum time to live
Request Payload (JSON)
{
  "secret": "AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
  "expiration": "1h"
}
Response (201)
{
  "secretId": "sec_99182",
  "secretUrl": "https://spext.fun/en/secret/sec_99182",
  "burnAfterRead": true,
  "expiresAt": "2026-09-01T11:00:00.000Z"
}
POST/rooms
Collaboration

Provision Encrypted Room

Spins up an ephemeral, encrypted real-time workspace for temporary team debugging.

PARAMETERS
FieldTypeRequiredDescription
namestringRequiredRoom name or incident reference
ttlHoursnumberOptionalRoom lifetime in hours
Request Payload (JSON)
{
  "name": "Incident-Response-WarRoom-402",
  "ttlHours": 12
}
Response (201)
{
  "roomId": "room_war_402",
  "roomUrl": "https://spext.fun/en/room/room_war_402",
  "expiresAt": "2026-09-01T22:00:00.000Z"
}
POST/debug-share
Diagnostics

Share Sanitized Diagnostic Logs

Accepts raw logs and automatically sanitizes credentials before creating a shareable diagnostic URL.

PARAMETERS
FieldTypeRequiredDescription
diagnosticsstringRequiredDiagnostic summary
logsstringRequiredRaw console or stack logs
Request Payload (JSON)
{
  "diagnostics": "Crash on worker process 3 during heavy batch export",
  "logs": "Error: Connection timeout at DB_POOL (ip: 10.0.0.4)"
}
Response (201)
{
  "debugId": "dbg_77192",
  "shareUrl": "https://spext.fun/en/dbg_77192",
  "sanitized": true
}

Webhooks & Event Delivery

Receive real-time push events when transfers are created, accessed, or purged.

Every webhook request carries an X-Spext-Signature header. Verify the signature against your webhook secret to confirm the payload originated from Spext:

transfer.created

Fired immediately after a transfer is successfully created.

transfer.completed

Fired when a recipient views the note or completes file download.

transfer.deleted

Fired when a transfer expires or is revoked via API.

request.created

Fired when a new upload request link is provisioned.

request.closed

Fired when the uploader finishes submitting requested files.

secret.consumed

Fired when a burn-after-reading secret is viewed and destroyed.

Cryptographic Signature Verification (HMAC SHA-256)

Every webhook request carries an X-Spext-Signature header. Verify the signature against your webhook secret to confirm the payload originated from Spext:

import crypto from 'crypto';

export function verifySpextWebhook(payloadString, signatureHeader, secretKey) {
  const [tPart, v1Part] = signatureHeader.split(',');
  const timestamp = tPart.split('=')[1];
  const signature = v1Part.split('=')[1];

  const signedPayload = `${timestamp}.${payloadString}`;
  const expectedSignature = crypto
    .createHmac('sha256', secretKey)
    .update(signedPayload)
    .digest('hex');

  return crypto.timingSafeEqual(
    Buffer.from(signature),
    Buffer.from(expectedSignature)
  );
}

Model Context Protocol (MCP) Server

Equip Claude Desktop, Cursor, LangChain, and autonomous agents with native Spext tools.

Allowing LLMs to output plaintext credentials, environment secrets, and sensitive crash dumps directly in chat creates significant security liability. Spext MCP lets AI agents store secrets in auto-expiring encrypted links instead.

Claude Desktop Configuration (claude_desktop_config.json)

{
  "mcpServers": {
    "spext": {
      "command": "npx",
      "args": ["-y", "@spext/mcp-server"],
      "env": {
        "SPEXT_API_KEY": "spx_sk_live_your_key_here"
      }
    }
  }
}
AI AGENT TOOLS
spext_create_transfer

Converts text, passwords, or links into an auto-expiring, encrypted Spext URL.

spext_get_transfer

Checks whether a transfer ID is active, remaining TTL, and view count.

spext_create_secret

Enables the AI to generate a burn-after-reading secret that self-destructs upon opening.

Rate Limits, Error Codes & Idempotency

Specifications and protocols engineered for high reliability and throughput.

Standard Authenticated Key120 requests / minute

Sliding Window

Unauthenticated Endpoints20 requests / minute

IP-based Quota

File Payload Boundary25 MiB maximum

Per Transfer

HTTP Status Codes

CodeStatusDescription
200OKRequest succeeded and returned the expected resource.
201CreatedResource (transfer, request, secret) successfully created.
400Bad RequestInvalid parameter, missing required field, or bad format.
401UnauthorizedMissing or invalid API token (spx_sk_...).
403ForbiddenAPI key lacks required scope for this action.
404Not FoundTransfer not found, expired, or already burned.
429Too Many RequestsRate limit exceeded. Pause requests for Retry-After seconds.
500Internal Server ErrorTransient service failure. Safe to retry with idempotency key.

Developer Frequently Asked Questions

Technical guidance and answers for building on Spext.

Sign in to your Spext account and head over to Account > Developer Settings to generate a new key with your required scopes.

Spext API ile Entegrasyona Hemen Başlayın

Geliştirici anahtarınızı 30 saniyede oluşturun, dakikalar içinde güvenli ve şifreli veri transferi yapın.

API Anahtarı Al