Getting started
Quickstart
Model a collection, publish one entry, and read it back over HTTP. Everything here happens in your own workspace; nothing needs to be installed.
1. Find your workspace URL
Your workspace lives at its own subdomain, and that hostname is also the base URL for every API request you will make:
https://{your-workspace}.sedgemark.app Open it and sign in. The workspace owner’s email and first password are issued when the workspace is provisioned. If you do not have them, they belong to whoever set the workspace up, who can also invite you with your own account from Users & API Keys.
Sedgemark is not yet open for self-service signup. The front page has the waitlist: join it and you will be mailed when workspaces open.
Throughout these docs the example workspace is acme.sedgemark.app: substitute
your own everywhere you see it.
2. Create a collection
A collection is the shape of one kind of thing. From Collections in the dashboard,
create one called Blog Post. Sedgemark derives the slug blog_post from the name: collection and field slugs use underscores, never
dashes, and that slug is what appears in your API paths.
Add two fields to it:
-
title: a Text field, required. -
body: a Rich text field.
While you are here, note the collection’s visibility. A public collection can be read by anyone with no credentials at all; a private one requires an API key. Leave it public for now. There is also a
third tier, gated (content that opens to an end-user account signed in
through the Identity beta), which this quickstart does not
use; see Content API → Visibility.
Sedgemark provisions real, typed database columns for the fields you define, which is why
queries stay fast as a collection grows and why a date field rejects
something that is not a date. Adding fields later is fine; the existing entries simply
have no value for them yet.
3. Write an entry and publish it
Open Entries → Blog Post, create an entry, fill in the title and body, and press Publish.
Publishing is the step that matters for the API. Every entry carries a _status of draft or published, and
the delivery API only ever returns published entries
: for every caller, with or without a key, whatever it was granted. A draft you cannot see in
your site’s output is almost always a draft that was never published.
4. Read it back
No authentication for a public collection.
curl https://acme.sedgemark.app/api/v1/blog_post You get back a page of entries, plus the count needed to page through the rest:
{
"data": [
{
"id": "9f8c1a2b-4d5e-4f60-8a71-2c3d4e5f6071",
"title": "Hello, world",
"body": "<p>My first post.</p>",
"_status": "published",
"_published_at": "2026-08-04T15:04:05.000Z",
"_created_by": "3b1e7c40-88a2-4d19-9f5c-6a0b1d2e3f40",
"_created_at": "2026-08-04T14:58:11.000Z",
"_updated_at": "2026-08-04T15:04:05.000Z"
}
],
"total": 1,
"limit": 50,
"offset": 0
}
The _-prefixed keys are system columns present on every entry of every
collection; your own fields sit alongside them. Both are described in full on the Content API page.
From JavaScript, the same request:
const res = await fetch('https://acme.sedgemark.app/api/v1/blog_post?limit=10')
if (!res.ok) throw new Error(`Sedgemark responded ${res.status}`)
const { data, total, limit, offset } = await res.json()
for (const post of data) {
console.log(post.title, post._published_at)
}
// There is no `hasMore` field. Derive it.
const hasMore = offset + data.length < total 5. If the collection is private
Switch the collection to private and the same request returns 401. Mint a key under Users & API Keys granted entries:read, and send it as a bearer token:
curl https://acme.sedgemark.app/api/v1/blog_post \
-H "Authorization: Bearer $SEDGEMARK_API_KEY" Anything shipped to a browser (client-side JavaScript, a public repository, a static build’s output) can be read by anyone. Use keys from a server, a build step, or an agent you control.
In practice this is not a constraint you have to work around: the content endpoints send no CORS headers, so they are not callable from a browser at all, whatever their visibility. See Content API → This is a server-side API.
Where to go next
- Authentication: keys, the permissions they carry, and which surfaces need one.
- Content API: pagination, field types, relations and rich text.
- TypeScript client: stop hand-writing
fetchcalls and let Sedgemark generate a typed one.