Skip to main content

Manage Posts

List postsโ€‹

GET /v1/website/posts

Scope: website:read. Newest first, paginated.

QueryDescription
statusOptional: draft, scheduled or live
page, per_pagePagination

Get a postโ€‹

GET /v1/website/posts/{id}

Scope: website:read. Returns 404 for a post that is not yours.

Create a postโ€‹

POST /v1/website/posts

Scope: website:write

FieldTypeRequiredDescription
titlestringYesUp to 200 characters
bodystringNoPlain text (a blank line starts a new paragraph) or simple HTML: p, br, strong, em, u, a, ul, ol, li, h3. Anything else is removed.
topicstringNoGroups posts on the News page, e.g. Offers
excerptstringNoThe short summary on cards. Defaults to the start of the post.
statusstringNodraft (default) or published
publish_atstringNoYYYY-MM-DD HH:MM in the shop's own time zone. A future time schedules the post.
seo_title, seo_descriptionstringNoHow the post looks in search results
curl -X POST "https://app.equipdash.com/api/v1/website/posts" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Closed Sunday - high winds",
"body": "All rentals are off on Sunday.\n\nEveryone booked gets a refund.",
"topic": "Closures",
"status": "published"
}'

Returns 201 with the post. Returns 422 when the shop has no website yet or a field is invalid.

Update a postโ€‹

PATCH /v1/website/posts/{id}

Scope: website:write. Send only the fields that change. "status": "draft" takes a post off the site.

Delete a postโ€‹

DELETE /v1/website/posts/{id}

Scope: website:write. Returns 204.