BusyHour REST API

BusyHour is an embeddable engagement API. It gives your app the building blocks people expect from a modern product — in-app messaging, activity feeds with comments, and push notifications — behind a single HTTP + WebSocket API, billed by usage against a prepaid wallet.

You call it from your own backend and clients; BusyHour stores the data, fans out realtime events, meters usage, and debits your wallet. We built it for teams who want those features without an SDK, a USD contract, or a black box — realtime is a plain WebSocket and everything else is plain REST, specced as OpenAPI, so any HTTP client (or curl) works. That's the whole surface: no proprietary protocol, no client library to pin or upgrade, no black box.

  • Base URL: https://api.busyhour.id
  • Content type: application/json for every request and response body.
  • Realtime URL: wss://api.busyhour.id — one WebSocket per conversation.

BusyHour at a glance

  • What it is: an embeddable API for in-app messaging, activity feeds with comments, reactions, and notifications.
  • Surface: REST for everything + one WebSocket per conversation for realtime. No SDK — any HTTP client works.
  • Auth: x-api-key for your server; short-lived session tokens for end users.
  • Billing: free tier (1,000 messages/mo) plus prepaid IDR credits, metered per event. Disclosure: per-event rates are effective-dated and may change.
  • Self-host: available under an enterprise license, full source access.

What you get#

CapabilityWhat it does
MessagingConversations, members with roles, messages with quotes/mentions/attachments, read + delivery receipts, idempotent sends.
Activity feedsPer-user activities (feed posts) with depth-1 threaded comments.
NotificationsA server-triggered notification API, per-user inbox, and FCM push to registered device tokens.
RealtimeA WebSocket per conversation: live messages, typing, presence, receipts, with since= replay.
BillingFree-tier quotas + pay-as-you-go metering, credits, and gateway-backed wallet top-ups.

How it fits together#

Accounts and projects#

An account (you) owns one or more projects. A project is a tenant — its own users, conversations, feeds, and feature flags. Billing is metered per project but funded from the account's single wallet.

Credentials#

Your server authenticates with an API key and mints short-lived session tokens for your end-users. Those end-users then call the messaging / feed / notification / realtime surfaces directly with their session token.

The console#

The console (the BusyHour dashboard) is where humans on your team manage projects, members, API keys, and top up the wallet.

Primary sources#

Claims in these docs, traced to the machine-readable originals:

Start here#

Start with the Quickstart: zero to your first message in five steps, curl is all you need. Then read Authentication to understand the two credential types.