Authentication

The Open API uses API keys (prefixed mono_) to authenticate requests. All requests must include a valid key in the Authorization header and be made over HTTPS. Keys are shown only once when created, so keep them secure and never share them in public repositories or client-side code.

curl https://customer.monotree.com/api/open/v1/walls \
  -H "Authorization: Bearer mono_your_token_here" \
  -H "Accept: application/json"

A missing, unknown, revoked or expired key returns 401; see Errors. Only admins can create, revoke and delete tokens in the CMS.

Scopes

Each token has scoped permissions — for example, read:posts allows reading posts while write:posts allows creating, updating, and deleting them. A write scope does not include the matching read scope: give the token both if it needs both. A request that requires a scope you don't have returns 403 Forbidden with the message This token does not have the required scope: <scope>.

ScopeCapability
read:posts, write:postsRead or create/update/delete posts
read:comments, write:commentsRead or create/update/delete comments
write:mediaUpload media files
read:announcements, write:announcementsRead or create/update/delete announcements
read:handbooks, write:handbooksRead or create/update/delete handbooks and chapters
read:courses, write:coursesRead or create/update/delete courses and chapters
read:journeysList journeys and read per-user journey status
read:achievements, write:achievementsList achievements, their awards and the awards a user holds, or create, update and award achievements
read:articles, write:articlesRead or write article content (elements). An article that belongs to other content also needs that content's scope, for example read:handbooks or write:handbooks for a handbook chapter's article; see owned articles
read:events, write:eventsRead or create/update/delete events
read:calendar_entries, write:calendar_entriesRead or create/update/delete calendar entries
read:calendar_event_types, write:calendar_event_typesRead or create/update calendar event types
read:localesList the platform's active languages
read:users, write:usersList users, or create/delete users and set profile pictures
read:groups, write:groupsList groups, or create groups
read:org_chartRead the organizational chart
read:walls, write:wallsList walls; write:walls (create, update and publish walls) has no HTTP endpoint and is only used by the MCP server
read:statsRead aggregated statistics
read:managerhubRead Manager Hub team and progress reports
read:surveysRead surveys and answers
read:formsList and read forms (whistleblower forms excluded)
read:formresponsesRead form responses incl. public comments and internal notes
read:certificates, write:certificatesRead or create/update/delete certificates and assign them
read:certificatetypes, write:certificatetypesRead or create/update/delete certificate types
read:staff_cards, write:staff_cardsRead or create/update/delete staff cards
read:webhooks, write:webhooksRead or create/update/revoke outgoing webhook endpoints
read:incoming_webhooks, write:incoming_webhooksRead or create/update/revoke incoming webhooks
read:bots, write:botsRead or create/update bot users
write:chat_messagesSend a direct message to a user as a bot, pin bot messages, and schedule bot messages to group chats
write:notificationsSend notifications to the activity feed of groups and users

read:todolists also exists. It has no HTTP endpoint and is only used by the MCP server.

GET /token and POST /feedback need no scope.

Checking a token

GET /token describes the token you call it with: its name, its scopes and when it expires. It works with any valid token and needs no scope, so use it to check a token at setup instead of waiting for the first 403.

GET
/api/open/v1/token

The calling token's name, scopes and expiry

curl https://customer.monotree.com/api/open/v1/token \
  -H "Authorization: Bearer mono_your_token_here"
{
  "data": {
    "name": "Rewards integration",
    "scopes": ["read:achievements", "read:users"],
    "expires_at": null
  }
}

expires_at is null for a token that never expires. A revoked or expired token gets 401, like on every other endpoint. The token's IP restriction is not returned.

Authorship

When creating a token, you choose who content is attributed to. Select Myself to have posts and announcements appear under your name, or System user to attribute them to the platform. This cannot be changed after the token is created. If the admin who created a Myself token is deleted, content is attributed to the system user from then on.

IP restrictions

You can optionally restrict a token to one IPv4 or IPv6 address (no ranges or lists). If set, requests from any other IP are rejected with 403 and the message Request IP is not allowed for this token. Useful for server-to-server integrations with a static egress IP.

Expiration

Tokens may have an expiration date, which must be in the future when the token is created. Expired tokens return 401 Unauthorized. Admins can also revoke or delete a token in the CMS; it then returns 401 as well.

Webhooks made with a token stop with it. Revoking or deleting a token revokes the incoming and outgoing webhooks it created. While a token is expired, its outgoing webhooks receive no deliveries and its incoming webhooks answer 403. Webhooks created in the CMS, and outgoing webhooks that already existed before v0.59.0, do not depend on a token.

Feature-gated endpoints

Some endpoints belong to features that are switched on per company. If the feature is off, those endpoints return 403 with the message The <feature> feature is not enabled. even with the right scope, for reads and writes alike. Ask your Monotree contact to enable it.

Feature in the messageEndpoints
wallsWalls, Posts and Comments, and incoming webhooks with the wall_post action
formsForms and form responses
handbooksHandbooks and their chapters, and the articles of handbook chapters
coursesCourses and their chapters, and the articles of course chapters
org_chartOrg Chart
manager_hubManager Hub
achievementsAchievements, including GET /users/{userId}/achievements

Only the articles of handbook and course chapters are gated. Posts have no article, and the articles of announcements, events, calendar entries, staff cards, certificates and achievements are not gated by any feature.