> For the complete documentation index, see [llms.txt](https://knowledge.out-smart.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://knowledge.out-smart.com/openapi/outsmart-api.md).

# OutSmart API

Integrate external software with OutSmart using the OpenAPI.

The OutSmart API, also called the WorkorderApp API, connects external software with OutSmart.

Use it to synchronise materials, categories, contacts, projects, hour types, and forms. You can also retrieve work orders from OutSmart.

This API is for developers and technical integration partners.

**Base URL:** `https://app.out-smart.com/openapi/8`

For endpoints, request bodies, required fields, and response examples, see the [OutSmart API reference](https://documenter.getpostman.com/view/3100119/UVRDG5v7).

### Authentication

Send your account token as a bearer token with every request.

The token belongs to an OutSmart customer with a registered external-software license. OutSmart verifies that the requesting software package matches the token.

Generate an account token under **Settings → Software integrations**.

{% hint style="warning" %}
Use HTTPS for every request. OutSmart rejects plain HTTP requests.
{% endhint %}

### How responses work

Every response is a JSON object with these fields:

| Field      | Type             | Description                             |
| ---------- | ---------------- | --------------------------------------- |
| `code`     | number           | Response code for the executed request. |
| `messages` | array of strings | Details about the request result.       |
| `response` | object           | The response payload.                   |

A `code` of `200` indicates success. Other codes identify issues such as missing fields, invalid tokens, or malformed request bodies.

See the [OutSmart API reference](https://documenter.getpostman.com/view/3100119/UVRDG5v7) for all response codes.

```json
{ "code": 1001, "messages": [], "response": null }
```

### Advanced filtering

Most `GET` endpoints support filters through URL parameters.

```
&key=key1&value=value1&operator=eq
```

To combine filters, repeat each parameter:

```
&key[]=key1&value[]=value1&operator[]=eq&key[]=key2&value[]=value2&operator[]=gt
```

| Operator | Meaning                      |
| -------- | ---------------------------- |
| `li`     | Like (`%`)                   |
| `eq`     | Equal (`=`)                  |
| `ne`     | Not equal (`!=`)             |
| `gt`     | Greater than (`>`)           |
| `ge`     | Greater than or equal (`>=`) |
| `lt`     | Less than (`<`)              |
| `le`     | Less than or equal (`<=`)    |

### What you can sync

The API includes endpoints for these resources:

* **Materials** — product and material records.
* **Material translations** — multilingual material names.
* **Categories and material categories** — material classifications.
* **Relations** — external contacts and customers.
* **Projects** — external project records.
* **Hour types** — labour categories and pricing.
* **Forms** — custom forms, including signatures and choice fields.
* **Work orders** — create, update, and retrieve work orders.

Each resource has its own fields and supported operations. See the [OutSmart API reference](https://documenter.getpostman.com/view/3100119/UVRDG5v7) for implementation details.

### Typical work order workflow

Use this flow when your integration processes completed work orders.

{% stepper %}
{% step %}

#### Synchronise dependencies

Synchronise materials, relations, categories, and other required entities first.
{% endstep %}

{% step %}

#### Create or update work orders

Create work orders with `PostWorkorders`.

Update them with `UpdateWorkorder`.
{% endstep %}

{% step %}

#### Retrieve completed work

Use `GetWorkorders` with the status `Compleet`.

Set `update_status=false` to keep the status unchanged.
{% endstep %}

{% step %}

#### Process the work order

Process each work order with status `Compleet` in your system.

Handle processing errors and notify the relevant user.
{% endstep %}

{% step %}

#### Mark successful processing

Call `GetWorkorder` with `update_status=true` after successful processing.

The work order status becomes `Afgehandeld`. It no longer appears in later `GetWorkorders` calls.
{% endstep %}
{% endstepper %}

### Work order statuses

| Status        | Meaning                                                              |
| ------------- | -------------------------------------------------------------------- |
| `Klaargezet`  | Created and ready for device retrieval when an employee is assigned. |
| `Opgehaald`   | Retrieved on a device and ready for employee completion.             |
| `Compleet`    | Completed and sent to the back office for administrative processing. |
| `Afgehandeld` | Administratively processed.                                          |

### Next steps

Open the [OutSmart API reference](https://documenter.getpostman.com/view/3100119/UVRDG5v7) for the complete endpoint catalogue and request examples.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://knowledge.out-smart.com/openapi/outsmart-api.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
