> ## Documentation Index
> Fetch the complete documentation index at: https://support.visualcare.com.au/llms.txt
> Use this file to discover all available pages before exploring further.

# Public API reference

> Overview of the Visualcare public API, including authentication, error codes, and endpoint catalogue

The Visualcare public API provides programmatic access to your organisation's data. All endpoints return JSON and use the base URL below.

**Base URL:** `https://publicapi.visualcare.com.au`

## Authentication

All API requests require three custom headers:

| Header   | Value           |
| -------- | --------------- |
| `User`   | Your user UUID  |
| `Key`    | Your API key    |
| `Secret` | Your API secret |

Credentials are provided directly by Visualcare. Contact [visualcare.com.au/contact](https://visualcare.com.au/contact) to request credentials.

```shell theme={null}
curl "https://publicapi.visualcare.com.au/{endpoint}"
    -H "User: user-uuid"
    -H "Key: key"
    -H "Secret: secret"
```

## Error codes

| Code | Meaning                                                                            |
| ---- | ---------------------------------------------------------------------------------- |
| 400  | Bad Request -- Your request is invalid.                                            |
| 401  | Unauthorized -- Your API key is wrong.                                             |
| 403  | Forbidden -- The requested resource is hidden for administrators only.             |
| 404  | Not Found -- The specified resource could not be found.                            |
| 405  | Method Not Allowed -- You tried to access a resource with an invalid method.       |
| 406  | Not Acceptable -- You requested a format that isn't JSON.                          |
| 410  | Gone -- The resource requested has been removed from our servers.                  |
| 429  | Too Many Requests -- You've sent too many requests in a short period of time.      |
| 500  | Internal Server Error -- We had a problem with our server. Try again later.        |
| 503  | Service Unavailable -- We're temporarily offline for maintenance. Try again later. |

<Note>
  No documented success status codes exist in the source. Successful responses return HTTP 200 with a JSON array body for GET endpoints. POST/PUT success response codes and body formats are not documented. See [Known documentation quirks](#known-documentation-quirks) below.
</Note>

## Known documentation quirks

These are quirks inherited from the upstream API documentation. They're recorded here so you don't get caught out.

### Typos in API responses

| Location                 | Field name          | Likely intended |
| ------------------------ | ------------------- | --------------- |
| Quotes response          | `Subrub`            | `Suburb`        |
| Quote line items         | `FreqTye`           | `FreqType`      |
| Next/previous shift docs | Time format `HH:SS` | `HH:MM`         |

### URL inconsistencies

* Some curl examples in the docs use `publicapi.visualcare.com` (without `.au`), but the actual base URL is `publicapi.visualcare.com.au`.
* The POST `/worker-doc` curl example targets `documents-workers` (the GET path) instead of `worker-doc` (the stated POST path). The `<Request>` component confirms the POST URL is `/worker-doc`.

### Undocumented behaviours

1. **POST/PUT success responses:** No POST or PUT endpoint documents what a successful response looks like (status code, body, returned IDs).
2. **POST `/worker-doc` content type:** Ambiguous -- shows both multipart/form-data (`-F "file=@..."`) and JSON body. Likely requires multipart/form-data with both the file and metadata fields.
3. **No file download endpoint:** Documents can be listed but not retrieved or downloaded via the API.
4. **No client document upload:** Only worker documents have POST/PUT endpoints. Client documents are read-only.
5. **`LinkId` vs `DocId`:** Worker document PUT uses `LinkId` (not `DocId`). The mapping between these IDs is not documented.
6. **Boolean string encoding in POST/PUT:** Boolean values in POST/PUT bodies use string `"TRUE"` / `"FALSE"`, not native JSON booleans. Integer 0/1 booleans appear only in GET responses.
7. **Pagination default:** Most paginated endpoints default to 200 items. `page` is an offset (number of records to skip), not a page number.
8. **POST `/worker` body wrapping:** The POST worker body is wrapped in a JSON array `[{...}]`, while POST worker-skill and worker-compliance use a plain object `{...}`.

### Endpoints not in main navigation (but documented)

* `GET /nextshift` -- Worker's next shift
* `GET /prevshift` -- Worker's previous shift

## Endpoint summary table

| Method | Path                    | Resource                 | Auth | Pagination                |
| ------ | ----------------------- | ------------------------ | ---- | ------------------------- |
| GET    | `/areas`                | Areas                    | Yes  | No                        |
| GET    | `/category-expenses`    | Categories               | Yes  | No                        |
| GET    | `/category-documents`   | Categories               | Yes  | No                        |
| GET    | `/category-incidents`   | Categories               | Yes  | No                        |
| GET    | `/category-payers`      | Categories               | Yes  | No                        |
| GET    | `/category-rosteritems` | Categories               | Yes  | No                        |
| GET    | `/category-services`    | Categories               | Yes  | No                        |
| GET    | `/clients`              | Clients                  | Yes  | No                        |
| GET    | `/agreements`           | Agreements               | Yes  | Yes (limit/page)          |
| GET    | `/HCP`                  | HCP Statements           | Yes  | No                        |
| GET    | `/DEXCase`              | DEX Cases                | Yes  | No                        |
| GET    | `/contacts`             | Contacts                 | Yes  | No                        |
| GET    | `/compliance-clients`   | Client Compliance        | Yes  | No                        |
| GET    | `/documents-clients`    | Client Documents         | Yes  | No                        |
| GET    | `/Expenses`             | Client Expenses          | Yes  | No                        |
| GET    | `/groups`               | Client Groups            | Yes  | No                        |
| GET    | `/notes-client`         | Client Notes             | Yes  | Yes (limit/page)          |
| GET    | `/Divisions`            | Divisions                | Yes  | No                        |
| GET    | `/Forms`                | Forms                    | Yes  | Yes (limit)               |
| GET    | `/incidents`            | Incidents                | Yes  | Yes (limit)               |
| GET    | `/Leads`                | Leads                    | Yes  | No                        |
| GET    | `/locations`            | Locations                | Yes  | No                        |
| GET    | `/payers`               | Payers                   | Yes  | No                        |
| GET    | `/quotes`               | Quotes                   | Yes  | Yes (limit)               |
| GET    | `/Referral`             | Referral Agencies        | Yes  | No                        |
| GET    | `/rosters`              | Roster Items             | Yes  | Yes (limit/page, max 20k) |
| GET    | `/roster-master`        | Roster Masters           | Yes  | No                        |
| GET    | `/services`             | Services                 | Yes  | No                        |
| GET    | `/Settings`             | Org Settings             | Yes  | No                        |
| GET    | `/SIRS`                 | SIRS Incidents           | Yes  | Yes (limit)               |
| GET    | `/skills`               | Skills                   | Yes  | No                        |
| GET    | `/timesheets`           | Timesheets               | Yes  | Yes (limit/page, max 40k) |
| GET    | `/Training-items`       | Training Items           | Yes  | No                        |
| GET    | `/Users`                | Users                    | Yes  | No                        |
| GET    | `/workers`              | Workers                  | Yes  | No                        |
| POST   | `/worker`               | Create Worker            | Yes  | -                         |
| PUT    | `/worker`               | Update Worker            | Yes  | -                         |
| POST   | `/worker-skill`         | Add Worker Skill         | Yes  | -                         |
| PUT    | `/worker-skill`         | Update Worker Skill      | Yes  | -                         |
| GET    | `/worker-roles`         | Worker Roles             | Yes  | No                        |
| GET    | `/availability`         | Worker Availability      | Yes  | No                        |
| GET    | `/documents-worker`     | Worker Documents         | Yes  | No                        |
| POST   | `/worker-doc`           | Upload Worker Doc        | Yes  | -                         |
| PUT    | `/worker-doc`           | Update Worker Doc        | Yes  | -                         |
| GET    | `/compliance`           | Worker Compliance        | Yes  | No                        |
| POST   | `/worker-compliance`    | Add Worker Compliance    | Yes  | -                         |
| PUT    | `/worker-compliance`    | Update Worker Compliance | Yes  | -                         |
| GET    | `/Leave`                | Worker Leave             | Yes  | No                        |
| GET    | `/Training`             | Worker Training          | Yes  | No                        |
| GET    | `/nextshift`            | Worker Next Shift        | Yes  | No                        |
| GET    | `/prevshift`            | Worker Previous Shift    | Yes  | No                        |

**Total: 46 endpoint operations across 37 unique URL paths**

## Endpoint pages

<CardGroup cols={3}>
  <Card title="Clients" icon="users" href="/api-reference/clients/information">
    Client records, agreements, HCP statements, contacts, compliance, documents, expenses, groups, and notes
  </Card>

  <Card title="Workers" icon="user-gear" href="/api-reference/workers/information">
    Worker records, skills, roles, availability, documents, compliance, leave, training, and shifts
  </Card>

  <Card title="Categories" icon="tags" href="/api-reference/categories/index">
    Category lookups for expenses, documents, incidents, payers, roster items, and services
  </Card>

  <Card title="Areas" icon="map" href="/api-reference/areas">
    Area lookup data
  </Card>

  <Card title="Divisions" icon="building" href="/api-reference/divisions">
    Division lookup data
  </Card>

  <Card title="Locations" icon="location-dot" href="/api-reference/locations">
    Location lookup data
  </Card>

  <Card title="Settings" icon="gear" href="/api-reference/settings">
    Organisation-level settings
  </Card>

  <Card title="Services" icon="list-check" href="/api-reference/services">
    Service definitions and rates
  </Card>

  <Card title="Rosters" icon="calendar" href="/api-reference/rosters">
    Roster items and master list
  </Card>

  <Card title="Timesheets" icon="clock" href="/api-reference/timesheets">
    Timesheet records
  </Card>

  <Card title="Leads and referrals" icon="user-plus" href="/api-reference/leads">
    Lead records and referral agencies
  </Card>

  <Card title="Payers" icon="credit-card" href="/api-reference/payers">
    Payer records
  </Card>

  <Card title="Users" icon="user-shield" href="/api-reference/users">
    User account records
  </Card>

  <Card title="Incidents" icon="triangle-exclamation" href="/api-reference/incidents">
    Incidents and SIRS records
  </Card>

  <Card title="Forms" icon="file-lines" href="/api-reference/forms">
    Form submissions and data
  </Card>

  <Card title="Quotes" icon="file-invoice" href="/api-reference/quotes">
    Quote records and line items
  </Card>
</CardGroup>
