Nookal Invoices API

Invoices and their items, payments, credits, discounts, and refunds.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/nookal-invoices-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

nookal-invoices-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Nookal Appointments Invoices API
  description: 'REST API for Nookal, Australian-built practice management software for allied health clinics. The API exposes patients, cases, treatment notes, files, appointments, class bookings, availabilities, clinic reference data (locations, practitioners, appointment/class types, stock), and invoices.


    Base URL: https://api.nookal.com/production/v2/. All requests are authenticated with an account-issued API key passed as the `api_key` parameter (query string for GET requests, form field for POST requests). Responses are JSON using a common envelope: `{"status":"success"|"failure","data":{...},"details":{...}}`. On failure, `details` carries `errorMessage`, `errorCode`, and an `alerts` array. Read endpoints are paginated via `page` and `page_length`, and the response `details` object reports `totalItems`, `currentItems`, `currentPage`, and `nextPage`.


    Endpoint paths, methods, and parameters are grounded in Nookal''s public API reference (https://api.nookal.com/dev). The `verify`, `getLocations`, and `getPatients` surfaces were confirmed live against the production host; the `api_key` requirement is confirmed by live probes. Request and response body schemas below are MODELED from the documented object reference and the live JSON envelope, not copied from a machine-readable Nookal specification (Nookal does not publish one), so field-level shapes should be verified against a live account before production use.'
  version: v2
  contact:
    name: Nookal
    url: https://www.nookal.com
  termsOfService: https://www.nookal.com/terms
servers:
- url: https://api.nookal.com/production/v2
  description: Nookal production API (v2)
security:
- apiKeyQuery: []
tags:
- name: Invoices
  description: Invoices and their items, payments, credits, discounts, and refunds.
paths:
  /getInvoices:
    post:
      operationId: getInvoices
      tags:
      - Invoices
      summary: Get invoices
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              required:
              - api_key
              properties:
                api_key:
                  type: string
                patient_id:
                  type: string
                last_modified:
                  type: string
                void:
                  type: boolean
                expanded:
                  type: boolean
      responses:
        '200':
          description: A status envelope whose data contains invoices.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope'
  /getInvoice:
    post:
      operationId: getInvoice
      tags:
      - Invoices
      summary: Get a single invoice
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              required:
              - api_key
              - invoice_id
              properties:
                api_key:
                  type: string
                invoice_id:
                  type: string
                void:
                  type: boolean
      responses:
        '200':
          description: A status envelope containing the requested invoice.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope'
  /addInvoice:
    post:
      operationId: addInvoice
      tags:
      - Invoices
      summary: Add an invoice
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              required:
              - api_key
              - location_id
              - patient_id
              - date
              properties:
                api_key:
                  type: string
                location_id:
                  type: string
                patient_id:
                  type: string
                date:
                  type: string
                  format: date
                invoice_notes:
                  type: string
                account_notes:
                  type: string
                items:
                  type: string
                  description: Serialized line items (see Nookal invoice object reference).
                payments:
                  type: string
                  description: Serialized payments (see Nookal invoice object reference).
                case_id:
                  type: string
                practitioner_id:
                  type: string
      responses:
        '200':
          description: A status envelope containing the created invoice.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope'
  /addPaymentToInvoice:
    post:
      operationId: addPaymentToInvoice
      tags:
      - Invoices
      summary: Add a payment to an invoice
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              required:
              - api_key
              - invoice_id
              - method
              - amount
              - date
              properties:
                api_key:
                  type: string
                invoice_id:
                  type: string
                method:
                  type: string
                amount:
                  type: string
                date:
                  type: string
                  format: date
                payment_ref:
                  type: string
      responses:
        '200':
          description: A status envelope confirming the payment.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope'
  /getInvoicePayments:
    post:
      operationId: getInvoicePayments
      tags:
      - Invoices
      summary: Get invoice payments
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              required:
              - api_key
              properties:
                api_key:
                  type: string
                invoice_id:
                  type: string
                date_from:
                  type: string
                  format: date
                date_to:
                  type: string
                  format: date
      responses:
        '200':
          description: A status envelope whose data contains invoice payments.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope'
components:
  schemas:
    Details:
      type: object
      properties:
        errorMessage:
          type: string
        errorCode:
          type: string
        alerts:
          type: array
          items:
            type: string
        totalItems:
          type: integer
        currentItems:
          type: integer
        currentPage:
          type: integer
        nextPage:
          type: integer
        pageLength:
          type: integer
    Envelope:
      type: object
      description: Standard Nookal JSON response envelope. On success, status is "success" and data carries the results object; on failure, status is "failure" and details carries errorMessage, errorCode, and alerts. Shape confirmed live against the verify and getLocations endpoints.
      properties:
        status:
          type: string
          enum:
          - success
          - failure
        data:
          type: object
          additionalProperties: true
          description: Result payload on success (structure varies per endpoint).
        details:
          $ref: '#/components/schemas/Details'
  securitySchemes:
    apiKeyQuery:
      type: apiKey
      in: query
      name: api_key
      description: 'Account-issued API key created in the Nookal application under Setup / Integrations, with a configurable access level. Passed as the `api_key` parameter - in the query string for GET requests and as a form field for POST requests. Confirmed live: omitting it returns a failure envelope with alert "Missing variable: api_key".'