Technical

API Access


Build custom integrations with Addagio's REST API. Available on Business plan and above.


Getting your API key


  • Go to Dashboard → Settings → API
  • Click "Generate API Key"
  • Copy and securely store your key — it's only shown once
  • Use the key in the Authorization: Bearer YOUR_KEY header

  • API base URL


    https://api.addagio.io/v1


    All requests must use HTTPS. Responses are in JSON format.


    Available endpoints


    Bookings

  • GET /bookings — List all bookings (supports pagination and filters)
  • GET /bookings/:id — Get booking details
  • POST /bookings — Create a booking
  • PATCH /bookings/:id — Update booking status
  • DELETE /bookings/:id — Cancel a booking

  • Services

  • GET /services — List all services
  • GET /services/:id — Get service details
  • POST /services — Create a service
  • PATCH /services/:id — Update a service
  • DELETE /services/:id — Delete a service

  • Availability

  • GET /availability — Get available time slots for a date range
  • GET /availability/:staffId — Get specific staff member's availability

  • Clients

  • GET /clients — List all clients
  • GET /clients/:id — Get client details and booking history

  • Webhooks


    Receive real-time notifications when events occur:


  • Go to Settings → API → Webhooks
  • Add your endpoint URL
  • Select which events to listen for:
  • - booking.created

    - booking.cancelled

    - booking.completed

    - payment.received

    - payment.refunded


    Webhook payloads include a signature header for verification.


    Rate limits


  • 100 requests per minute per API key
  • 10,000 requests per day
  • Burst limit: 20 requests per second

  • Exceeding limits returns a 429 Too Many Requests response with a Retry-After header.


    SDKs


    We provide official SDKs for:

  • JavaScript/TypeScript (npm install @addagio/sdk)
  • Python (pip install addagio)
  • Ruby (gem install addagio)

  • Error handling


    All errors return a consistent format:

    {

    "error": {

    "code": "INVALID_REQUEST",

    "message": "Description of what went wrong",

    "details": {}

    }

    }


    Common status codes: 400 (bad request), 401 (unauthorized), 404 (not found), 429 (rate limited), 500 (server error).

    APIdeveloperintegrationwebhook