Posts

Posts are content items on a wall. They are nested under walls in the URL — use GET /walls to find the wall ID first.

Required scope: read:posts, write:posts (and write:media if attaching media).

Endpoints

GET
/api/open/v1/walls/{wall_id}/posts

List posts on a wall (published by default, paginated)

GET
/api/open/v1/walls/{wall_id}/posts/{id}

Get a single post

POST
/api/open/v1/walls/{wall_id}/posts

Create a new post

PUT
/api/open/v1/walls/{wall_id}/posts/{id}

Update a post

DELETE
/api/open/v1/walls/{wall_id}/posts/{id}

Delete a post (returns 204)

List posts

Standard list parameters: page, per_page (max 50), since (ISO 8601 datetime — only return records created after this timestamp).

curl "https://customer.monotree.com/api/open/v1/walls/1/posts?per_page=10" \
  -H "Authorization: Bearer mono_your_token_here"

Filtering by status

By default, the list returns only published posts. Use the status query parameter to retrieve drafts:

statusReturns
published (default)Currently-live content only (published, with a publish time in the past).
draftUnpublished content only — drafts, plus items awaiting a scheduled publish.
allEvery item, regardless of state.
curl "https://customer.monotree.com/api/open/v1/walls/1/posts?status=draft" \
  -H "Authorization: Bearer mono_your_token_here"

An unrecognised value returns 422. Posts created via this API are published immediately, so this mainly surfaces drafts authored elsewhere (e.g. scheduled posts).

Create a post

curl -X POST https://customer.monotree.com/api/open/v1/walls/1/posts \
  -H "Authorization: Bearer mono_your_token_here" \
  -H "Content-Type: application/json" \
  -d '{"body": "Hello from the API!"}'

Request body

FieldTypeNotes
bodystringRequired. Post content.
media_idsarray of integersOptional. IDs returned from POST /media. Requires write:media scope.

Create a post with media

Upload each file via POST /media first to get an ID, then reference the IDs in the optional media_ids array. All items must be the same type (image, video, or document). Maximum 10 per post — mixed types return 422.

curl -X POST https://customer.monotree.com/api/open/v1/walls/1/posts \
  -H "Authorization: Bearer mono_your_token_here" \
  -H "Content-Type: application/json" \
  -d '{"body": "Look at this!", "media_ids": [42, 43]}'

Update a post

curl -X PUT https://customer.monotree.com/api/open/v1/walls/1/posts/123 \
  -H "Authorization: Bearer mono_your_token_here" \
  -H "Content-Type: application/json" \
  -d '{"body": "Updated body"}'

Response

{
  "data": {
    "id": 123,
    "body": "Hello from the API!",
    "wall_id": 1,
    "wall_name": "General",
    "author": {
      "id": 1,
      "name": "John Doe",
      "email": "john@example.com",
      "type": "user",
      "avatar_url": "https://images.monotree.com/avatars/john-doe.jpg",
      "groups": [
        { "id": 1, "name": "Kitchen Staff", "type": "department", "created_at": "2026-01-15T10:00:00+00:00" }
      ],
      "hired_at": "2025-06-01",
      "is_away": false,
      "last_active_on": "2026-03-22",
      "registered_at": "2025-06-01T09:00:00+00:00",
      "created_at": "2025-06-01T09:00:00+00:00"
    },
    "created_at": "2026-03-22T10:00:00+00:00",
    "updated_at": "2026-03-22T10:00:00+00:00"
  }
}