Build on Harbour
HTTP API for the agency operating system — CRM, payments, sites, phone, and calendar connections. See the live OpenAPI document for the full route list.
REST API
JSON endpoints for CRM, bookings, payments, sites, phone, and calendar — the same surfaces the product uses.
Inbound webhooks
Stripe (`/api/stripe/webhook`), Twilio SMS/voice, and Nylas mail events are live. Outbound product webhooks are not shipped yet.
Connections
Agencies connect Stripe, domains, Twilio numbers, and Google/Outlook via Settings → Connections.
Auth
Production private routes require the harbour_session cookie from demo sign-in, or Authorization: Bearer $HARBOUR_API_KEY when that env var is set.
API reference
Routes on this instance. In production, private APIs require a signed-in session cookie or HARBOUR_API_KEY bearer token. Public: Stripe webhook, Twilio webhook, Nylas callback/webhook, calendar availability (GET + POST with bookingToken), Unsplash, OpenAPI.
- GET
/api/v1/overviewAgency health + snapshot - GET
/api/v1/contactsList or filter contacts - POST
/api/v1/contactsCreate a contact / lead - GET
/api/v1/formsList form submissions - POST
/api/v1/formsSubmit a form lead - GET
/api/v1/bookingsList bookings - POST
/api/v1/bookingsCreate a booking - GET
/api/v1/clientsList client workspaces - GET
/api/v1/reliabilityHealth metrics + issues - POST
/api/auth/sessionSign in / out (sets session cookie + agencyId) - GET
/api/connectionsAgency connection status cards - GET
/api/stripe/connect/accountStripe Connect account for agency - POST
/api/stripe/connect/accountStart / resume Connect onboarding - POST
/api/stripe/checkoutCreate Checkout Session - GET
/api/stripe/checkout/sessionConfirm Checkout after return - POST
/api/sites/publishPublish site snapshot - POST
/api/sites/domainsAttach custom domain - GET
/api/twilio/numbersList / search phone numbers - POST
/api/twilio/numbersProvision phone number - POST
/api/inbox/messagesSend SMS - GET
/api/nylas/authStart email/calendar OAuth - POST
/api/nylas/sendSend email via Nylas - GET
/api/calendar/availability?agencyId=Public booking availability (requires agencyId) - GET
/openapi.jsonOpenAPI 3 document
Quickstart
Use the public OpenAPI document and curl examples below. The in-product developer console opens with Harbour's private preview — not yet available on the public site.
Open OpenAPI JSON# Public
curl https://getharbour.io/api/v1/overview
curl https://getharbour.io/openapi.json
# Session (then reuse cookie)
curl -c cookies.txt -X POST https://getharbour.io/api/auth/session \
-H "Content-Type: application/json" \
-d '{"email":"you@agency.com","agencyName":"Northstar"}'
curl -b cookies.txt https://getharbour.io/api/connections
# Optional API key
curl https://getharbour.io/api/v1/contacts \
-H "Authorization: Bearer $HARBOUR_API_KEY"