Store text via REST. Secure write access for webhooks, forms, and third parties.
# Create a stash to organize your data
$ curl -X POST https://wrendb.com/api/stash
{
"stash_id": "abc123...",
"master_token": "token-xyz789...",
"message": "Save this token securely..."
}
# Add an item to the stash
$ curl -X POST https://wrendb.com/api/item/abc123... \
-d "Hello, world!"
{
"key": "def456...",
"message": "Item created successfully in stash"
}
# Read it back (public by default)
$ curl https://wrendb.com/api/item/abc123...
Hello, world!
# Generate a presigned URL for time-limited writes
$ curl -X POST https://wrendb.com/api/abc123.../def456.../presign \
-H "Authorization: Bearer token-xyz789..." \
-H "X-Operation: upsert" \
-d "Embedded value here!"
{
"presigned_url": "https://wrendb.com/api/update?token=...",
"expires_at": "2025-11-27T12:30:00Z",
"operation": "upsert"
}
# Use the presigned URL (no auth needed!)
$ curl -X POST "https://wrendb.com/api/update?token=..."
{
"id": "def456...",
"message": "Item upserted successfully"
}
POST to /stash and get back a master token. This is your key to everything.
Store any text data as key-value pairs. JSON, HTML, plain text - whatever you need.
Generate time-limited, single-use URLs that allow specific write operations. Perfect for webhooks, forms, or one-click approvals—no token sharing required.
Data expires automatically — WrenDB stays lightweight by design.
Built for ephemeral workflows
Each stash is a namespace for related key-value pairs, controlled by one master token.
Generate time-limited URLs that allow specific write operations without sharing your master token. Perfect for webhooks, HTML forms, or one-click approvals.
If it's text, it works. JSON, HTML, XML, plain text, configuration, build output—store it all.
All data expires automatically—no manual cleanup needed. Perfect for ephemeral use cases where you need temporary storage without long-term persistence overhead.
Generate a presigned URL. Give it to a webhook, a form, or a third party. They can write to your stash—you keep your token.
# Generate a presigned URL for time-limited writes
$ curl -X POST https://wrendb.com/api/{stash_id}/{item_id}/presign \
-H "Authorization: Bearer {token}" \
-d "payload from webhook"
{
"presigned_url": "https://wrendb.com/api/presigned?token=abc123...",
"expires_at": "2025-11-27T12:30:00Z"
}
# Anyone with this URL can write—no token needed
$ curl -X POST "https://wrendb.com/api/presigned?token=abc123..."
{
"id": "item_id",
"message": "Operation successful"
}
URLs expire after 30 minutes. Set it and forget it.
Share write access without sharing your master token.
Each URL can only be used once. Replay protection built-in.
Perfect for webhooks, forms, and external services you don't fully trust.
Normally, sharing write access means sharing your token. That's a security risk you have to manage forever.
Presigned URLs flip this: Generate a one-time, time-limited URL for exactly the operation you need. Give it to Stripe webhooks, HTML forms, GitHub Actions, or any third party—without exposing your credentials.
Presigned URLs are our superpower—competitors require you to share your API keys
| Feature | WrenDB | KVdb | JSONBin |
|---|---|---|---|
| Presigned URLs | ✅ | ❌ | ❌ |
| Share write access safely | ✅ Time-limited, single-use URLs | ❌ Must share master key | ❌ Must share API key |
| Webhook support | ✅ No token exposure | ⚠️ Requires sharing credentials | ⚠️ Requires sharing credentials |
| Public read access | ✅ | ✅ | ❌ |
| Auto-expiring data | ✅ | ❌ | ❌ |
The key difference: WrenDB lets you delegate write access without sharing your master token. Other services force you to expose credentials to third parties—a security risk that never expires.
What people actually build with WrenDB
Generate presigned URLs to approve/deny actions (shutdown, rollback, cache flush). Share the URL in Slack or email—clicking it triggers the action. No credentials shared, URL expires in 30 minutes.
See Example →Pipelines write build status using presigned URLs. Team dashboards read the status publicly—no pipeline credentials needed. Each build gets its own time-limited write URL.
See Example →IoT devices read their state publicly. When you need to send a command, generate a presigned URL that updates the device state. Command URLs expire automatically for security.
See Example →Generate a presigned URL for Stripe, GitHub, or Zapier webhooks. They POST to your stash—you keep your master token. Perfect for serverless webhook receivers on static sites.
See Example →Share environment-specific config or lightweight flags with public reads and controlled updates.
See Example →Store fixture responses per endpoint/version; frontends hit read-only URLs while backends are in progress.
See Example →WrenDB exists to give developers the simplest possible way to store and retrieve text over HTTP — no accounts, no dashboards, no complexity. Just a tiny, dependable bird that delivers your data when you need it.
WrenDB isn't here to replace your production database or data warehouse. It's a lightweight stash — perfect for small jobs, quick scripts, webhooks, forms, flags, and anything that just needs to be stored and shared fast.
Built for developers who value simplicity over ceremony.
One curl to store. One curl to retrieve. That's it. Free while in beta.