Manage Posts
List postsโ
GET /v1/website/posts
Scope: website:read. Newest first, paginated.
| Query | Description |
|---|---|
status | Optional: draft, scheduled or live |
page, per_page | Pagination |
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
| Field | Type | Required | Description |
|---|---|---|---|
title | string | Yes | Up to 200 characters |
body | string | No | Plain 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. |
topic | string | No | Groups posts on the News page, e.g. Offers |
excerpt | string | No | The short summary on cards. Defaults to the start of the post. |
status | string | No | draft (default) or published |
publish_at | string | No | YYYY-MM-DD HH:MM in the shop's own time zone. A future time schedules the post. |
seo_title, seo_description | string | No | How 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.