Skip to main content
Skip to content

Developer Platform

Build on OneBookPlus

A modern REST API for invoicing, bookings, CRM, and accounting — purpose-built for Australian SME workflows.

REST API

Every resource in OneBookPlus is accessible via a clean JSON API powered by Hono. Authenticate with scoped API keys, paginate with cursors, and filter with query parameters.

Request
curl -X GET https://api.onebookplus.com.au/v1/invoices \
  -H "Authorization: Bearer obp_live_k3x7..." \
  -H "Content-Type: application/json"
Response
{
  "data": [
    {
      "id": "inv_01HQXK9...",
      "number": "INV-0042",
      "status": "sent",
      "total": 1320.00,
      "gst": 120.00,
      "currency": "AUD",
      "due_date": "2026-04-15",
      "client": {
        "id": "con_01HQX...",
        "name": "Smith Plumbing Pty Ltd"
      }
    }
  ],
  "pagination": {
    "page": 1,
    "per_page": 25,
    "total": 148
  }
}

Available Endpoints

Full CRUD operations across every core resource. All responses follow a consistent envelope with data, pagination, and error fields.

GET

/v1/contacts

List all contacts with filtering, pagination, and search

POST

/v1/invoices

Create a GST-compliant invoice with line items

GET

/v1/quotes/{id}

Retrieve a quote by ID with full line-item detail

POST

/v1/bookings

Create a booking with service, time slot, and client

GET

/v1/jobs

List jobs with status filters and date ranges

GET

/v1/expenses

Retrieve expenses with category and GST breakdowns

Authentication

Every request is authenticated with a bearer API key scoped to your tenant. Keys are created in your dashboard and can be revoked at any time.

  • Tenant-scoped — each key is bound to a single business account
  • Read & write scopes — grant only the permissions your integration needs
  • Instant revocation — disable a compromised key in one click
Auth Header
Authorization: Bearer obp_live_k3x7...

# Keys follow the format:
#   obp_live_*   — production
#   obp_test_*   — sandbox

Webhooks

Subscribe to real-time event notifications. We'll POST a signed JSON payload to your endpoint whenever something happens in your account.

invoice.createdFired when a new invoice is created
invoice.paidFired when an invoice is marked as paid
quote.acceptedFired when a client accepts a quote
booking.createdFired when a new booking is made
booking.cancelledFired when a booking is cancelled
contact.createdFired when a new contact is added
job.completedFired when a job status changes to complete
expense.createdFired when an expense is recorded
Webhook Payload
{
  "event": "invoice.paid",
  "timestamp": "2026-03-25T01:23:44Z",
  "data": {
    "id": "inv_01HQXK9...",
    "number": "INV-0042",
    "total": 1320.00,
    "paid_at": "2026-03-25T01:23:40Z",
    "payment_method": "stripe"
  }
}

Rate Limiting

Standard rate limits ensure fair usage across all tenants. Limits are applied per API key and returned in response headers.

Standard

100 req/min

Default for all API keys

Burst

20 req/sec

Short bursts within the minute window

Webhooks

3 retries

Exponential backoff over 24 hours

Rate Limit Headers
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 87
X-RateLimit-Reset: 1711339424

Coming Soon

We're actively expanding the developer platform. Here's what's next on the roadmap.

📦

TypeScript SDK

Fully typed client library with auto-generated types from our OpenAPI spec.

🧪

API Playground

Interactive explorer to test endpoints against your sandbox data in the browser.

🔁

Webhook Testing Tools

Inspect, replay, and debug webhook deliveries from your dashboard.

🔐

OAuth 2.0 Flows

Third-party app authorization so your users can connect their OneBookPlus accounts.

Ready to integrate?

API access is currently available on request. Get in touch and we'll set you up with sandbox credentials and documentation.

Developers — API & Integrations | OneBookPlus | OneBookPlus