The Avaza API lets your own software read and change the data in your Avaza account: projects, tasks, timesheets, expenses, invoices, estimates, contacts, schedules and more. It's a REST API that sends and receives JSON over HTTPS.
You don't need to write code to connect most tools. Zapier MCP and the Avaza MCP Server connect AI assistants without any programming. The API is for developers who build their own integration.
Where the documentation lives
The API reference is at api.avaza.com. It lists every endpoint with its parameters and response fields, and you can sign in with your Avaza login there to try calls in the browser. The OpenAPI (Swagger) specification is at https://api.avaza.com/swagger/docs/v1.
Send your requests to https://api.avaza.com/, for example GET https://api.avaza.com/api/Project.
Choose how to authenticate
There are two ways in. Both are managed in Settings › Developer Apps & API Access, and only Administrators can open that page. For everyone else the tile is greyed out.
Personal access token | OAuth app | |
|---|---|---|
Best for | Your own scripts and internal tools | Apps that other people connect to their Avaza account |
Acts as | The Administrator who created the token | Each person who signs in and approves the app |
Expires | No. Delete the token to stop it | Access tokens after 24 hours, refresh tokens after 180 days |
Set up | Personal access tokens tab | OAuth tab. See OAuth 2.0 for the Avaza API |
Create a personal access token
Go to Settings › Developer Apps & API Access and open the Personal access tokens tab.
Click Add Personal Access Token, and type a Name/Alias that says what the token is for.
Under Select Access Scopes, tick what the token may do (see the table below), then click Save.

Copy the token from the Token box. Avaza shows it only once.
Send it in the
Authorizationheader of every request.
curl https://api.avaza.com/api/Account \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"You can't change a token's scopes later: create a new token instead. To revoke a token, click the cross at the end of its row and confirm. Anything using it stops working straight away.
Scopes
Scopes decide which parts of the API a token or app can reach.
Scope | Covers |
|---|---|
| Customers (companies) and contacts |
| Account details and settings |
| User profiles |
| Estimates, invoices, payments, credit notes, bills, inventory items, taxes and fixed amounts |
| Projects, project members, sections, tasks, task comments, and task types, statuses and priorities |
| Resource scheduling |
| Timesheets, timers, submission and approval |
| Expenses and expense settings |
| |
| File attachment uploads |
A write scope doesn't include read, so tick both if your integration reads and changes the same data. A call without the scope it needs returns 403 with the title "Required Scopes were not found".
Scopes are only half of it. The API respects the roles of the person behind the token and returns only what they could see in Avaza. For example, the invoice endpoints work only for Administrators and Finance Managers.
Limit what the API can do
Administrators can restrict API access further on the API permissions tab of the same page:
- Account defaults: for each group of endpoints, set Read (GET), Create (POST), Update (PUT) and Delete (DELETE) to Role-based, Admins only or Blocked. Role-based is the default: the person's roles decide.
- User overrides: stricter settings for one person, or Block all API access for this user. Overrides can only restrict.
- Limit bulk deletes: at most 25, 50 or 100 API deletes per user per hour.
- Activity log: every change to these settings, with Export CSV.


These rules apply to personal access tokens, AI assistants connected through the Avaza MCP Server, and third-party apps. The rules never give anyone more than their roles allow. Changes take effect within about a minute.
A blocked request returns 403 with the title "Blocked by account API policy". A person over the delete limit gets 429 until the next full hour.
Limits and errors
- Rate limits: each app or token gets 250 calls a minute and 5,000 a day on each account, and the account has overall limits too. See API rate limits.
- Paging: list endpoints return 20 records a page unless you set
pageSize(up to 1,000). Most acceptUpdatedAfter, so you only fetch what changed. - Errors come back as JSON problem details with a
title,statusanddetail. 401 means the token is missing, wrong or expired. 403 means a missing scope, a role that doesn't allow the call, or an API permission rule. 429 means a rate limit.
Next steps
- Build an app that other people sign in to: OAuth 2.0 for the Avaza API.
- Get told when records change instead of polling: webhook notifications.
- Bill time and expenses automatically: invoicing through the API.