Order API
Create custom endpoints to send or receive data to and from SeeRM.
Overview
SeeRM provides open APIs that allow you to create custom endpoints for three main purposes:
- Incoming Orders - Automatically create new orders (and customers if they don’t exist).
- Incoming Order Updates - Update existing orders and customer info.
- Incoming Tasks - Automatically create a task on a specified board.
- Outgoing Orders - Retrieve order information from SeeRM for external systems.
Only Admins can create, modify, or update APIs.
API management is done in Admin → API.
Incoming Order API
When creating an Incoming Order API, you define:
- Order type and Order partner
- A name for the API
- Optional authentication using a secret value for Bearer authorization
You can also configure whether to:
- Allow order creation if the customer exists - Adds the order to the existing customer
- Block order creation if the customer exists - Returns a 409 error
You can also choose how the customer is validated (independent of the allow/block setting above):
- Email and phonenumber (default)
- Email only
- Phonenumber only
Once created, you receive a specific endpoint for this API.
Fields
- A list of all available fields is provided
- Fields marked with a red
*are mandatory - You can rename fields to match external system requirements
Example
- Mandatory fields:
ordername,name,email,phonenumber,street,zipcode,city - Optional fields:
customer_info
{
"ordername": "order123",
"name": "Anna Svensson",
"email": "[email protected]",
"phonenumber": "46701234567",
"street": "Storgatan 12",
"zipcode": "11122",
"city": "Stockholm",
"customer_info": "Portkod 1234, leverans efter 16:00"
}Incoming Order Update API
When creating an Incoming Update Order API, you define:
- A name for the API
- Scope for order types or order partners (leave empty to allow all)
- Optional authentication using a secret value for Bearer authorization
You can also configure what the endpoint should be allowed to update. Following options are available for updating:
-
Customer info
-
Order Address
-
Customers phonenumber
-
Customers name
-
Customers email
-
Allow order creation if the customer exists - Adds the order to the existing customer
-
Block order creation if the customer exists - Returns a 409 error
Once created, you receive a specific endpoint for this API.
Fields
- A list of all available fields is provided
- You can rename fields to match external system requirements
Example
- All fields are optional for updates; include only the fields you want to change.
{
"ordername": "order123",
"email": "[email protected]",
"phonenumber": "+46709876543",
"street": "Sveavägen 45",
"zipcode": "11359",
"city": "Stockholm"
}Incoming Task API
For an Incoming Task API, you define:
- Board where tasks will be created (tasks are added to the first column)
- API name
- Optional secret value for Bearer authorization
Fields
- Title (mandatory)
- Description (mandatory)
- Field names can be customized
- You receive a specific endpoint for this API
Example
- Mandatory fields:
title,description
{
"title": "Install indoor unit",
"description": "Schedule install for Apt 3B. Access via code 2580."
}Outgoing Order API
The Outgoing Order API allows you to send data out of SeeRM to external systems.
You define:
- API name
- Optional authentication using a secret value for Bearer authorization
- Scope for order types or order partners (leave empty to allow all)
Endpoint Usage
You get a specific endpoint for the API, which can be used in two ways:
- Fetch a specific order
https://example.seerm.se/api/order/1752825914353?ordername=<ordername> - Fetch multiple orders
https://example.seerm.se/api/order/1752825914353
Notes for multiple orders:
Maximum return is 100 orders. If you get exactly 100, there may be more. Adjust filters/scope accordingly.
You can use optional query parameters for filtering and sorting:
fromDate - Start date (recommended format: YYYY-MM-DD, e.g., 2025-12-24)
toDate - End date (same format as fromDate)
sortField - Default: createdAt, optional: bookedAt
sortOrder - Default: asc (ascending), optional: desc (descending)
All parameters can be combined as needed
Example
The JSON payload depends on which include options you enable when creating the API. Fields that are not included are omitted from the response.
- Single order: the response is wrapped in
order: { ... } - Multiple orders: the response is wrapped in
orders: [ ... ]
Include options and what they show:
- general info -
name,status,bookedAt,bookedAtEnd,bookedAtFixed,createdAt,markedAsDone,product,duration,orderPartner,orderType,assignedOn - customer info -
customer - address -
address - notes -
notes - customer notes -
customerInfo - info -
orderInfoData - control -
control - articles -
orderArticle,customArticleItem
Status is a number and maps to these values:
0= New1= Pending2= Contacted3= Waiting4= Booked5= Blocked6= Cancelled7= Completed
For details about statuses, see Order Statuses.
Duration is in minutes: 0 means a fixed time (the bookedAt time), and 60 means it starts at bookedAt and lasts 1 hour.
Below is an example response when all include options are enabled:
{
"order": {
"name": "SE-2026-000321",
"status": 4,
"notes": "Leave package at reception.",
"customerInfo": "Preferred contact time: afternoons.",
"bookedAt": "2026-01-12T08:00:00.000Z",
"bookedAtEnd": "2026-01-12T11:00:00.000Z",
"bookedAtFixed": true,
"createdAt": "2026-01-10T09:12:30.000Z",
"markedAsDone": false,
"product": "Air Conditioner Install",
"duration": 180,
"customer": {
"name": "Anna Svensson",
"email": "[email protected]",
"number": "46701234567",
"createdAt": "2025-11-02T10:15:00.000Z",
"squad": {
"name": "Stockholm North"
}
},
"orderPartner": {
"name": "Partner AB"
},
"orderType": {
"name": "Installation"
},
"address": {
"street": "Storgatan 12",
"zipcode": "11122",
"city": "Stockholm",
"country": "SE"
},
"assignedOn": {
"name": "Erik Johansson, Sara Lind"
},
"orderInfoData": [
{
"value": "Blue",
"orderInfo": {
"index": 1,
"keyword": "color",
"text": "Color",
"formattedText": "Color",
"sensitive": false,
"hidden": false,
"ssn": false,
"product": true
}
}
],
"control": [
{
"controlGroup": "Safety",
"user": "Erik Johansson",
"answers": [
{
"title": "Power off confirmed",
"subtitle": "Main switch",
"completed": true,
"notes": "Verified before work",
"images": []
}
]
}
],
"orderArticle": [
{
"user": "Erik Johansson",
"name": "Mounting Kit",
"articleId": "ART-102",
"description": "Standard mounting kit",
"unit": "pcs",
"salesPrice": 450,
"userCommission": 35,
"installerCommission": 25
}
],
"customArticleItem": [
{
"user": "Sara Lind",
"name": "Extra cabling",
"articleId": "CUST-77",
"description": "10m extra cable",
"unit": "m",
"salesPrice": 120,
"userCommission": 10,
"installerCommission": 8
}
]
}
}Assigned API
The Assigned API allows each user to retrieve order data for one or multiple orders, but only for orders assigned to that user.
This endpoint requires Bearer authorization.
- Users with role USER or ADMIN can get their personal access token (PAT) in Settings, which is used for Bearer authorization
- Users with role INSTALLER need an Admin to create a token for them
Endpoint Usage
You can use the endpoint in two ways:
- Fetch a specific order
https://example.seerm.se/api/order/assigned?ordername=<ordername> - Fetch multiple orders
https://example.seerm.se/api/order/assigned
Notes for multiple orders:
Maximum return is 100 orders. If you get exactly 100, there may be more. Adjust filters/scope accordingly.
You can use optional query parameters for filtering and sorting:
fromDate - Start date (recommended format: YYYY-MM-DD, e.g., 2025-12-24)
toDate - End date (same format as fromDate)
sortField - Default: createdAt, optional: bookedAt
sortOrder - Default: asc (ascending), optional: desc (descending)
All parameters can be combined as needed.
Example
The JSON payload depends on which include options you enable when creating the API. Fields that are not included are omitted from the response.
- Single order: the response is wrapped in
order: { ... } - Multiple orders: the response is wrapped in
orders: [ ... ]
Include options and what they show:
- general info -
name,status,bookedAt,bookedAtEnd,bookedAtFixed,createdAt,markedAsDone,product,duration,orderPartner,orderType,assignedOn - customer info -
customer - address -
address - notes -
notes - customer notes -
customerInfo - info -
orderInfoData - control -
control - articles -
orderArticle,customArticleItem
Status is a number and maps to these values:
0= New1= Pending2= Contacted3= Waiting4= Booked5= Blocked6= Cancelled7= Completed
For details about statuses, see Order Statuses.
Duration is in minutes: 0 means a fixed time (the bookedAt time), and 60 means it starts at bookedAt and lasts 1 hour.
Below is an example response when all include options are enabled:
{
"order": {
"name": "SE-2026-000321",
"status": 4,
"notes": "Leave package at reception.",
"customerInfo": "Preferred contact time: afternoons.",
"bookedAt": "2026-01-12T08:00:00.000Z",
"bookedAtEnd": "2026-01-12T11:00:00.000Z",
"bookedAtFixed": true,
"createdAt": "2026-01-10T09:12:30.000Z",
"markedAsDone": false,
"product": "Air Conditioner Install",
"duration": 180,
"customer": {
"name": "Anna Svensson",
"email": "[email protected]",
"number": "46701234567",
"createdAt": "2025-11-02T10:15:00.000Z",
"squad": {
"name": "Stockholm North"
}
},
"orderPartner": {
"name": "Partner AB"
},
"orderType": {
"name": "Installation"
},
"address": {
"street": "Storgatan 12",
"zipcode": "11122",
"city": "Stockholm",
"country": "SE"
},
"assignedOn": {
"name": "Erik Johansson, Sara Lind"
},
"orderInfoData": [
{
"value": "Blue",
"orderInfo": {
"index": 1,
"keyword": "color",
"text": "Color",
"formattedText": "Color",
"sensitive": false,
"hidden": false,
"ssn": false,
"product": true
}
}
],
"control": [
{
"controlGroup": "Safety",
"user": "Erik Johansson",
"answers": [
{
"title": "Power off confirmed",
"subtitle": "Main switch",
"completed": true,
"notes": "Verified before work",
"images": []
}
]
}
],
"orderArticle": [
{
"user": "Erik Johansson",
"name": "Mounting Kit",
"articleId": "ART-102",
"description": "Standard mounting kit",
"unit": "pcs",
"salesPrice": 450,
"userCommission": 35,
"installerCommission": 25
}
],
"customArticleItem": [
{
"user": "Sara Lind",
"name": "Extra cabling",
"articleId": "CUST-77",
"description": "10m extra cable",
"unit": "m",
"salesPrice": 120,
"userCommission": 10,
"installerCommission": 8
}
]
}
}