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

# ARUKZ ERP API: introduction

> The ARUKZ ERP REST API at https://erp.arukz.com/admin/api/v1: what it covers, how requests and lists work, and which company the data comes from.

The ARUKZ ERP API is a JSON REST API at `https://erp.arukz.com/admin/api/v1`. It reads and writes the same records as the screens: sales orders, purchase orders, stock, products, partners, invoices and bills, projects and reference data. Every call carries an API token, acts as the user who owns it, and sees only that user's company and only what that user's role allows.

## Base URL

```text theme={"theme":{"light":"github-light","dark":"github-dark"}}
https://erp.arukz.com/admin/api/v1
```

The API stays at this address for every company. Your team signs in to the screens at `erp.arukz.com/<company>/admin`, but the API does not take the company from the address: the token decides it. A request returns records of the token user's company, filtered the same way as on screen by their role and record visibility (all of the company's records, their team's, or only their own).

## What the API covers

> [card] Sales
>
> Quotations and sales orders with their lines; confirm, cancel or lock an order; its deliveries and invoices.

> [card] Purchases
>
> Purchase orders, lines, receipts and bills, purchase agreements and vendor price lists.

> [card] Inventory
>
> Warehouses, locations, routes and rules, lots, packages, stock quantities, receipts, deliveries, internal transfers, dropships, scrap and stock moves.

> [card] Products
>
> Products and variants, categories, attributes and their options, packaging and tags.

> [card] Partners
>
> Customers, vendors and contacts in one list, with addresses, bank accounts, titles, industries and tags.

> [card] Accounts
>
> Customer invoices, credit notes, vendor bills and refunds (confirm, pay, reverse, reset to draft), taxes, tax groups, journals, the chart of accounts, payment terms, fiscal positions and incoterms.

> [card] Projects
>
> Projects, tasks, project and task stages, milestones and tags.

> [card] Reference data
>
> Currencies and exchange rates, banks, countries, states, units of measure and their categories.

The endpoint pages in this tab are generated from the API's own descriptions, which [Scribe](https://scribe.knuckles.wtf) extracts from the code. The GST returns, payroll, quality, job work and other ARUKZ modules have screens but no REST endpoints yet. For read-only questions from an AI app, use the [MCP server](https://docs.erp.arukz.com/ai/mcp.md) instead.

## Requests and responses

* Send `Accept: application/json` on every request. Without it, an error can come back as a sign-in redirect or an HTML page instead of a JSON message.
* Send bodies as JSON with `Content-Type: application/json`.
* An update route takes `PUT` or `PATCH` with the same body.
* Records that can be archived are soft-deleted: `DELETE` archives the record, `POST .../{id}/restore` brings it back, and `DELETE .../{id}/force` removes it for good.
* A single record comes back as `{"data": {...}}`, often with a `message`.

## Lists, filters and pages

List endpoints return 15 records a page, with the page links and totals beside the records. The page size is fixed; ask for the next page with `page`.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "data": [ { "id": 1, "name": "S00001" } ],
  "links": { "first": "...?page=1", "last": "...?page=2", "prev": null, "next": "...?page=2" },
  "meta": { "current_page": 1, "last_page": 2, "per_page": 15, "total": 27 }
}
```

Most list endpoints take these query parameters; each endpoint page lists the exact ones it accepts:

| Parameter | Example | What it does |
| - | - | - |
| `page` | `page=2` | The page to return |
| `filter[...]` | `filter[state]=sale` | Only records that match; `filter[id]=1,2,3` takes several IDs |
| `filter[trashed]` | `filter[trashed]=with` | Include archived records (`with`), or return only them (`only`) |
| `sort` | `sort=-created_at` | Sort by one of the fields the endpoint allows; a leading `-` reverses the order |
| `include` | `include=partner,lines.product` | Add related records to each result |

## Modules that are switched off

A new company starts with the core modules (sales, purchases, inventory, invoices, accounting and GST returns), and ARUKZ staff switch on the rest. An endpoint that belongs to a module switched off for your company answers `403` with `This module is switched off for your company.` See [Modules](https://docs.erp.arukz.com/admin/modules.md).

## Next steps

> [card] [Authentication](https://docs.erp.arukz.com/api-reference/authentication.md)
>
> Get a token with an email and password, choose read or read and write, and send it as a bearer token.

> [card] [Errors and limits](https://docs.erp.arukz.com/api-reference/errors-and-limits.md)
>
> Status codes, the error body, and the 120 requests a minute each user may make.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.