> 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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
