Documentation
Keelstore docs
Everything you need to store objects and keep them in sync — from your first upload to production rollout.
Introduction
Keelstore is an object store with a built-in change feed. You use a familiar, S3-style API for buckets and objects, and a single long-lived endpoint — /api/v2/storage/sync — to receive every change as it happens. That lets clients stay current without polling.
All requests go to https://cdn.kvp123.flowerssail55.com and authenticate with a bearer token from your dashboard.
Quickstart
Create a token under Settings → API keys, export it, and you're ready to go:
# 1. create a bucket curl -X POST https://cdn.kvp123.flowerssail55.com/api/v2/storage/buckets \ -H "Authorization: Bearer $KEELSTORE_TOKEN" \ -d '{"name":"project-assets","region":"eu"}' # 2. upload an object curl -X PUT https://cdn.kvp123.flowerssail55.com/api/v2/storage/objects/project-assets/logo.svg \ -H "Authorization: Bearer $KEELSTORE_TOKEN" \ --data-binary @logo.svg # 3. keep clients in sync curl -N https://cdn.kvp123.flowerssail55.com/api/v2/storage/sync \ -H "Authorization: Bearer $KEELSTORE_TOKEN" \ -H "X-Bucket: project-assets"
That's the whole loop: write objects through the storage API, and read changes through the sync channel. See the sync guide for the channel protocol, or the API reference for every endpoint.
Core concepts
Buckets
A bucket is a namespace for objects, pinned to one or more regions. Names are globally unique within your account.
Objects
Objects are immutable once written. Writing the same key again creates a new version and emits a put event on the sync channel.
Cursors
Every change has a monotonic cursor. Store the last cursor you processed and pass it on reconnect to resume exactly where you left off.
Next steps
- Sync guide — open a channel, handle deltas, reconnect
- SDKs — official clients for Node, Python, Go
- API reference — endpoints, parameters, responses
- Rate limits — per-plan request and bandwidth limits