Introduction

This documentation aims to provide all the information you need to work with the RouteLogic API.

As you scroll, you'll see code examples for working with the API in different programming languages in the dark area to the right (or as part of the content on mobile). You can switch the language used with the tabs at the top right (or from the nav menu at the top left on mobile).

Authenticating requests

To authenticate requests, include an Authorization header with the value "Bearer {YOUR_API_KEY}".

All authenticated endpoints are marked with a requires authentication badge in the documentation below.

You can retrieve your token by visiting your account click your name and go to synchronisation.

V2

Tasks

Tasks are the deliveries or pickups that need to be done by your drivers.


GET Tasks

GET
http://localhost
/api/v2/tasks
requires authentication

Get paginated collection of tasks from your company

RateLimit (5/min)
If you like to receive tasks quicker, use webhooks read more here

Headers

Authorization
Example:
Bearer {YOUR_API_KEY}

Query Parameters

filters
object
filters.search
string

Search for specific tasks. (customer name, city, street, house number, postal, external identifier and external reference). Must not be greater than 128 characters.

Example:
Amsterdam
filters.from_date
string

Find tasks on this date and later. Combine with to_date to select a specific day or a range. Must be a valid date in the format Y-m-d.

Example:
2026-02-04
filters.to_date
string

Find tasks on this date and earlier. Combine with from_date to select a specific day or a range. Must be a valid date in the format Y-m-d.

Example:
2026-02-04
filters.types
string[]

Filter on specific task types.

Must be one of:
  • delivery
  • pickup
  • recurring
Example:
["delivery"]
filters.statuses
string[]

Filter on tasks with a specific status.

Must be one of:
  • planned
  • not_planned
  • delivered
  • delivery_failed
Example:
["planned"]
filters.deleted
string

Include or only return deleted items in the response. Leave empty to not show deleted items at all.

Must be one of:
  • include
  • only
Example:
include
filters.limit
integer

Amount of items on each page. 24 by default. Must not be greater than 100. Must be at least 1.

Example:
7
filters.page
integer

Must be at least 1.

Example:
80

Response Fields

Example request:
curl --request GET \
    --get "http://localhost/api/v2/tasks?filters[search]=Amsterdam&filters[from_date]=2026-02-04&filters[to_date]=2026-02-04&filters[types][]=delivery&filters[statuses][]=planned&filters[deleted]=include&filters[limit]=7&filters[page]=80" \
    --header "Authorization: Bearer {YOUR_API_KEY}"
Example response:
{
    "data": [
        {
            "uuid": "a0ff7c7a-78b2-43b3-8634-5e1f3eb140e8",
            "type": "delivery",
            "external_identifier": "mOnrWv",
            "external_reference": null,
            "note": null,
            "pending_payment_amount": 0,
            "external_link": null,
            "track_and_trace_link": "http://localhost/tr/YQGAmcXhEJCd",
            "delivery_from_date": null,
            "delivery_date": "2026-02-04",
            "start_time": "08:00:00",
            "end_time": "17:00:00",
            "delivery_duration_minutes": 0,
            "recurring": null,
            "return_required": false,
            "signature_required": false,
            "used_capacity": 0,
            "used_capacity_2": 0,
            "used_capacity_3": 0,
            "updated_at": "2026-02-04T07:54:15.000000Z",
            "created_at": "2026-02-04T07:54:15.000000Z",
            "tags": [],
            "notification_template_uuid": null,
            "return_task_uuid": null,
            "address": {
                "street": "213 Blanda Turnpike",
                "house_number": "365",
                "house_number_extension": null,
                "postal_code": "85957",
                "city": "Devanborough",
                "latitude": 5.4321,
                "longitude": 5.4321,
                "address_line": "213 Blanda Turnpike 365",
                "full_address_line": "213 Blanda Turnpike 365, 85957, Devanborough",
                "country": {
                    "iso_code": "NL",
                    "description": "Nederland"
                }
            },
            "customer": {
                "name": "Isaiah Ortiz",
                "email": "[email protected]",
                "phone_number": null
            },
            "shipment_steps": null,
            "visit_uuids": [
                "a0ff7c7a-9595-41f7-8473-5c947dc925b2"
            ],
            "next_visit": {
                "uuid": "a0ff7c7a-9595-41f7-8473-5c947dc925b2",
                "type": "task",
                "order_index": 0,
                "delivery_time": "09:00:00",
                "delivered_at": "2026-02-04T08:05:00.000000Z",
                "schedule_date": "2026-02-03T23:00:00.000000Z",
                "address": {
                    "street": "213 Blanda Turnpike",
                    "house_number": "365",
                    "house_number_extension": null,
                    "postal_code": "85957",
                    "city": "Devanborough",
                    "latitude": 5.4321,
                    "longitude": 5.4321,
                    "address_line": "213 Blanda Turnpike 365",
                    "full_address_line": "213 Blanda Turnpike 365, 85957, Devanborough",
                    "country": {
                        "iso_code": "NL",
                        "description": "Nederland"
                    }
                },
                "scanned_codes": {
                    "data": [
                        {
                            "type": "task_code",
                            "code_uuid": "a0ff7c7a-8f7a-4c12-9de4-11034617070d",
                            "scanned_count": 1
                        },
                        {
                            "type": "schedule_visit_code",
                            "code_uuid": "a0ff7c7a-a603-4364-b702-2e276939777e",
                            "scanned_count": 1
                        }
                    ]
                },
                "returnable_packaging": {
                    "data": [
                        {
                            "uuid": "a0ff7c7a-abb7-48ad-8df9-1c95bc8471e0",
                            "count": -2,
                            "returnable_packaging_type": {
                                "uuid": "a0ff7c7a-aa7c-47b6-bfce-a01fa83bd640",
                                "type": "pallets"
                            }
                        }
                    ]
                },
                "status": {
                    "status_identifier": "delivered"
                },
                "signature": "YTBmZjdjN2EtOTU5NS00MWY3LTg0NzMtNWM5NDdkYzkyNWIy",
                "files": {
                    "data": [
                        {
                            "type": "image",
                            "key": "NTJWYVBvSHN1WVgyZndQcA"
                        }
                    ]
                }
            }
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "per_page": 24,
        "to": 1,
        "total": 1,
        "next": null,
        "prev": null
    }
}
{
    "message": "Access token invalid"
}
{
    "message": "Access token missing"
}
{
    "message": "Required subscription is not active"
}
{
    "message": "This action is unauthorized."
}
{
    "message": "Resource not found"
}
{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "The field must be a string"
        ]
    }
}
{
    "message": "Too Many Attempts."
}
{
    "message": "Server Error"
}

POST Tasks

POST
http://localhost
/api/v2/tasks
requires authentication

Create a task for your company. If the task already exists it will be updated based on the external identifier.

RateLimit (60/min)

Headers

Authorization
Example:
Bearer {YOUR_API_KEY}
Content-Type
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request POST \
    "http://localhost/api/v2/tasks" \
    --header "Authorization: Bearer {YOUR_API_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"type\": \"delivery\",
    \"external_identifier\": \"cnqquhzt\",
    \"external_reference\": \"qvi\",
    \"note\": \"Please deliver at the side door.\",
    \"pending_payment_amount\": 100,
    \"external_link\": \"https:\\/\\/example.com\\/\",
    \"delivery_from_date\": \"2001-12-03\",
    \"start_time\": \"08:00\",
    \"end_time\": \"17:00\",
    \"delivery_duration_minutes\": 22,
    \"return_required\": true,
    \"return_task_uuid\": \"5c546d7c-130b-3570-81a0-f4df0fe7af1f\",
    \"signature_required\": true,
    \"used_capacity\": 12,
    \"used_capacity_2\": 13,
    \"used_capacity_3\": 23,
    \"notification_template_uuid\": \"65c7b28f-683d-3a6a-b56d-0a8f68ff7b98\",
    \"recurring\": {
        \"period\": \"month\",
        \"interval\": 5,
        \"settings\": \"[\\\"string\\\", \\\"third\\\", \\\"monday\\\"]\",
        \"end_date\": \"2059-07-17\"
    },
    \"address\": {
        \"house_number\": \"12\",
        \"house_number_extension\": \"1A\",
        \"street\": \"LongStreet\",
        \"postal_code\": \"1234AB\",
        \"city\": \"Amsterdam\",
        \"country\": \"NL\",
        \"latitude\": 52.3676,
        \"longitude\": 4.9041
    },
    \"customer\": {
        \"email\": \"[email protected]\",
        \"phone_number\": \"+01 234567890\",
        \"name\": \"Andrew\"
    },
    \"tags\": [
        \"cooled\"
    ],
    \"delivery_date\": \"2026-02-04T08:54:17\",
    \"pickup_address\": {
        \"street\": \"PickupStreet\",
        \"house_number\": \"42\",
        \"postal_code\": \"5678CD\",
        \"city\": \"Rotterdam\",
        \"country\": \"NL\",
        \"latitude\": 52.3676,
        \"longitude\": 4.9041
    },
    \"pickup_start_time\": \"09:00\",
    \"pickup_end_time\": \"11:00\",
    \"pickup_delivery_duration_minutes\": 15
}"
Example response:
{
    "uuid": "a0ff7c7b-bce0-4135-af69-a003c743d2f3",
    "type": "delivery",
    "external_identifier": "RL53v5Ewt26C",
    "external_reference": null,
    "note": null,
    "pending_payment_amount": 0,
    "external_link": null,
    "track_and_trace_link": "http://localhost/tr/B6Srxy9z7ckg",
    "delivery_from_date": null,
    "delivery_date": "2026-02-04",
    "start_time": "08:00:00",
    "end_time": "18:00:00",
    "delivery_duration_minutes": 5,
    "recurring": null,
    "return_required": false,
    "signature_required": false,
    "used_capacity": 0,
    "used_capacity_2": 0,
    "used_capacity_3": 0,
    "updated_at": "2026-02-04T07:54:15.000000Z",
    "created_at": "2026-02-04T07:54:15.000000Z",
    "tags": [],
    "notification_template_uuid": null,
    "return_task_uuid": null,
    "address": {
        "street": "",
        "house_number": "",
        "house_number_extension": "",
        "postal_code": "",
        "city": "",
        "latitude": 5.4321,
        "longitude": 5.4321,
        "address_line": "",
        "full_address_line": "",
        "country": {
            "iso_code": "NL",
            "description": "Nederland"
        }
    },
    "customer": {
        "name": "customer 1",
        "email": null,
        "phone_number": null
    },
    "shipment_steps": null,
    "visit_uuids": [],
    "next_visit": null
}
{
    "message": "Access token invalid"
}
{
    "message": "Access token missing"
}
{
    "message": "Required subscription is not active"
}
{
    "message": "This action is unauthorized."
}
{
    "message": "Resource not found"
}
{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "The field must be a string"
        ]
    }
}
{
    "message": "Too Many Attempts."
}
{
    "message": "Server Error"
}

GET Task

GET
http://localhost
/api/v2/tasks/{task_uuid}
requires authentication

Get a task from your company

RateLimit (60/min)

Headers

Authorization
Example:
Bearer {YOUR_API_KEY}

URL Parameters

task_uuid
string

uuid of the corresponding task

Example:
30dc3b6e-68aa-3783-bdb2-bd21850c6385

Response Fields

Example request:
curl --request GET \
    --get "http://localhost/api/v2/tasks/30dc3b6e-68aa-3783-bdb2-bd21850c6385" \
    --header "Authorization: Bearer {YOUR_API_KEY}"
Example response:
{
    "uuid": "a0ff7c7a-78b2-43b3-8634-5e1f3eb140e8",
    "type": "delivery",
    "external_identifier": "mOnrWv",
    "external_reference": null,
    "note": null,
    "pending_payment_amount": 0,
    "external_link": null,
    "track_and_trace_link": "http://localhost/tr/YQGAmcXhEJCd",
    "delivery_from_date": null,
    "delivery_date": "2026-02-04",
    "start_time": "08:00:00",
    "end_time": "17:00:00",
    "delivery_duration_minutes": 0,
    "recurring": null,
    "return_required": false,
    "signature_required": false,
    "used_capacity": 0,
    "used_capacity_2": 0,
    "used_capacity_3": 0,
    "updated_at": "2026-02-04T07:54:15.000000Z",
    "created_at": "2026-02-04T07:54:15.000000Z",
    "tags": [],
    "notification_template_uuid": null,
    "return_task_uuid": null,
    "address": {
        "street": "213 Blanda Turnpike",
        "house_number": "365",
        "house_number_extension": null,
        "postal_code": "85957",
        "city": "Devanborough",
        "latitude": 5.4321,
        "longitude": 5.4321,
        "address_line": "213 Blanda Turnpike 365",
        "full_address_line": "213 Blanda Turnpike 365, 85957, Devanborough",
        "country": {
            "iso_code": "NL",
            "description": "Nederland"
        }
    },
    "customer": {
        "name": "Isaiah Ortiz",
        "email": "[email protected]",
        "phone_number": null
    },
    "shipment_steps": null,
    "visit_uuids": [
        "a0ff7c7a-9595-41f7-8473-5c947dc925b2"
    ],
    "next_visit": {
        "uuid": "a0ff7c7a-9595-41f7-8473-5c947dc925b2",
        "type": "task",
        "order_index": 0,
        "delivery_time": "09:00:00",
        "delivered_at": "2026-02-04T08:05:00.000000Z",
        "schedule_date": "2026-02-03T23:00:00.000000Z",
        "address": {
            "street": "213 Blanda Turnpike",
            "house_number": "365",
            "house_number_extension": null,
            "postal_code": "85957",
            "city": "Devanborough",
            "latitude": 5.4321,
            "longitude": 5.4321,
            "address_line": "213 Blanda Turnpike 365",
            "full_address_line": "213 Blanda Turnpike 365, 85957, Devanborough",
            "country": {
                "iso_code": "NL",
                "description": "Nederland"
            }
        },
        "scanned_codes": {
            "data": [
                {
                    "type": "task_code",
                    "code_uuid": "a0ff7c7a-8f7a-4c12-9de4-11034617070d",
                    "scanned_count": 1
                },
                {
                    "type": "schedule_visit_code",
                    "code_uuid": "a0ff7c7a-a603-4364-b702-2e276939777e",
                    "scanned_count": 1
                }
            ]
        },
        "returnable_packaging": {
            "data": [
                {
                    "uuid": "a0ff7c7a-abb7-48ad-8df9-1c95bc8471e0",
                    "count": -2,
                    "returnable_packaging_type": {
                        "uuid": "a0ff7c7a-aa7c-47b6-bfce-a01fa83bd640",
                        "type": "pallets"
                    }
                }
            ]
        },
        "status": {
            "status_identifier": "delivered"
        },
        "signature": "YTBmZjdjN2EtOTU5NS00MWY3LTg0NzMtNWM5NDdkYzkyNWIy",
        "files": {
            "data": [
                {
                    "type": "image",
                    "key": "NTJWYVBvSHN1WVgyZndQcA"
                }
            ]
        }
    }
}
{
    "message": "Access token invalid"
}
{
    "message": "Access token missing"
}
{
    "message": "Required subscription is not active"
}
{
    "message": "This action is unauthorized."
}
{
    "message": "Resource not found"
}
{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "The field must be a string"
        ]
    }
}
{
    "message": "Too Many Attempts."
}
{
    "message": "Server Error"
}

PUT/PATCH Task

PUT
PATCH
http://localhost
/api/v2/tasks/{task_uuid}
requires authentication

Update a task from your company

RateLimit (60/min)

Headers

Authorization
Example:
Bearer {YOUR_API_KEY}
Content-Type
Example:
application/json

URL Parameters

task_uuid
string

uuid of the corresponding task

Example:
2e8c9dbb-ea56-3190-b89e-18cd0d7e3fa4

Body Parameters

Response Fields

Example request:
curl --request PUT \
    "http://localhost/api/v2/tasks/2e8c9dbb-ea56-3190-b89e-18cd0d7e3fa4" \
    --header "Authorization: Bearer {YOUR_API_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"type\": \"delivery\",
    \"external_identifier\": \"zacowlssewiv\",
    \"external_reference\": \"ijlggo\",
    \"note\": \"Please deliver at the side door.\",
    \"pending_payment_amount\": 100,
    \"external_link\": \"https:\\/\\/example.com\\/\",
    \"delivery_from_date\": \"2018-11-08\",
    \"start_time\": \"08:00\",
    \"end_time\": \"17:00\",
    \"delivery_duration_minutes\": 5,
    \"return_required\": false,
    \"return_task_uuid\": \"17f9c9d4-53cf-39e8-9037-a3d153cadb5e\",
    \"signature_required\": true,
    \"used_capacity\": 4,
    \"used_capacity_2\": 18,
    \"used_capacity_3\": 21,
    \"notification_template_uuid\": \"189137a4-9777-3bce-88d1-fd1adaf04ec0\",
    \"recurring\": {
        \"period\": \"month\",
        \"interval\": 20,
        \"settings\": \"[\\\"string\\\", \\\"third\\\", \\\"monday\\\"]\",
        \"end_date\": \"2041-12-12\"
    },
    \"address\": {
        \"house_number\": \"12\",
        \"house_number_extension\": \"1A\",
        \"street\": \"LongStreet\",
        \"postal_code\": \"1234AB\",
        \"city\": \"Amsterdam\",
        \"country\": \"NL\",
        \"latitude\": 52.3676,
        \"longitude\": 4.9041
    },
    \"customer\": {
        \"email\": \"[email protected]\",
        \"phone_number\": \"+01 234567890\",
        \"name\": \"Andrew\"
    },
    \"tags\": [
        \"cooled\"
    ],
    \"delivery_date\": \"2026-02-04T08:54:17\",
    \"pickup_address\": {
        \"street\": \"PickupStreet\",
        \"house_number\": \"42\",
        \"postal_code\": \"5678CD\",
        \"city\": \"Rotterdam\",
        \"country\": \"NL\",
        \"latitude\": 52.3676,
        \"longitude\": 4.9041
    },
    \"pickup_start_time\": \"09:00\",
    \"pickup_end_time\": \"11:00\",
    \"pickup_delivery_duration_minutes\": 15
}"
Example response:
{
    "uuid": "a0ff7c7a-78b2-43b3-8634-5e1f3eb140e8",
    "type": "delivery",
    "external_identifier": "RLl0Ke5Asagi",
    "external_reference": null,
    "note": null,
    "pending_payment_amount": 0,
    "external_link": null,
    "track_and_trace_link": "http://localhost/tr/YQGAmcXhEJCd",
    "delivery_from_date": null,
    "delivery_date": "2026-02-04",
    "start_time": "08:00:00",
    "end_time": "17:00:00",
    "delivery_duration_minutes": 0,
    "recurring": null,
    "return_required": false,
    "signature_required": false,
    "used_capacity": 0,
    "used_capacity_2": 0,
    "used_capacity_3": 0,
    "updated_at": "2026-02-04T07:54:16.000000Z",
    "created_at": "2026-02-04T07:54:15.000000Z",
    "tags": [],
    "notification_template_uuid": null,
    "return_task_uuid": null,
    "address": {
        "street": "213 Blanda Turnpike",
        "house_number": "365",
        "house_number_extension": null,
        "postal_code": "85957",
        "city": "Devanborough",
        "latitude": 5.4321,
        "longitude": 5.4321,
        "address_line": "213 Blanda Turnpike 365",
        "full_address_line": "213 Blanda Turnpike 365, 85957, Devanborough",
        "country": {
            "iso_code": "NL",
            "description": "Nederland"
        }
    },
    "customer": {
        "name": "Isaiah Ortiz",
        "email": "[email protected]",
        "phone_number": null
    },
    "shipment_steps": null,
    "visit_uuids": [
        "a0ff7c7a-9595-41f7-8473-5c947dc925b2"
    ],
    "next_visit": {
        "uuid": "a0ff7c7a-9595-41f7-8473-5c947dc925b2",
        "type": "task",
        "order_index": 0,
        "delivery_time": "09:00:00",
        "delivered_at": "2026-02-04T08:05:00.000000Z",
        "schedule_date": "2026-02-03T23:00:00.000000Z",
        "address": {
            "street": "213 Blanda Turnpike",
            "house_number": "365",
            "house_number_extension": null,
            "postal_code": "85957",
            "city": "Devanborough",
            "latitude": 5.4321,
            "longitude": 5.4321,
            "address_line": "213 Blanda Turnpike 365",
            "full_address_line": "213 Blanda Turnpike 365, 85957, Devanborough",
            "country": {
                "iso_code": "NL",
                "description": "Nederland"
            }
        },
        "scanned_codes": {
            "data": [
                {
                    "type": "task_code",
                    "code_uuid": "a0ff7c7a-8f7a-4c12-9de4-11034617070d",
                    "scanned_count": 1
                },
                {
                    "type": "schedule_visit_code",
                    "code_uuid": "a0ff7c7a-a603-4364-b702-2e276939777e",
                    "scanned_count": 1
                }
            ]
        },
        "returnable_packaging": {
            "data": [
                {
                    "uuid": "a0ff7c7a-abb7-48ad-8df9-1c95bc8471e0",
                    "count": -2,
                    "returnable_packaging_type": {
                        "uuid": "a0ff7c7a-aa7c-47b6-bfce-a01fa83bd640",
                        "type": "pallets"
                    }
                }
            ]
        },
        "status": {
            "status_identifier": "delivered"
        },
        "signature": "YTBmZjdjN2EtOTU5NS00MWY3LTg0NzMtNWM5NDdkYzkyNWIy",
        "files": {
            "data": [
                {
                    "type": "image",
                    "key": "NTJWYVBvSHN1WVgyZndQcA"
                }
            ]
        }
    }
}
{
    "message": "Access token invalid"
}
{
    "message": "Access token missing"
}
{
    "message": "Required subscription is not active"
}
{
    "message": "This action is unauthorized."
}
{
    "message": "Resource not found"
}
{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "The field must be a string"
        ]
    }
}
{
    "message": "Too Many Attempts."
}
{
    "message": "Server Error"
}

DELETE Task

DELETE
http://localhost
/api/v2/tasks/{task_uuid}
requires authentication

Delete a task from your company

RateLimit (60/min)

Headers

Authorization
Example:
Bearer {YOUR_API_KEY}

URL Parameters

task_uuid
string

uuid of the corresponding task

Example:
a48503e5-d248-3587-8299-c40291ba984c

Query Parameters

forceRemoveFromSchedules
boolean

Optionally force remove task from all schedules.

Example request:
curl --request DELETE \
    "http://localhost/api/v2/tasks/a48503e5-d248-3587-8299-c40291ba984c?forceRemoveFromSchedules=" \
    --header "Authorization: Bearer {YOUR_API_KEY}"
Example response:
[Empty response]
{
    "message": "Access token invalid"
}
{
    "message": "Access token missing"
}
{
    "message": "Required subscription is not active"
}
{
    "message": "This action is unauthorized."
}
{
    "message": "Resource not found"
}
{
    "message": "Too Many Attempts."
}
{
    "message": "Server Error"
}

Visits

Visits are the delivery or pickup attempts linked to a schedule.


GET Visit

GET
http://localhost
/api/v2/visits/{scheduleVisit_uuid}
requires authentication

Get a visit from your company

RateLimit (60/min)

Headers

Authorization
Example:
Bearer {YOUR_API_KEY}

URL Parameters

scheduleVisit_uuid
string

uuid of the corresponding visit

Example:
d3fa39a7-cb66-37fa-a5f7-808f9176ee64

Response Fields

Example request:
curl --request GET \
    --get "http://localhost/api/v2/visits/d3fa39a7-cb66-37fa-a5f7-808f9176ee64" \
    --header "Authorization: Bearer {YOUR_API_KEY}"
Example response:
{
    "data": {
        "uuid": "a0ff7c7a-9595-41f7-8473-5c947dc925b2",
        "type": "task",
        "order_index": 0,
        "delivery_time": "09:00:00",
        "delivered_at": "2026-02-04T08:05:00.000000Z",
        "task_uuid": "a0ff7c7a-78b2-43b3-8634-5e1f3eb140e8",
        "schedule_date": "2026-02-03T23:00:00.000000Z",
        "address": {
            "street": "213 Blanda Turnpike",
            "house_number": "365",
            "house_number_extension": null,
            "postal_code": "85957",
            "city": "Devanborough",
            "latitude": 5.4321,
            "longitude": 5.4321,
            "address_line": "213 Blanda Turnpike 365",
            "full_address_line": "213 Blanda Turnpike 365, 85957, Devanborough",
            "country": {
                "iso_code": "NL",
                "description": "Nederland"
            }
        },
        "scanned_codes": {
            "data": [
                {
                    "type": "task_code",
                    "code_uuid": "a0ff7c7a-8f7a-4c12-9de4-11034617070d",
                    "scanned_count": 1
                },
                {
                    "type": "schedule_visit_code",
                    "code_uuid": "a0ff7c7a-a603-4364-b702-2e276939777e",
                    "scanned_count": 1
                }
            ]
        },
        "returnable_packaging": {
            "data": [
                {
                    "uuid": "a0ff7c7a-abb7-48ad-8df9-1c95bc8471e0",
                    "count": -2
                }
            ]
        },
        "status": {
            "status_identifier": "delivered"
        },
        "signature": "YTBmZjdjN2EtOTU5NS00MWY3LTg0NzMtNWM5NDdkYzkyNWIy",
        "files": {
            "data": [
                {
                    "type": "image",
                    "key": "NTJWYVBvSHN1WVgyZndQcA"
                }
            ]
        }
    }
}
{
    "message": "Access token invalid"
}
{
    "message": "Access token missing"
}
{
    "message": "Required subscription is not active"
}
{
    "message": "This action is unauthorized."
}
{
    "message": "Resource not found"
}
{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "The field must be a string"
        ]
    }
}
{
    "message": "Too Many Attempts."
}
{
    "message": "Server Error"
}

GET Visit Proof Of Delivery

GET
http://localhost
/api/v2/visits/{scheduleVisit_uuid}/pod
requires authentication

Download the proof of delivery (POD) PDF for a visit.

RateLimit (5/min)

Headers

Authorization
Example:
Bearer {YOUR_API_KEY}

URL Parameters

scheduleVisit_uuid
string

uuid of the corresponding visit

Example:
55d20c1d-24ce-338a-82e5-ff976522d580
Example request:
curl --request GET \
    --get "http://localhost/api/v2/visits/55d20c1d-24ce-338a-82e5-ff976522d580/pod" \
    --header "Authorization: Bearer {YOUR_API_KEY}"
Example response:
[Binary data] -  The PDF file
{
    "message": "Access token invalid"
}
{
    "message": "Access token missing"
}
{
    "message": "Required subscription is not active"
}
{
    "message": "This action is unauthorized."
}
{
    "message": "This action is unauthorized."
}
{
    "message": "POD file not found."
}
{
    "message": "Resource not found"
}
{
    "message": "Visit not yet delivered."
}
{
    "message": "POD is not available for pickup tasks."
}
{
    "message": "Too Many Attempts."
}
{
    "message": "Server Error"
}

Task Products

Products are the items that are being delivered or picked up in a task.


GET Products

GET
http://localhost
/api/v2/tasks/{task_uuid}/products
requires authentication

Get collection of products of a task

RateLimit (60/min)

Headers

Authorization
Example:
Bearer {YOUR_API_KEY}

URL Parameters

task_uuid
string

uuid of the corresponding task

Example:
91bb293a-7170-31a8-b09b-3e70d1e4c855

Response Fields

Example request:
curl --request GET \
    --get "http://localhost/api/v2/tasks/91bb293a-7170-31a8-b09b-3e70d1e4c855/products" \
    --header "Authorization: Bearer {YOUR_API_KEY}"
Example response:
{
    "data": [
        {
            "uuid": "a0ff7c7a-8d96-4ee0-bae2-3de760ccaccf",
            "quantity": "1.00",
            "description": "Test line",
            "unit": "pieces",
            "identifier": "2f7e673aae64ffbe3821016e253b45ed"
        }
    ]
}
{
    "message": "Access token invalid"
}
{
    "message": "Access token missing"
}
{
    "message": "Required subscription is not active"
}
{
    "message": "This action is unauthorized."
}
{
    "message": "Resource not found"
}
{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "The field must be a string"
        ]
    }
}
{
    "message": "Too Many Attempts."
}
{
    "message": "Server Error"
}

POST Products

POST
http://localhost
/api/v2/tasks/{task_uuid}/products
requires authentication

Create a or multiple products of a task

RateLimit (60/min)

Headers

Authorization
Example:
Bearer {YOUR_API_KEY}
Content-Type
Example:
application/json

URL Parameters

task_uuid
string

uuid of the corresponding task

Example:
7483e844-4a21-39ed-8ff5-963844d91e47

Body Parameters

Response Fields

Example request:
curl --request POST \
    "http://localhost/api/v2/tasks/7483e844-4a21-39ed-8ff5-963844d91e47/products" \
    --header "Authorization: Bearer {YOUR_API_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"data\": [
        {
            \"identifier\": \"ayxlvltyzqbswqwchloyibz\",
            \"quantity\": 22,
            \"unit\": \"dolor\",
            \"description\": \"Table\"
        }
    ]
}"
Example response:
{
    "data": [
        {
            "uuid": "a0ff7c7c-788a-41bc-92ab-1e5d34300c8b",
            "quantity": 1,
            "description": "Test line",
            "unit": "pieces",
            "identifier": "2f7e673aae64ffbe3821016e253b45ed"
        },
        {
            "uuid": "a0ff7c7c-795a-4081-b26f-543e64565bcd",
            "quantity": 5,
            "description": "Test line 2",
            "unit": "weight",
            "identifier": "838c87eb890a63944ecc8e83ffb0e4bb"
        }
    ]
}
{
    "message": "Access token invalid"
}
{
    "message": "Access token missing"
}
{
    "message": "Required subscription is not active"
}
{
    "message": "This action is unauthorized."
}
{
    "message": "Resource not found"
}
{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "The field must be a string"
        ]
    }
}
{
    "message": "Too Many Attempts."
}
{
    "message": "Server Error"
}

GET Product

GET
http://localhost
/api/v2/tasks/{task_uuid}/products/{product_uuid}
requires authentication

Get a product of a task

RateLimit (60/min)

Headers

Authorization
Example:
Bearer {YOUR_API_KEY}

URL Parameters

task_uuid
string

uuid of the corresponding task

Example:
e74d0006-15c8-3550-8b54-f6e05b688586
product_uuid
string

uuid of the corresponding product

Example:
08b943d1-af8b-3b15-8a13-f1d5e6e3c640

Response Fields

Example request:
curl --request GET \
    --get "http://localhost/api/v2/tasks/e74d0006-15c8-3550-8b54-f6e05b688586/products/08b943d1-af8b-3b15-8a13-f1d5e6e3c640" \
    --header "Authorization: Bearer {YOUR_API_KEY}"
Example response:
{
    "data": {
        "uuid": "a0ff7c7a-8d96-4ee0-bae2-3de760ccaccf",
        "quantity": "1.00",
        "description": "Test line",
        "unit": "pieces",
        "identifier": "2f7e673aae64ffbe3821016e253b45ed"
    }
}
{
    "message": "Access token invalid"
}
{
    "message": "Access token missing"
}
{
    "message": "Required subscription is not active"
}
{
    "message": "This action is unauthorized."
}
{
    "message": "Resource not found"
}
{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "The field must be a string"
        ]
    }
}
{
    "message": "Too Many Attempts."
}
{
    "message": "Server Error"
}

PUT/PATCH Product

PUT
PATCH
http://localhost
/api/v2/tasks/{task_uuid}/products/{product_uuid}
requires authentication

Update a product of a task

RateLimit (60/min)

Headers

Authorization
Example:
Bearer {YOUR_API_KEY}
Content-Type
Example:
application/json

URL Parameters

task_uuid
string

uuid of the corresponding task

Example:
63d0b500-511a-3402-8e87-ab60813a8069
product_uuid
string

uuid of the corresponding product

Example:
ff417bfe-9ff1-3c9b-b915-9c7140ff9cdb

Body Parameters

Response Fields

Example request:
curl --request PUT \
    "http://localhost/api/v2/tasks/63d0b500-511a-3402-8e87-ab60813a8069/products/ff417bfe-9ff1-3c9b-b915-9c7140ff9cdb" \
    --header "Authorization: Bearer {YOUR_API_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"identifier\": \"ycrmfvttkbmcvbvayowcmls\",
    \"quantity\": 6,
    \"unit\": \"totam\",
    \"description\": \"Table\"
}"
Example response:
{
    "data": {
        "uuid": "a0ff7c7a-8d96-4ee0-bae2-3de760ccaccf",
        "quantity": "1.00",
        "description": "Test line",
        "unit": "pieces",
        "identifier": "2f7e673aae64ffbe3821016e253b45ed"
    }
}
{
    "message": "Access token invalid"
}
{
    "message": "Access token missing"
}
{
    "message": "Required subscription is not active"
}
{
    "message": "This action is unauthorized."
}
{
    "message": "Resource not found"
}
{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "The field must be a string"
        ]
    }
}
{
    "message": "Too Many Attempts."
}
{
    "message": "Server Error"
}

DELETE Product

DELETE
http://localhost
/api/v2/tasks/{task_uuid}/products/{product_uuid}
requires authentication

Delete a product of a task

RateLimit (60/min)

Headers

Authorization
Example:
Bearer {YOUR_API_KEY}

URL Parameters

task_uuid
string

uuid of the corresponding task

Example:
39dc7ebf-3951-327b-9545-b99680115ff6
product_uuid
string

uuid of the corresponding product

Example:
ed5b4001-4cce-3e50-9a4a-b8beb8d552b3
Example request:
curl --request DELETE \
    "http://localhost/api/v2/tasks/39dc7ebf-3951-327b-9545-b99680115ff6/products/ed5b4001-4cce-3e50-9a4a-b8beb8d552b3" \
    --header "Authorization: Bearer {YOUR_API_KEY}"
Example response:
[Empty response]
{
    "message": "Access token invalid"
}
{
    "message": "Access token missing"
}
{
    "message": "Required subscription is not active"
}
{
    "message": "This action is unauthorized."
}
{
    "message": "Resource not found"
}
{
    "message": "Too Many Attempts."
}
{
    "message": "Server Error"
}

DELETE Products

DELETE
http://localhost
/api/v2/tasks/{task_uuid}/products
requires authentication

RateLimit (60/min)

Headers

Authorization
Example:
Bearer {YOUR_API_KEY}

URL Parameters

task_uuid
string

uuid of the corresponding task

Example:
e8603d47-290c-3d84-8d8f-7cc211c332c4
Example request:
curl --request DELETE \
    "http://localhost/api/v2/tasks/e8603d47-290c-3d84-8d8f-7cc211c332c4/products" \
    --header "Authorization: Bearer {YOUR_API_KEY}"
Example response:
[Empty response]
{
    "message": "Access token invalid"
}
{
    "message": "Access token missing"
}
{
    "message": "Required subscription is not active"
}
{
    "message": "This action is unauthorized."
}
{
    "message": "Resource not found"
}
{
    "message": "Too Many Attempts."
}
{
    "message": "Server Error"
}

Task Codes

Task Codes are the bar/qr codes that are being scanned in a task.


GET Task Codes

GET
http://localhost
/api/v2/tasks/{task_uuid}/codes
requires authentication

Get collection of codes of a task

RateLimit (60/min)

Headers

Authorization
Example:
Bearer {YOUR_API_KEY}

URL Parameters

task_uuid
string

uuid of the corresponding task

Example:
a2ebf312-d2a5-34e5-b47e-23f05d47aa3a

Response Fields

Example request:
curl --request GET \
    --get "http://localhost/api/v2/tasks/a2ebf312-d2a5-34e5-b47e-23f05d47aa3a/codes" \
    --header "Authorization: Bearer {YOUR_API_KEY}"
Example response:
{
    "data": [
        {
            "uuid": "a0ff7c7a-8f7a-4c12-9de4-11034617070d",
            "amount": 1,
            "code": "SJEkejY65fFmAIDu",
            "description": "lamp"
        }
    ]
}
{
    "message": "Access token invalid"
}
{
    "message": "Access token missing"
}
{
    "message": "Required subscription is not active"
}
{
    "message": "This action is unauthorized."
}
{
    "message": "Resource not found"
}
{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "The field must be a string"
        ]
    }
}
{
    "message": "Too Many Attempts."
}
{
    "message": "Server Error"
}

POST Task Codes

POST
http://localhost
/api/v2/tasks/{task_uuid}/codes
requires authentication

Create a or multiple codes of a task

RateLimit (60/min)

Headers

Authorization
Example:
Bearer {YOUR_API_KEY}
Content-Type
Example:
application/json

URL Parameters

task_uuid
string

uuid of the corresponding task

Example:
791ea8cf-5310-30a7-b3e2-c2baaadd53d0

Body Parameters

Response Fields

Example request:
curl --request POST \
    "http://localhost/api/v2/tasks/791ea8cf-5310-30a7-b3e2-c2baaadd53d0/codes" \
    --header "Authorization: Bearer {YOUR_API_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"data\": [
        {
            \"amount\": 18,
            \"code\": \"yfujiejn\",
            \"description\": \"Table\"
        }
    ]
}"
Example response:
{
    "data": [
        {
            "uuid": "a0ff7c7c-a420-4db9-941d-1e09258b96d1",
            "amount": 1,
            "code": "1234567890",
            "description": "Box"
        },
        {
            "uuid": "a0ff7c7c-a4d3-45d0-ba14-1b4cf78f882f",
            "amount": 2,
            "code": "ABCDEFGHIJ",
            "description": "Table"
        }
    ]
}
{
    "message": "Access token invalid"
}
{
    "message": "Access token missing"
}
{
    "message": "Required subscription is not active"
}
{
    "message": "This action is unauthorized."
}
{
    "message": "Resource not found"
}
{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "The field must be a string"
        ]
    }
}
{
    "message": "Too Many Attempts."
}
{
    "message": "Server Error"
}

GET Task Code

GET
http://localhost
/api/v2/tasks/{task_uuid}/codes/{taskCode_uuid}
requires authentication

Get a code of a task

RateLimit (60/min)

Headers

Authorization
Example:
Bearer {YOUR_API_KEY}

URL Parameters

task_uuid
string

uuid of the corresponding task

Example:
de894a09-9ab0-39cd-b5fb-32340048e59d
taskCode_uuid
string

uuid of the corresponding task code

Example:
7c439a68-4a40-3f40-8ffc-ab7e8fbc3b44

Response Fields

Example request:
curl --request GET \
    --get "http://localhost/api/v2/tasks/de894a09-9ab0-39cd-b5fb-32340048e59d/codes/7c439a68-4a40-3f40-8ffc-ab7e8fbc3b44" \
    --header "Authorization: Bearer {YOUR_API_KEY}"
Example response:
{
    "data": {
        "uuid": "a0ff7c7a-8f7a-4c12-9de4-11034617070d",
        "amount": 1,
        "code": "SJEkejY65fFmAIDu",
        "description": "lamp"
    }
}
{
    "message": "Access token invalid"
}
{
    "message": "Access token missing"
}
{
    "message": "Required subscription is not active"
}
{
    "message": "This action is unauthorized."
}
{
    "message": "Resource not found"
}
{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "The field must be a string"
        ]
    }
}
{
    "message": "Too Many Attempts."
}
{
    "message": "Server Error"
}

PUT/PATCH Task Code

PUT
PATCH
http://localhost
/api/v2/tasks/{task_uuid}/codes/{taskCode_uuid}
requires authentication

Update a code of a task

RateLimit (60/min)

Headers

Authorization
Example:
Bearer {YOUR_API_KEY}
Content-Type
Example:
application/json

URL Parameters

task_uuid
string

uuid of the corresponding task

Example:
06ae2d5e-affe-3fda-af2a-c0117c55b124
taskCode_uuid
string

uuid of the corresponding task code

Example:
5207493c-4b02-3e48-96a8-9d741e87bceb

Body Parameters

Response Fields

Example request:
curl --request PUT \
    "http://localhost/api/v2/tasks/06ae2d5e-affe-3fda-af2a-c0117c55b124/codes/5207493c-4b02-3e48-96a8-9d741e87bceb" \
    --header "Authorization: Bearer {YOUR_API_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"amount\": 19,
    \"code\": \"h\",
    \"description\": \"Table\"
}"
Example response:
{
    "data": {
        "uuid": "a0ff7c7a-8f7a-4c12-9de4-11034617070d",
        "amount": 1,
        "code": "SJEkejY65fFmAIDu",
        "description": "lamp"
    }
}
{
    "message": "Access token invalid"
}
{
    "message": "Access token missing"
}
{
    "message": "Required subscription is not active"
}
{
    "message": "This action is unauthorized."
}
{
    "message": "Resource not found"
}
{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "The field must be a string"
        ]
    }
}
{
    "message": "Too Many Attempts."
}
{
    "message": "Server Error"
}

DELETE Task Code

DELETE
http://localhost
/api/v2/tasks/{task_uuid}/codes/{taskCode_uuid}
requires authentication

Delete a code of a task

RateLimit (60/min)

Headers

Authorization
Example:
Bearer {YOUR_API_KEY}

URL Parameters

task_uuid
string

uuid of the corresponding task

Example:
b82d7bf0-be4b-343f-b6be-da2253c30488
taskCode_uuid
string

uuid of the corresponding task code

Example:
e022d7b4-6855-3071-a638-81f06f49d714
Example request:
curl --request DELETE \
    "http://localhost/api/v2/tasks/b82d7bf0-be4b-343f-b6be-da2253c30488/codes/e022d7b4-6855-3071-a638-81f06f49d714" \
    --header "Authorization: Bearer {YOUR_API_KEY}"
Example response:
[Empty response]
{
    "message": "Access token invalid"
}
{
    "message": "Access token missing"
}
{
    "message": "Required subscription is not active"
}
{
    "message": "This action is unauthorized."
}
{
    "message": "Resource not found"
}
{
    "message": "Too Many Attempts."
}
{
    "message": "Server Error"
}

Visit Codes

Visit Codes are the bar/qr codes that are being scanned in a visit. A visit is a delivery or pickup attempt for a specific task. Usually, the visit codes are only set when using recurring tasks.


GET Visit Codes

GET
http://localhost
/api/v2/visits/{scheduleVisit_uuid}/codes
requires authentication

Get collection of codes of a visit

RateLimit (60/min)

Headers

Authorization
Example:
Bearer {YOUR_API_KEY}

URL Parameters

scheduleVisit_uuid
string

uuid of the corresponding scheduled visit

Example:
0b0b025c-eea2-3bc8-b6ce-9509df7b3245

Response Fields

Example request:
curl --request GET \
    --get "http://localhost/api/v2/visits/0b0b025c-eea2-3bc8-b6ce-9509df7b3245/codes" \
    --header "Authorization: Bearer {YOUR_API_KEY}"
Example response:
{
    "data": [
        {
            "uuid": "a0ff7c7a-a603-4364-b702-2e276939777e",
            "amount": 1,
            "code": "48PajDG4Kg9DZct7",
            "description": "box"
        }
    ]
}
{
    "message": "Access token invalid"
}
{
    "message": "Access token missing"
}
{
    "message": "Required subscription is not active"
}
{
    "message": "This action is unauthorized."
}
{
    "message": "Resource not found"
}
{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "The field must be a string"
        ]
    }
}
{
    "message": "Too Many Attempts."
}
{
    "message": "Server Error"
}

POST Visit Codes

POST
http://localhost
/api/v2/visits/{scheduleVisit_uuid}/codes
requires authentication

Create a or multiple codes of a visit

RateLimit (60/min)

Headers

Authorization
Example:
Bearer {YOUR_API_KEY}
Content-Type
Example:
application/json

URL Parameters

scheduleVisit_uuid
string

uuid of the corresponding scheduled visit

Example:
040d6d68-fd58-3874-b6fb-6d92140742d2

Body Parameters

Response Fields

Example request:
curl --request POST \
    "http://localhost/api/v2/visits/040d6d68-fd58-3874-b6fb-6d92140742d2/codes" \
    --header "Authorization: Bearer {YOUR_API_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"data\": [
        {
            \"amount\": 4,
            \"code\": \"hvrsaapzjkccvnshw\",
            \"description\": \"Table\"
        }
    ]
}"
Example response:
{
    "data": [
        {
            "uuid": "a0ff7c7d-8639-4433-aa7c-62e8e7f05395",
            "amount": 1,
            "code": "1234567890",
            "description": "Box"
        },
        {
            "uuid": "a0ff7c7d-86f4-47e4-9fe5-a047451bedcc",
            "amount": 2,
            "code": "ABCDEFGHIJ",
            "description": "Table"
        }
    ]
}
{
    "message": "Access token invalid"
}
{
    "message": "Access token missing"
}
{
    "message": "Required subscription is not active"
}
{
    "message": "This action is unauthorized."
}
{
    "message": "Resource not found"
}
{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "The field must be a string"
        ]
    }
}
{
    "message": "Too Many Attempts."
}
{
    "message": "Server Error"
}

GET Visit Code

GET
http://localhost
/api/v2/visits/{scheduleVisit_uuid}/codes/{scheduleVisitCode_uuid}
requires authentication

Get a code of a visit

RateLimit (60/min)

Headers

Authorization
Example:
Bearer {YOUR_API_KEY}

URL Parameters

scheduleVisit_uuid
string

uuid of the corresponding scheduled visit

Example:
c25895eb-27e2-3ad7-88e0-0bb657ccdaf5
scheduleVisitCode_uuid
string

uuid of the corresponding scheduled visit code

Example:
0adc58e8-dbec-3791-8020-d10670bef8d8

Response Fields

Example request:
curl --request GET \
    --get "http://localhost/api/v2/visits/c25895eb-27e2-3ad7-88e0-0bb657ccdaf5/codes/0adc58e8-dbec-3791-8020-d10670bef8d8" \
    --header "Authorization: Bearer {YOUR_API_KEY}"
Example response:
{
    "data": {
        "uuid": "a0ff7c7a-a603-4364-b702-2e276939777e",
        "amount": 1,
        "code": "48PajDG4Kg9DZct7",
        "description": "box"
    }
}
{
    "message": "Access token invalid"
}
{
    "message": "Access token missing"
}
{
    "message": "Required subscription is not active"
}
{
    "message": "This action is unauthorized."
}
{
    "message": "Resource not found"
}
{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "The field must be a string"
        ]
    }
}
{
    "message": "Too Many Attempts."
}
{
    "message": "Server Error"
}

PUT/PATCH Visit Code

PUT
PATCH
http://localhost
/api/v2/visits/{scheduleVisit_uuid}/codes/{scheduleVisitCode_uuid}
requires authentication

Update a code of a visit

RateLimit (60/min)

Headers

Authorization
Example:
Bearer {YOUR_API_KEY}
Content-Type
Example:
application/json

URL Parameters

scheduleVisit_uuid
string

uuid of the corresponding scheduled visit

Example:
649b3457-0ebf-37aa-a82b-a8504a2aa351
scheduleVisitCode_uuid
string

uuid of the corresponding scheduled visit code

Example:
4dba9ab6-5418-32d4-b844-dec7001dc9a0

Body Parameters

Response Fields

Example request:
curl --request PUT \
    "http://localhost/api/v2/visits/649b3457-0ebf-37aa-a82b-a8504a2aa351/codes/4dba9ab6-5418-32d4-b844-dec7001dc9a0" \
    --header "Authorization: Bearer {YOUR_API_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"amount\": 7,
    \"code\": \"hlvsk\",
    \"description\": \"Table\"
}"
Example response:
{
    "data": {
        "uuid": "a0ff7c7a-a603-4364-b702-2e276939777e",
        "amount": 1,
        "code": "48PajDG4Kg9DZct7",
        "description": "box"
    }
}
{
    "message": "Access token invalid"
}
{
    "message": "Access token missing"
}
{
    "message": "Required subscription is not active"
}
{
    "message": "This action is unauthorized."
}
{
    "message": "Resource not found"
}
{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "The field must be a string"
        ]
    }
}
{
    "message": "Too Many Attempts."
}
{
    "message": "Server Error"
}

DELETE Visit Code

DELETE
http://localhost
/api/v2/visits/{scheduleVisit_uuid}/codes/{scheduleVisitCode_uuid}
requires authentication

Delete a code of a visit

RateLimit (60/min)

Headers

Authorization
Example:
Bearer {YOUR_API_KEY}

URL Parameters

scheduleVisit_uuid
string

uuid of the corresponding scheduled visit

Example:
721af053-d1b3-3edc-bccc-720f9a7d53a6
scheduleVisitCode_uuid
string

uuid of the corresponding scheduled visit code

Example:
0157bb3f-99dd-33b1-8c11-f1fcd9156e5d
Example request:
curl --request DELETE \
    "http://localhost/api/v2/visits/721af053-d1b3-3edc-bccc-720f9a7d53a6/codes/0157bb3f-99dd-33b1-8c11-f1fcd9156e5d" \
    --header "Authorization: Bearer {YOUR_API_KEY}"
Example response:
[Empty response]
{
    "message": "Access token invalid"
}
{
    "message": "Access token missing"
}
{
    "message": "Required subscription is not active"
}
{
    "message": "This action is unauthorized."
}
{
    "message": "Resource not found"
}
{
    "message": "Too Many Attempts."
}
{
    "message": "Server Error"
}

Task Returnable Packaging

Task Returnable Packaging are the default packaging items beeing expected to be delivered and picked up.


GET Task Returnable Packaging

GET
http://localhost
/api/v2/tasks/{task_uuid}/returnablePackaging
requires authentication

Get collection of returnable packaging of a task

RateLimit (60/min)

Headers

Authorization
Example:
Bearer {YOUR_API_KEY}

URL Parameters

task_uuid
string

uuid of the corresponding task

Example:
3cc74710-db87-3931-99f1-d52a620e20d8

Response Fields

Example request:
curl --request GET \
    --get "http://localhost/api/v2/tasks/3cc74710-db87-3931-99f1-d52a620e20d8/returnablePackaging" \
    --header "Authorization: Bearer {YOUR_API_KEY}"
Example response:
{
    "data": [
        {
            "uuid": "a0ff7c7a-922b-42af-a077-86eb1948a122",
            "count": 1,
            "returnable_packaging_type": {
                "uuid": "a0ff7c7a-90de-4253-919f-84b40b54e021",
                "type": "container"
            }
        }
    ]
}
{
    "message": "Access token invalid"
}
{
    "message": "Access token missing"
}
{
    "message": "Required subscription is not active"
}
{
    "message": "This action is unauthorized."
}
{
    "message": "Resource not found"
}
{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "The field must be a string"
        ]
    }
}
{
    "message": "Too Many Attempts."
}
{
    "message": "Server Error"
}

POST Task Returnable Packaging

POST
http://localhost
/api/v2/tasks/{task_uuid}/returnablePackaging
requires authentication

Create a or multiple returnable packaging of a task

RateLimit (60/min)

Headers

Authorization
Example:
Bearer {YOUR_API_KEY}
Content-Type
Example:
application/json

URL Parameters

task_uuid
string

uuid of the corresponding task

Example:
aa54b772-dd3e-335c-a730-e23202992c98

Body Parameters

Response Fields

Example request:
curl --request POST \
    "http://localhost/api/v2/tasks/aa54b772-dd3e-335c-a730-e23202992c98/returnablePackaging" \
    --header "Authorization: Bearer {YOUR_API_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"data\": [
        {
            \"count\": 21,
            \"returnable_packaging_type_uuid\": \"88d3ec62-eb4f-314d-b4b2-f2120034a03f\"
        }
    ]
}"
Example response:
{
    "data": [
        {
            "uuid": "a0ff7c7c-ce8a-44e6-bc96-98b4bcd1933d",
            "count": 1,
            "returnable_packaging_type": {
                "uuid": "a0ff7c7a-90de-4253-919f-84b40b54e021",
                "type": "container"
            }
        },
        {
            "uuid": "a0ff7c7c-cff0-4c9c-b8cc-e6f59bdb1d89",
            "count": -2,
            "returnable_packaging_type": {
                "uuid": "a0ff7c7a-90de-4253-919f-84b40b54e021",
                "type": "container"
            }
        }
    ]
}
{
    "message": "Access token invalid"
}
{
    "message": "Access token missing"
}
{
    "message": "Required subscription is not active"
}
{
    "message": "This action is unauthorized."
}
{
    "message": "Resource not found"
}
{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "The field must be a string"
        ]
    }
}
{
    "message": "Too Many Attempts."
}
{
    "message": "Server Error"
}

GET Task Returnable Packaging

GET
http://localhost
/api/v2/tasks/{task_uuid}/returnablePackaging/{taskReturnablePackaging_uuid}
requires authentication

Get a returnable packaging of a task

RateLimit (60/min)

Headers

Authorization
Example:
Bearer {YOUR_API_KEY}

URL Parameters

task_uuid
string

uuid of the corresponding task

Example:
b9517f04-ec1a-38a3-b9ac-eeb8b8c71398
taskReturnablePackaging_uuid
string

uuid of the corresponding task returnable packaging

Example:
97fa66b3-4bc3-3efa-b18a-5033a1001562

Response Fields

Example request:
curl --request GET \
    --get "http://localhost/api/v2/tasks/b9517f04-ec1a-38a3-b9ac-eeb8b8c71398/returnablePackaging/97fa66b3-4bc3-3efa-b18a-5033a1001562" \
    --header "Authorization: Bearer {YOUR_API_KEY}"
Example response:
{
    "data": {
        "uuid": "a0ff7c7a-922b-42af-a077-86eb1948a122",
        "count": 1,
        "returnable_packaging_type": {
            "uuid": "a0ff7c7a-90de-4253-919f-84b40b54e021",
            "type": "container"
        }
    }
}
{
    "message": "Access token invalid"
}
{
    "message": "Access token missing"
}
{
    "message": "Required subscription is not active"
}
{
    "message": "This action is unauthorized."
}
{
    "message": "Resource not found"
}
{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "The field must be a string"
        ]
    }
}
{
    "message": "Too Many Attempts."
}
{
    "message": "Server Error"
}

PUT/PATCH Task Returnable Packaging

PUT
PATCH
http://localhost
/api/v2/tasks/{task_uuid}/returnablePackaging/{taskReturnablePackaging_uuid}
requires authentication

Update a returnable packaging of a task

RateLimit (60/min)

Headers

Authorization
Example:
Bearer {YOUR_API_KEY}
Content-Type
Example:
application/json

URL Parameters

task_uuid
string

uuid of the corresponding task

Example:
67ddf7df-9bf4-3216-8f88-179521a8832e
taskReturnablePackaging_uuid
string

uuid of the corresponding task returnable packaging

Example:
2d7227b3-2f0e-3dc6-9ccb-730e37ee10b3

Body Parameters

Response Fields

Example request:
curl --request PUT \
    "http://localhost/api/v2/tasks/67ddf7df-9bf4-3216-8f88-179521a8832e/returnablePackaging/2d7227b3-2f0e-3dc6-9ccb-730e37ee10b3" \
    --header "Authorization: Bearer {YOUR_API_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"count\": 1
}"
Example response:
{
    "data": {
        "uuid": "a0ff7c7a-922b-42af-a077-86eb1948a122",
        "count": 1,
        "returnable_packaging_type": {
            "uuid": "a0ff7c7a-90de-4253-919f-84b40b54e021",
            "type": "container"
        }
    }
}
{
    "message": "Access token invalid"
}
{
    "message": "Access token missing"
}
{
    "message": "Required subscription is not active"
}
{
    "message": "This action is unauthorized."
}
{
    "message": "Resource not found"
}
{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "The field must be a string"
        ]
    }
}
{
    "message": "Too Many Attempts."
}
{
    "message": "Server Error"
}

DELETE Task Returnable Packaging

DELETE
http://localhost
/api/v2/tasks/{task_uuid}/returnablePackaging/{taskReturnablePackaging_uuid}
requires authentication

Delete a returnable packaging of a task

RateLimit (60/min)

Headers

Authorization
Example:
Bearer {YOUR_API_KEY}

URL Parameters

task_uuid
string

uuid of the corresponding task

Example:
4bd24e46-ebf1-318d-8197-dc45d7035534
taskReturnablePackaging_uuid
string

uuid of the corresponding task returnable packaging

Example:
ae325f6c-53d2-30c2-ab8c-d216593eebef
Example request:
curl --request DELETE \
    "http://localhost/api/v2/tasks/4bd24e46-ebf1-318d-8197-dc45d7035534/returnablePackaging/ae325f6c-53d2-30c2-ab8c-d216593eebef" \
    --header "Authorization: Bearer {YOUR_API_KEY}"
Example response:
[Empty response]
{
    "message": "Access token invalid"
}
{
    "message": "Access token missing"
}
{
    "message": "Required subscription is not active"
}
{
    "message": "This action is unauthorized."
}
{
    "message": "Resource not found"
}
{
    "message": "Too Many Attempts."
}
{
    "message": "Server Error"
}

Webhook Groups

Webhook groups are the configured webhooks between Routelogic and your applications.


GET Webhook Groups

GET
http://localhost
/api/v2/webhookGroups
requires authentication

Get paginated collection of webhook groups from your company

RateLimit (60/min)

Headers

Authorization
Example:
Bearer {YOUR_API_KEY}

Query Parameters

filters
object
filters.limit
integer

Amount of items on each page. 24 by default. Must not be greater than 100. Must be at least 1.

Example:
76
filters.page
integer

Page number. 1 by default. Must be at least 1.

Example:
4

Response Fields

Example request:
curl --request GET \
    --get "http://localhost/api/v2/webhookGroups?filters[limit]=76&filters[page]=4" \
    --header "Authorization: Bearer {YOUR_API_KEY}"
Example response:
{
    "data": [
        {
            "uuid": "a0ff7c7a-9ee5-497e-bbe4-e418e17f32da",
            "name": "Webhook group 1",
            "description": "Task webhook group 1",
            "webhook_url": "https://test.com/webhook/",
            "events": []
        },
        {
            "uuid": "a0ff7c7a-d09f-4fc6-8ed8-8aa4be0c79c2",
            "name": "Webhook group 2",
            "description": "task webhook group 2",
            "webhook_url": "https://test.com/webhook/",
            "events": [
                "task_created"
            ]
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "per_page": 24,
        "to": 2,
        "total": 2,
        "next": null,
        "prev": null
    }
}
{
    "message": "Access token invalid"
}
{
    "message": "Access token missing"
}
{
    "message": "Required subscription is not active"
}
{
    "message": "This action is unauthorized."
}
{
    "message": "Resource not found"
}
{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "The field must be a string"
        ]
    }
}
{
    "message": "Too Many Attempts."
}
{
    "message": "Server Error"
}

POST Webhook Group

POST
http://localhost
/api/v2/webhookGroups
requires authentication

Create a webhook group for your company.

RateLimit (60/min)

Headers

Authorization
Example:
Bearer {YOUR_API_KEY}
Content-Type
Example:
application/json

Body Parameters

Response Fields

Example request:
curl --request POST \
    "http://localhost/api/v2/webhookGroups" \
    --header "Authorization: Bearer {YOUR_API_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"name\": \"webhook\",
    \"description\": \"Webhook for listening to when a task is created\",
    \"webhook_url\": \"https:\\/\\/example.com\\/webhook\",
    \"webhook_secret\": \"token\",
    \"events\": [
        \"task_deleted\"
    ]
}"
Example response:
{
    "data": {
        "uuid": "a0ff7c7d-08a6-4d40-a5d5-c33f3df84d6f",
        "name": "Demo webhook group",
        "description": "send to my api",
        "webhook_url": "https://routelogic.io",
        "events": [
            "task_created",
            "task_updated"
        ]
    }
}
{
    "message": "Access token invalid"
}
{
    "message": "Access token missing"
}
{
    "message": "Required subscription is not active"
}
{
    "message": "This action is unauthorized."
}
{
    "message": "Resource not found"
}
{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "The field must be a string"
        ]
    }
}
{
    "message": "Too Many Attempts."
}
{
    "message": "Server Error"
}

GET Webhook Group

GET
http://localhost
/api/v2/webhookGroups/{webhookGroup_uuid}
requires authentication

Get a webhook group from your company

RateLimit (60/min)

Headers

Authorization
Example:
Bearer {YOUR_API_KEY}

URL Parameters

webhookGroup_uuid
string

uuid of the corresponding webhook group

Example:
3792186d-18f6-3295-b911-ad2f5f9597fc

Response Fields

Example request:
curl --request GET \
    --get "http://localhost/api/v2/webhookGroups/3792186d-18f6-3295-b911-ad2f5f9597fc" \
    --header "Authorization: Bearer {YOUR_API_KEY}"
Example response:
{
    "data": {
        "uuid": "a0ff7c7a-d09f-4fc6-8ed8-8aa4be0c79c2",
        "name": "Webhook group 2",
        "description": "task webhook group 2",
        "webhook_url": "https://test.com/webhook/",
        "events": [
            "task_created"
        ]
    }
}
{
    "message": "Access token invalid"
}
{
    "message": "Access token missing"
}
{
    "message": "Required subscription is not active"
}
{
    "message": "This action is unauthorized."
}
{
    "message": "Resource not found"
}
{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "The field must be a string"
        ]
    }
}
{
    "message": "Too Many Attempts."
}
{
    "message": "Server Error"
}

PUT/PATCH Webhook Group

PUT
PATCH
http://localhost
/api/v2/webhookGroups/{webhookGroup_uuid}
requires authentication

Update a webhook group from your company

RateLimit (60/min)

Headers

Authorization
Example:
Bearer {YOUR_API_KEY}
Content-Type
Example:
application/json

URL Parameters

webhookGroup_uuid
string

uuid of the corresponding webhook group

Example:
47571af6-7e67-3f50-a58c-421f16620193

Body Parameters

Response Fields

Example request:
curl --request PUT \
    "http://localhost/api/v2/webhookGroups/47571af6-7e67-3f50-a58c-421f16620193" \
    --header "Authorization: Bearer {YOUR_API_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"name\": \"webhook\",
    \"description\": \"Webhook for listening to when a task is created\",
    \"webhook_url\": \"https:\\/\\/example.com\\/webhook\",
    \"webhook_secret\": \"token\",
    \"events\": [
        \"schedule_calculated\"
    ]
}"
Example response:
{
    "data": {
        "uuid": "a0ff7c7a-d09f-4fc6-8ed8-8aa4be0c79c2",
        "name": "Webhook group 2",
        "description": "task webhook group 2",
        "webhook_url": "https://test.com/webhook/",
        "events": [
            "task_created"
        ]
    }
}
{
    "message": "Access token invalid"
}
{
    "message": "Access token missing"
}
{
    "message": "Required subscription is not active"
}
{
    "message": "This action is unauthorized."
}
{
    "message": "Resource not found"
}
{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "The field must be a string"
        ]
    }
}
{
    "message": "Too Many Attempts."
}
{
    "message": "Server Error"
}

DELETE Webhook Group

DELETE
http://localhost
/api/v2/webhookGroups/{webhookGroup_uuid}
requires authentication

Delete a webhook group from your company

RateLimit (60/min)

Headers

Authorization
Example:
Bearer {YOUR_API_KEY}

URL Parameters

webhookGroup_uuid
string

uuid of the corresponding webhook group

Example:
fa3dbd8d-0296-3607-9c64-9118a33008bc
Example request:
curl --request DELETE \
    "http://localhost/api/v2/webhookGroups/fa3dbd8d-0296-3607-9c64-9118a33008bc" \
    --header "Authorization: Bearer {YOUR_API_KEY}"
Example response:
[Empty response]
{
    "message": "Access token invalid"
}
{
    "message": "Access token missing"
}
{
    "message": "Required subscription is not active"
}
{
    "message": "This action is unauthorized."
}
{
    "message": "Resource not found"
}
{
    "message": "Too Many Attempts."
}
{
    "message": "Server Error"
}

Webhook Events

Webhooks are the events that are being sent to your system.


GET Webhooks

GET
http://localhost
/api/v2/webhookEvents
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_API_KEY}

Query Parameters

filters
object
filters.status_failed
boolean

Filter by failed status (>= 400). False by default.

Example:
1
filters.limit
integer

Amount of items on each page. 24 by default. Must not be greater than 100. Must be at least 1.

Example:
22
filters.page
integer

Page number. 1 by default. Must be at least 1.

Example:
55

Response Fields

Example request:
curl --request GET \
    --get "http://localhost/api/v2/webhookEvents?filters[status_failed]=1&filters[limit]=22&filters[page]=55" \
    --header "Authorization: Bearer {YOUR_API_KEY}"
Example response:
{
    "data": [
        {
            "uuid": "a9909d15-7d5e-4af0-9750-f17f6465d74a",
            "webhook_url": "https://test.com/webhook/",
            "event_data": {
                "data": {
                    "note": null,
                    "tags": [],
                    "type": "delivery",
                    "uuid": "a0ff7c7a-78b2-43b3-8634-5e1f3eb140e8",
                    "end_time": "17:00:00",
                    "recurring": null,
                    "created_at": "2026-02-04T07:54:15.000000Z",
                    "start_time": "08:00:00",
                    "updated_at": "2026-02-04T07:54:15.000000Z",
                    "delivery_date": "2026-02-04",
                    "external_link": null,
                    "used_capacity": 0,
                    "shipment_steps": null,
                    "return_required": null,
                    "used_capacity_2": 0,
                    "used_capacity_3": 0,
                    "return_task_uuid": null,
                    "delivery_from_date": null,
                    "external_reference": null,
                    "signature_required": null,
                    "external_identifier": "mOnrWv",
                    "track_and_trace_link": "http://localhost/tr/YQGAmcXhEJCd",
                    "pending_payment_amount": 0,
                    "delivery_duration_minutes": 0,
                    "notification_template_uuid": null
                },
                "type": "task_created",
                "timestamp": "2026-02-04T08:54:15+01:00"
            },
            "response_status": 200,
            "created_at": "2026-02-04T07:54:15.000000Z",
            "updated_at": "2026-02-04T07:54:15.000000Z"
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "per_page": 24,
        "to": 1,
        "total": 1,
        "next": null,
        "prev": null
    }
}
{
    "message": "Access token invalid"
}
{
    "message": "Access token missing"
}
{
    "message": "Required subscription is not active"
}
{
    "message": "This action is unauthorized."
}
{
    "message": "Resource not found"
}
{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "The field must be a string"
        ]
    }
}
{
    "message": "Too Many Attempts."
}
{
    "message": "Server Error"
}

GET Webhook

GET
http://localhost
/api/v2/webhookEvents/{webhookEvent_uuid}
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_API_KEY}

URL Parameters

webhookEvent_uuid
string

uuid of the corresponding webhook event

Example:
b7cc3f52-7985-350c-a8bf-f811201a37a7

Response Fields

Example request:
curl --request GET \
    --get "http://localhost/api/v2/webhookEvents/b7cc3f52-7985-350c-a8bf-f811201a37a7" \
    --header "Authorization: Bearer {YOUR_API_KEY}"
Example response:
{
    "data": {
        "uuid": "a9909d15-7d5e-4af0-9750-f17f6465d74a",
        "webhook_url": "https://test.com/webhook/",
        "event_data": {
            "data": {
                "note": null,
                "tags": [],
                "type": "delivery",
                "uuid": "a0ff7c7a-78b2-43b3-8634-5e1f3eb140e8",
                "end_time": "17:00:00",
                "recurring": null,
                "created_at": "2026-02-04T07:54:15.000000Z",
                "start_time": "08:00:00",
                "updated_at": "2026-02-04T07:54:15.000000Z",
                "delivery_date": "2026-02-04",
                "external_link": null,
                "used_capacity": 0,
                "shipment_steps": null,
                "return_required": null,
                "used_capacity_2": 0,
                "used_capacity_3": 0,
                "return_task_uuid": null,
                "delivery_from_date": null,
                "external_reference": null,
                "signature_required": null,
                "external_identifier": "mOnrWv",
                "track_and_trace_link": "http://localhost/tr/YQGAmcXhEJCd",
                "pending_payment_amount": 0,
                "delivery_duration_minutes": 0,
                "notification_template_uuid": null
            },
            "type": "task_created",
            "timestamp": "2026-02-04T08:54:15+01:00"
        },
        "response_status": 200,
        "created_at": "2026-02-04T07:54:15.000000Z",
        "updated_at": "2026-02-04T07:54:15.000000Z"
    }
}
{
    "message": "Access token invalid"
}
{
    "message": "Access token missing"
}
{
    "message": "Required subscription is not active"
}
{
    "message": "This action is unauthorized."
}
{
    "message": "Resource not found"
}
{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "The field must be a string"
        ]
    }
}
{
    "message": "Too Many Attempts."
}
{
    "message": "Server Error"
}

POST Resend Webhook

POST
http://localhost
/api/v2/webhookEvents/{webhookEvent_uuid}/resend
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_API_KEY}

URL Parameters

webhookEvent_uuid
string

uuid of the corresponding webhook event

Example:
20c41783-f1db-3bba-8fd6-a82bda2b27aa
Example request:
curl --request POST \
    "http://localhost/api/v2/webhookEvents/20c41783-f1db-3bba-8fd6-a82bda2b27aa/resend" \
    --header "Authorization: Bearer {YOUR_API_KEY}"
Example response:
[Empty response]
{
    "message": "Access token invalid"
}
{
    "message": "Access token missing"
}
{
    "message": "Required subscription is not active"
}
{
    "message": "This action is unauthorized."
}
{
    "message": "Resource not found"
}
{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "The field must be a string"
        ]
    }
}
{
    "message": "Too Many Attempts."
}
{
    "message": "Server Error"
}

POST Resend All Failed Webhooks

POST
http://localhost
/api/v2/webhookEvents/resend-all-failed
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_API_KEY}
Example request:
curl --request POST \
    "http://localhost/api/v2/webhookEvents/resend-all-failed" \
    --header "Authorization: Bearer {YOUR_API_KEY}"
Example response:
{
    "data": [],
    "meta": {
        "count": 0
    }
}
{
    "message": "Access token invalid"
}
{
    "message": "Access token missing"
}
{
    "message": "Required subscription is not active"
}
{
    "message": "This action is unauthorized."
}
{
    "message": "Resource not found"
}
{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "The field must be a string"
        ]
    }
}
{
    "message": "Too Many Attempts."
}
{
    "message": "Server Error"
}

Templates

Templates are the predefined messages that are being sent to your customers.


GET Templates

GET
http://localhost
/api/v2/templates
requires authentication

Get collection of templates

RateLimit (16/min)

Headers

Authorization
Example:
Bearer {YOUR_API_KEY}

Response Fields

Example request:
curl --request GET \
    --get "http://localhost/api/v2/templates" \
    --header "Authorization: Bearer {YOUR_API_KEY}"
Example response:
{
    "data": [
        {
            "uuid": "a0ff7c7a-425d-471b-9055-eaaac2a6c6da",
            "identifier": "dwDR9Jm43bQ4udPC",
            "title": "Standaard e-mail en SMS notificatie voor bezorgen",
            "default": true,
            "default_pickup": false
        },
        {
            "uuid": "a0ff7c7a-4549-4cd6-b9d0-5c66abd7fd32",
            "identifier": "lTvLN4hoAFNKH7fI",
            "title": "Standaard e-mail en SMS notificatie voor ophalen",
            "default": false,
            "default_pickup": true
        }
    ]
}
{
    "message": "Access token invalid"
}
{
    "message": "Access token missing"
}
{
    "message": "Required subscription is not active"
}
{
    "message": "This action is unauthorized."
}
{
    "message": "Resource not found"
}
{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "The field must be a string"
        ]
    }
}
{
    "message": "Too Many Attempts."
}
{
    "message": "Server Error"
}

Returnable Packaging Types

Returnable packaging types are the types of packaging used in your company wich can be returned after delivery.


GET Returnable packaging types

GET
http://localhost
/api/v2/returnablePackagingTypes
requires authentication

Get collection of returnable packaging types

RateLimit (16/min)

Headers

Authorization
Example:
Bearer {YOUR_API_KEY}

Response Fields

Example request:
curl --request GET \
    --get "http://localhost/api/v2/returnablePackagingTypes" \
    --header "Authorization: Bearer {YOUR_API_KEY}"
Example response:
{
    "data": [
        {
            "uuid": "a0ff7c7a-5fc8-4f24-ba35-cdfd46ffffd0",
            "type": "Pallet"
        },
        {
            "uuid": "a0ff7c7a-6074-41cf-b531-76ee57fe1872",
            "type": "Container"
        },
        {
            "uuid": "a0ff7c7a-6105-47f8-be81-53ace732a9e4",
            "type": "Crate"
        },
        {
            "uuid": "a0ff7c7a-90de-4253-919f-84b40b54e021",
            "type": "container"
        },
        {
            "uuid": "a0ff7c7a-aa7c-47b6-bfce-a01fa83bd640",
            "type": "pallets"
        }
    ]
}
{
    "message": "Access token invalid"
}
{
    "message": "Access token missing"
}
{
    "message": "Required subscription is not active"
}
{
    "message": "This action is unauthorized."
}
{
    "message": "Too Many Attempts."
}
{
    "message": "Server Error"
}

Schedules

Schedules are the planned routes for your vehicles.


GET Schedules

GET
http://localhost
/api/v2/schedules
requires authentication

Get paginated collection of schedules including vehicles and visits from your company

RateLimit (5/min)
If you like to receive schedule information quicker use webhooks read more here

Headers

Authorization
Example:
Bearer {YOUR_API_KEY}

Query Parameters

filters
object
filters.from_date
string

Find tasks on this date and later. Combine with to_date to select a specific day or a range. Must be a valid date in the format Y-m-d.

Example:
2026-02-04
filters.to_date
string

Find tasks on this date and earlier. Combine with from_date to select a specific day or a range. Must be a valid date in the format Y-m-d.

Example:
2026-02-04
filters.limit
integer

Amount of items on each page. 24 by default. Must not be greater than 24. Must be at least 1.

Example:
87
filters.page
integer

Must be at least 1.

Example:
79

Response Fields

Example request:
curl --request GET \
    --get "http://localhost/api/v2/schedules?filters[from_date]=2026-02-04&filters[to_date]=2026-02-04&filters[limit]=87&filters[page]=79" \
    --header "Authorization: Bearer {YOUR_API_KEY}"
Example response:
{
    "data": [
        {
            "uuid": "1ec24a7e-b681-4cf0-859a-3fd4dc3db716",
            "date": "2026-02-04",
            "description": "Example Schedule 1",
            "total_travel_time": 0,
            "total_distance": 0,
            "notifications_send": false,
            "schedule_vehicles": {
                "data": [
                    {
                        "uuid": "a0ff7c7a-945a-48c0-8e4b-dbe8b93335e4",
                        "start_time": "08:00:00",
                        "end_time": "10:00:00",
                        "started_at": "2026-02-04 08:03:00",
                        "finished_at": "2026-02-04 10:02:00",
                        "total_travel_time": 0,
                        "total_distance": 1850,
                        "vehicle": {
                            "uuid": "a0ff7c7a-6a65-4260-8cc3-8588d2830cd5",
                            "licence_plate": "uiwlCWM4U",
                            "description": "Van 1"
                        },
                        "user": {
                            "uuid": "a0ff7c7a-7305-485e-8648-a08448bbc0a2",
                            "name": "Mr. Tobin Ziemann MD",
                            "public_name": "Mr. Tobin Ziemann MD"
                        },
                        "visits": {
                            "data": [
                                {
                                    "uuid": "a0ff7c7a-9595-41f7-8473-5c947dc925b2",
                                    "type": "task",
                                    "order_index": 0,
                                    "delivery_time": "09:00:00",
                                    "eta_start": "08:25",
                                    "eta_end": "09:25",
                                    "delivered_at": "2026-02-04T08:05:00.000000Z",
                                    "task": {
                                        "uuid": "a0ff7c7a-78b2-43b3-8634-5e1f3eb140e8",
                                        "type": "delivery",
                                        "external_identifier": "RLl0Ke5Asagi",
                                        "external_reference": null,
                                        "note": null,
                                        "pending_payment_amount": 0,
                                        "external_link": null,
                                        "track_and_trace_link": "http://localhost/tr/YQGAmcXhEJCd",
                                        "delivery_from_date": null,
                                        "delivery_date": "2026-02-04",
                                        "start_time": "08:00:00",
                                        "end_time": "17:00:00",
                                        "delivery_duration_minutes": 0,
                                        "recurring": null,
                                        "return_required": false,
                                        "signature_required": false,
                                        "used_capacity": 0,
                                        "used_capacity_2": 0,
                                        "used_capacity_3": 0,
                                        "updated_at": "2026-02-04T07:54:16.000000Z",
                                        "created_at": "2026-02-04T07:54:15.000000Z",
                                        "tags": [],
                                        "notification_template_uuid": null,
                                        "return_task_uuid": null,
                                        "address": {
                                            "street": "213 Blanda Turnpike",
                                            "house_number": "365",
                                            "house_number_extension": null,
                                            "postal_code": "85957",
                                            "city": "Devanborough",
                                            "latitude": 5.4321,
                                            "longitude": 5.4321,
                                            "address_line": "213 Blanda Turnpike 365",
                                            "full_address_line": "213 Blanda Turnpike 365, 85957, Devanborough",
                                            "country": {
                                                "iso_code": "NL",
                                                "description": "Nederland"
                                            }
                                        },
                                        "customer": {
                                            "name": "Isaiah Ortiz",
                                            "email": "[email protected]",
                                            "phone_number": null
                                        },
                                        "shipment_steps": null
                                    },
                                    "schedule_date": "2026-02-03T23:00:00.000000Z",
                                    "address": {
                                        "street": "213 Blanda Turnpike",
                                        "house_number": "365",
                                        "house_number_extension": null,
                                        "postal_code": "85957",
                                        "city": "Devanborough",
                                        "latitude": 5.4321,
                                        "longitude": 5.4321,
                                        "address_line": "213 Blanda Turnpike 365",
                                        "full_address_line": "213 Blanda Turnpike 365, 85957, Devanborough",
                                        "country": {
                                            "iso_code": "NL",
                                            "description": "Nederland"
                                        }
                                    },
                                    "scanned_codes": {
                                        "data": [
                                            {
                                                "type": "task_code",
                                                "code_uuid": "a0ff7c7a-8f7a-4c12-9de4-11034617070d",
                                                "scanned_count": 1
                                            },
                                            {
                                                "type": "schedule_visit_code",
                                                "code_uuid": "a0ff7c7a-a603-4364-b702-2e276939777e",
                                                "scanned_count": 1
                                            }
                                        ]
                                    },
                                    "returnable_packaging": {
                                        "data": [
                                            {
                                                "uuid": "a0ff7c7a-abb7-48ad-8df9-1c95bc8471e0",
                                                "count": -2,
                                                "returnable_packaging_type": {
                                                    "uuid": "a0ff7c7a-aa7c-47b6-bfce-a01fa83bd640",
                                                    "type": "pallets"
                                                }
                                            }
                                        ]
                                    },
                                    "status": {
                                        "status_identifier": "delivered"
                                    },
                                    "signature": "YTBmZjdjN2EtOTU5NS00MWY3LTg0NzMtNWM5NDdkYzkyNWIy",
                                    "files": {
                                        "data": [
                                            {
                                                "type": "image",
                                                "key": "NTJWYVBvSHN1WVgyZndQcA"
                                            }
                                        ]
                                    }
                                }
                            ]
                        }
                    }
                ]
            }
        }
    ],
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "per_page": 12,
        "to": 1,
        "total": 1,
        "next": null,
        "prev": null
    }
}
{
    "message": "Access token invalid"
}
{
    "message": "Access token missing"
}
{
    "message": "Required subscription is not active"
}
{
    "message": "This action is unauthorized."
}
{
    "message": "Resource not found"
}
{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "The field must be a string"
        ]
    }
}
{
    "message": "Too Many Attempts."
}
{
    "message": "Server Error"
}

GET Schedule

GET
http://localhost
/api/v2/schedules/{schedule_uuid}
requires authentication

Get a single schedule by its uuid

RateLimit (60/min)

Headers

Authorization
Example:
Bearer {YOUR_API_KEY}

URL Parameters

schedule_uuid
string
required

string The UUID of the schedule

Example:
ac149947-1560-3bc3-85d1-29f6b85d3c2c

Response Fields

Example request:
curl --request GET \
    --get "http://localhost/api/v2/schedules/ac149947-1560-3bc3-85d1-29f6b85d3c2c" \
    --header "Authorization: Bearer {YOUR_API_KEY}"
Example response:
{
    "data": {
        "uuid": "1ec24a7e-b681-4cf0-859a-3fd4dc3db716",
        "date": "2026-02-04",
        "description": "Example Schedule 1",
        "total_travel_time": 0,
        "total_distance": 0,
        "notifications_send": false,
        "schedule_vehicles": {
            "data": [
                {
                    "uuid": "a0ff7c7a-945a-48c0-8e4b-dbe8b93335e4",
                    "start_time": "08:00:00",
                    "end_time": "10:00:00",
                    "started_at": "2026-02-04 08:03:00",
                    "finished_at": "2026-02-04 10:02:00",
                    "total_travel_time": 0,
                    "total_distance": 1850,
                    "vehicle": {
                        "uuid": "a0ff7c7a-6a65-4260-8cc3-8588d2830cd5",
                        "licence_plate": "uiwlCWM4U",
                        "description": "Van 1"
                    },
                    "user": {
                        "uuid": "a0ff7c7a-7305-485e-8648-a08448bbc0a2",
                        "name": "Mr. Tobin Ziemann MD",
                        "public_name": "Mr. Tobin Ziemann MD"
                    },
                    "visits": {
                        "data": [
                            {
                                "uuid": "a0ff7c7a-9595-41f7-8473-5c947dc925b2",
                                "type": "task",
                                "order_index": 0,
                                "delivery_time": "09:00:00",
                                "eta_start": "08:25",
                                "eta_end": "09:25",
                                "delivered_at": "2026-02-04T08:05:00.000000Z",
                                "task": {
                                    "uuid": "a0ff7c7a-78b2-43b3-8634-5e1f3eb140e8",
                                    "type": "delivery",
                                    "external_identifier": "RLl0Ke5Asagi",
                                    "external_reference": null,
                                    "note": null,
                                    "pending_payment_amount": 0,
                                    "external_link": null,
                                    "track_and_trace_link": "http://localhost/tr/YQGAmcXhEJCd",
                                    "delivery_from_date": null,
                                    "delivery_date": "2026-02-04",
                                    "start_time": "08:00:00",
                                    "end_time": "17:00:00",
                                    "delivery_duration_minutes": 0,
                                    "recurring": null,
                                    "return_required": false,
                                    "signature_required": false,
                                    "used_capacity": 0,
                                    "used_capacity_2": 0,
                                    "used_capacity_3": 0,
                                    "updated_at": "2026-02-04T07:54:16.000000Z",
                                    "created_at": "2026-02-04T07:54:15.000000Z",
                                    "tags": [],
                                    "notification_template_uuid": null,
                                    "return_task_uuid": null,
                                    "address": {
                                        "street": "213 Blanda Turnpike",
                                        "house_number": "365",
                                        "house_number_extension": null,
                                        "postal_code": "85957",
                                        "city": "Devanborough",
                                        "latitude": 5.4321,
                                        "longitude": 5.4321,
                                        "address_line": "213 Blanda Turnpike 365",
                                        "full_address_line": "213 Blanda Turnpike 365, 85957, Devanborough",
                                        "country": {
                                            "iso_code": "NL",
                                            "description": "Nederland"
                                        }
                                    },
                                    "customer": {
                                        "name": "Isaiah Ortiz",
                                        "email": "[email protected]",
                                        "phone_number": null
                                    },
                                    "shipment_steps": null
                                },
                                "schedule_date": "2026-02-03T23:00:00.000000Z",
                                "address": {
                                    "street": "213 Blanda Turnpike",
                                    "house_number": "365",
                                    "house_number_extension": null,
                                    "postal_code": "85957",
                                    "city": "Devanborough",
                                    "latitude": 5.4321,
                                    "longitude": 5.4321,
                                    "address_line": "213 Blanda Turnpike 365",
                                    "full_address_line": "213 Blanda Turnpike 365, 85957, Devanborough",
                                    "country": {
                                        "iso_code": "NL",
                                        "description": "Nederland"
                                    }
                                },
                                "scanned_codes": {
                                    "data": [
                                        {
                                            "type": "task_code",
                                            "code_uuid": "a0ff7c7a-8f7a-4c12-9de4-11034617070d",
                                            "scanned_count": 1
                                        },
                                        {
                                            "type": "schedule_visit_code",
                                            "code_uuid": "a0ff7c7a-a603-4364-b702-2e276939777e",
                                            "scanned_count": 1
                                        }
                                    ]
                                },
                                "returnable_packaging": {
                                    "data": [
                                        {
                                            "uuid": "a0ff7c7a-abb7-48ad-8df9-1c95bc8471e0",
                                            "count": -2,
                                            "returnable_packaging_type": {
                                                "uuid": "a0ff7c7a-aa7c-47b6-bfce-a01fa83bd640",
                                                "type": "pallets"
                                            }
                                        }
                                    ]
                                },
                                "status": {
                                    "status_identifier": "delivered"
                                },
                                "signature": "YTBmZjdjN2EtOTU5NS00MWY3LTg0NzMtNWM5NDdkYzkyNWIy",
                                "files": {
                                    "data": [
                                        {
                                            "type": "image",
                                            "key": "NTJWYVBvSHN1WVgyZndQcA"
                                        }
                                    ]
                                }
                            }
                        ]
                    }
                }
            ]
        }
    }
}
{
    "message": "Access token invalid"
}
{
    "message": "Access token missing"
}
{
    "message": "Required subscription is not active"
}
{
    "message": "This action is unauthorized."
}
{
    "message": "Resource not found"
}
{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "The field must be a string"
        ]
    }
}
{
    "message": "Too Many Attempts."
}
{
    "message": "Server Error"
}

POST Send schedule notifications

POST
http://localhost
/api/v2/schedules/{schedule_uuid}/send-notifications
requires authentication

Send the notifications to all the customers within a schedule.

RateLimit (60/min)

Headers

Authorization
Example:
Bearer {YOUR_API_KEY}
Content-Type
Example:
application/json

URL Parameters

schedule_uuid
string
required
Example:
1ec24a7e-b681-4cf0-859a-3fd4dc3db716

Body Parameters

Example request:
curl --request POST \
    "http://localhost/api/v2/schedules/1ec24a7e-b681-4cf0-859a-3fd4dc3db716/send-notifications" \
    --header "Authorization: Bearer {YOUR_API_KEY}" \
    --header "Content-Type: application/json" \
    --data "{
    \"types\": [
        \"sms\"
    ]
}"
Example response:
[Empty response]
{
    "message": "Insufficient sms credits."
}
{
    "message": "Access token invalid"
}
{
    "message": "Access token missing"
}
{
    "message": "Required subscription is not active"
}
{
    "message": "This action is unauthorized."
}
{
    "message": "Resource not found"
}
{
    "message": "The given data was invalid.",
    "errors": {
        "field": [
            "The field must be a string"
        ]
    }
}
{
    "message": "Too Many Attempts."
}
{
    "message": "Server Error"
}

Beta Appointments


POST api/v2/beta/appointments/availability

POST
http://localhost
/api/v2/beta/appointments/availability

Headers

Content-Type
Example:
application/json

Body Parameters

Example request:
curl --request POST \
    "http://localhost/api/v2/beta/appointments/availability" \
    --header "Content-Type: application/json" \
    --data "{
    \"data\": {
        \"latitude\": 2683.163795709,
        \"longitude\": 82296.808037,
        \"tags\": [
            \"ysijtywtuztcufqibrpt\"
        ],
        \"delivery_duration_minutes\": 5,
        \"start_date\": \"2079-08-02\",
        \"end_date\": \"2042-05-16\",
        \"used_capacity\": 18,
        \"used_capacity_2\": 3,
        \"used_capacity_3\": 24,
        \"type\": \"delivery\"
    }
}"
Example response:
Headers
                                                            cache-control
                                                            : no-cache, private
                                                                                                                    content-type
                                                            : application/json
                                                                                                                    x-ratelimit-limit
                                                            : 1000
                                                                                                                    x-ratelimit-remaining
                                                            : 963
                                                                                                                    vary
                                                            : Origin
                                                         
{
    "message": "Access token missing",
    "exception": "Symfony\\Component\\HttpKernel\\Exception\\HttpException",
    "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Foundation/Application.php",
    "line": 1440,
    "trace": [
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php",
            "line": 67,
            "function": "abort",
            "class": "Illuminate\\Foundation\\Application",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/app/Http/Middleware/CompanyAuth.php",
            "line": 21,
            "function": "abort"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "App\\Http\\Middleware\\CompanyAuth",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/app/Http/Middleware/ForcedApiLocale.php",
            "line": 14,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "App\\Http\\Middleware\\ForcedApiLocale",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/inspector-apm/inspector-laravel/src/Middleware/WebRequestMonitoring.php",
            "line": 44,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "Inspector\\Laravel\\Middleware\\WebRequestMonitoring",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/app/Http/Middleware/CompanyPermission.php",
            "line": 23,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "App\\Http\\Middleware\\CompanyPermission",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/app/Http/Middleware/ForcedLocale.php",
            "line": 29,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "App\\Http\\Middleware\\ForcedLocale",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/app/Http/Middleware/RouteLogicEngineToggle.php",
            "line": 20,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "App\\Http\\Middleware\\RouteLogicEngineToggle",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php",
            "line": 50,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "Illuminate\\Routing\\Middleware\\SubstituteBindings",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php",
            "line": 166,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php",
            "line": 129,
            "function": "handleRequest",
            "class": "Illuminate\\Routing\\Middleware\\ThrottleRequests",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php",
            "line": 90,
            "function": "handleRequestUsingNamedLimiter",
            "class": "Illuminate\\Routing\\Middleware\\ThrottleRequests",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "Illuminate\\Routing\\Middleware\\ThrottleRequests",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/sanctum/src/Http/Middleware/EnsureFrontendRequestsAreStateful.php",
            "line": 26,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 180,
            "function": "{closure:Laravel\\Sanctum\\Http\\Middleware\\EnsureFrontendRequestsAreStateful::handle():25}",
            "class": "Laravel\\Sanctum\\Http\\Middleware\\EnsureFrontendRequestsAreStateful",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 137,
            "function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/sanctum/src/Http/Middleware/EnsureFrontendRequestsAreStateful.php",
            "line": 25,
            "function": "then",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "Laravel\\Sanctum\\Http\\Middleware\\EnsureFrontendRequestsAreStateful",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/app/Http/Middleware/ForcedJsonResponse.php",
            "line": 14,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "App\\Http\\Middleware\\ForcedJsonResponse",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 137,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 821,
            "function": "then",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 800,
            "function": "runRouteWithinStack",
            "class": "Illuminate\\Routing\\Router",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 764,
            "function": "runRoute",
            "class": "Illuminate\\Routing\\Router",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 753,
            "function": "dispatchToRoute",
            "class": "Illuminate\\Routing\\Router",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
            "line": 200,
            "function": "dispatch",
            "class": "Illuminate\\Routing\\Router",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 180,
            "function": "{closure:Illuminate\\Foundation\\Http\\Kernel::dispatchToRouter():197}",
            "class": "Illuminate\\Foundation\\Http\\Kernel",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/nova/src/Http/Middleware/ServeNova.php",
            "line": 23,
            "function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "Laravel\\Nova\\Http\\Middleware\\ServeNova",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/barryvdh/laravel-debugbar/src/Middleware/InjectDebugbar.php",
            "line": 59,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "Barryvdh\\Debugbar\\Middleware\\InjectDebugbar",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
            "line": 21,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php",
            "line": 31,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
            "line": 21,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php",
            "line": 51,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\TrimStrings",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php",
            "line": 27,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "Illuminate\\Http\\Middleware\\ValidatePostSize",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php",
            "line": 109,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php",
            "line": 61,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "Illuminate\\Http\\Middleware\\HandleCors",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php",
            "line": 58,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/monicahq/laravel-cloudflare/src/Http/Middleware/TrustProxies.php",
            "line": 25,
            "function": "handle",
            "class": "Illuminate\\Http\\Middleware\\TrustProxies",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "Monicahq\\Cloudflare\\Http\\Middleware\\TrustProxies",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 137,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
            "line": 175,
            "function": "then",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
            "line": 144,
            "function": "sendRequestThroughRouter",
            "class": "Illuminate\\Foundation\\Http\\Kernel",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/knuckleswtf/scribe/src/Extracting/Strategies/Responses/ResponseCalls.php",
            "line": 256,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Kernel",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/knuckleswtf/scribe/src/Extracting/Strategies/Responses/ResponseCalls.php",
            "line": 249,
            "function": "callLaravelRoute",
            "class": "Knuckles\\Scribe\\Extracting\\Strategies\\Responses\\ResponseCalls",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/knuckleswtf/scribe/src/Extracting/Strategies/Responses/ResponseCalls.php",
            "line": 86,
            "function": "makeApiCall",
            "class": "Knuckles\\Scribe\\Extracting\\Strategies\\Responses\\ResponseCalls",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/knuckleswtf/scribe/src/Extracting/Strategies/Responses/ResponseCalls.php",
            "line": 39,
            "function": "makeResponseCall",
            "class": "Knuckles\\Scribe\\Extracting\\Strategies\\Responses\\ResponseCalls",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/knuckleswtf/scribe/src/Extracting/Extractor.php",
            "line": 240,
            "function": "__invoke",
            "class": "Knuckles\\Scribe\\Extracting\\Strategies\\Responses\\ResponseCalls",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/knuckleswtf/scribe/src/Extracting/Extractor.php",
            "line": 165,
            "function": "iterateThroughStrategies",
            "class": "Knuckles\\Scribe\\Extracting\\Extractor",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/knuckleswtf/scribe/src/Extracting/Extractor.php",
            "line": 97,
            "function": "fetchResponses",
            "class": "Knuckles\\Scribe\\Extracting\\Extractor",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/knuckleswtf/scribe/src/GroupedEndpoints/GroupedEndpointsFromApp.php",
            "line": 125,
            "function": "processRoute",
            "class": "Knuckles\\Scribe\\Extracting\\Extractor",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/knuckleswtf/scribe/src/GroupedEndpoints/GroupedEndpointsFromApp.php",
            "line": 72,
            "function": "extractEndpointsInfoFromLaravelApp",
            "class": "Knuckles\\Scribe\\GroupedEndpoints\\GroupedEndpointsFromApp",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/knuckleswtf/scribe/src/GroupedEndpoints/GroupedEndpointsFromApp.php",
            "line": 50,
            "function": "extractEndpointsInfoAndWriteToDisk",
            "class": "Knuckles\\Scribe\\GroupedEndpoints\\GroupedEndpointsFromApp",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/knuckleswtf/scribe/src/Commands/GenerateDocumentation.php",
            "line": 55,
            "function": "get",
            "class": "Knuckles\\Scribe\\GroupedEndpoints\\GroupedEndpointsFromApp",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php",
            "line": 36,
            "function": "handle",
            "class": "Knuckles\\Scribe\\Commands\\GenerateDocumentation",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Container/Util.php",
            "line": 43,
            "function": "{closure:Illuminate\\Container\\BoundMethod::call():35}",
            "class": "Illuminate\\Container\\BoundMethod",
            "type": "::"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php",
            "line": 96,
            "function": "unwrapIfClosure",
            "class": "Illuminate\\Container\\Util",
            "type": "::"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php",
            "line": 35,
            "function": "callBoundMethod",
            "class": "Illuminate\\Container\\BoundMethod",
            "type": "::"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Container/Container.php",
            "line": 799,
            "function": "call",
            "class": "Illuminate\\Container\\BoundMethod",
            "type": "::"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Console/Command.php",
            "line": 211,
            "function": "call",
            "class": "Illuminate\\Container\\Container",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/symfony/console/Command/Command.php",
            "line": 341,
            "function": "execute",
            "class": "Illuminate\\Console\\Command",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Console/Command.php",
            "line": 180,
            "function": "run",
            "class": "Symfony\\Component\\Console\\Command\\Command",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/symfony/console/Application.php",
            "line": 1079,
            "function": "run",
            "class": "Illuminate\\Console\\Command",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/symfony/console/Application.php",
            "line": 356,
            "function": "doRunCommand",
            "class": "Symfony\\Component\\Console\\Application",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/symfony/console/Application.php",
            "line": 195,
            "function": "doRun",
            "class": "Symfony\\Component\\Console\\Application",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Console/Application.php",
            "line": 165,
            "function": "run",
            "class": "Symfony\\Component\\Console\\Application",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php",
            "line": 447,
            "function": "call",
            "class": "Illuminate\\Console\\Application",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php",
            "line": 363,
            "function": "call",
            "class": "Illuminate\\Foundation\\Console\\Kernel",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/app/Console/Commands/ScribeGenerate.php",
            "line": 116,
            "function": "__callStatic",
            "class": "Illuminate\\Support\\Facades\\Facade",
            "type": "::"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php",
            "line": 36,
            "function": "handle",
            "class": "App\\Console\\Commands\\ScribeGenerate",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Container/Util.php",
            "line": 43,
            "function": "{closure:Illuminate\\Container\\BoundMethod::call():35}",
            "class": "Illuminate\\Container\\BoundMethod",
            "type": "::"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php",
            "line": 96,
            "function": "unwrapIfClosure",
            "class": "Illuminate\\Container\\Util",
            "type": "::"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php",
            "line": 35,
            "function": "callBoundMethod",
            "class": "Illuminate\\Container\\BoundMethod",
            "type": "::"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Container/Container.php",
            "line": 799,
            "function": "call",
            "class": "Illuminate\\Container\\BoundMethod",
            "type": "::"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Console/Command.php",
            "line": 211,
            "function": "call",
            "class": "Illuminate\\Container\\Container",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/symfony/console/Command/Command.php",
            "line": 341,
            "function": "execute",
            "class": "Illuminate\\Console\\Command",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Console/Command.php",
            "line": 180,
            "function": "run",
            "class": "Symfony\\Component\\Console\\Command\\Command",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/symfony/console/Application.php",
            "line": 1079,
            "function": "run",
            "class": "Illuminate\\Console\\Command",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/symfony/console/Application.php",
            "line": 356,
            "function": "doRunCommand",
            "class": "Symfony\\Component\\Console\\Application",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/symfony/console/Application.php",
            "line": 195,
            "function": "doRun",
            "class": "Symfony\\Component\\Console\\Application",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php",
            "line": 198,
            "function": "run",
            "class": "Symfony\\Component\\Console\\Application",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/artisan",
            "line": 35,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Console\\Kernel",
            "type": "->"
        }
    ]
}

POST api/v2/beta/appointments

POST
http://localhost
/api/v2/beta/appointments

Headers

Content-Type
Example:
application/json

Body Parameters

Example request:
curl --request POST \
    "http://localhost/api/v2/beta/appointments" \
    --header "Content-Type: application/json" \
    --data "{
    \"type\": \"delivery\",
    \"external_identifier\": \"ORD-12345\",
    \"external_reference\": \"REF-6789\",
    \"note\": \"Please deliver at the side door.\",
    \"external_link\": \"https:\\/\\/example.com\\/\",
    \"start_time\": \"08:00\",
    \"end_time\": \"17:00\",
    \"delivery_duration_minutes\": 30,
    \"signature_required\": false,
    \"used_capacity\": 10.5,
    \"used_capacity_2\": 5.25,
    \"used_capacity_3\": 2.75,
    \"notification_template_uuid\": \"123e4567-e89b-12d3-a456-426614174000\",
    \"customer\": \"illo\",
    \"tags\": [
        \"cooled\"
    ],
    \"appointment_date\": \"2023-12-31\",
    \"address\": {
        \"house_number\": \"12\",
        \"house_number_extension\": \"1A\",
        \"street\": \"LongStreet\",
        \"postal_code\": \"1234AB\",
        \"city\": \"Amsterdam\",
        \"country\": \"NL\",
        \"latitude\": 52.3675734,
        \"longitude\": 4.9041389
    }
}"
Example response:
Headers
                                                            cache-control
                                                            : no-cache, private
                                                                                                                    content-type
                                                            : application/json
                                                                                                                    x-ratelimit-limit
                                                            : 1000
                                                                                                                    x-ratelimit-remaining
                                                            : 962
                                                                                                                    vary
                                                            : Origin
                                                         
{
    "message": "Access token missing",
    "exception": "Symfony\\Component\\HttpKernel\\Exception\\HttpException",
    "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Foundation/Application.php",
    "line": 1440,
    "trace": [
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php",
            "line": 67,
            "function": "abort",
            "class": "Illuminate\\Foundation\\Application",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/app/Http/Middleware/CompanyAuth.php",
            "line": 21,
            "function": "abort"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "App\\Http\\Middleware\\CompanyAuth",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/app/Http/Middleware/ForcedApiLocale.php",
            "line": 14,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "App\\Http\\Middleware\\ForcedApiLocale",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/inspector-apm/inspector-laravel/src/Middleware/WebRequestMonitoring.php",
            "line": 44,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "Inspector\\Laravel\\Middleware\\WebRequestMonitoring",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/app/Http/Middleware/CompanyPermission.php",
            "line": 23,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "App\\Http\\Middleware\\CompanyPermission",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/app/Http/Middleware/ForcedLocale.php",
            "line": 29,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "App\\Http\\Middleware\\ForcedLocale",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/app/Http/Middleware/RouteLogicEngineToggle.php",
            "line": 20,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "App\\Http\\Middleware\\RouteLogicEngineToggle",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php",
            "line": 50,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "Illuminate\\Routing\\Middleware\\SubstituteBindings",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php",
            "line": 166,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php",
            "line": 129,
            "function": "handleRequest",
            "class": "Illuminate\\Routing\\Middleware\\ThrottleRequests",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php",
            "line": 90,
            "function": "handleRequestUsingNamedLimiter",
            "class": "Illuminate\\Routing\\Middleware\\ThrottleRequests",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "Illuminate\\Routing\\Middleware\\ThrottleRequests",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/sanctum/src/Http/Middleware/EnsureFrontendRequestsAreStateful.php",
            "line": 26,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 180,
            "function": "{closure:Laravel\\Sanctum\\Http\\Middleware\\EnsureFrontendRequestsAreStateful::handle():25}",
            "class": "Laravel\\Sanctum\\Http\\Middleware\\EnsureFrontendRequestsAreStateful",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 137,
            "function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/sanctum/src/Http/Middleware/EnsureFrontendRequestsAreStateful.php",
            "line": 25,
            "function": "then",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "Laravel\\Sanctum\\Http\\Middleware\\EnsureFrontendRequestsAreStateful",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/app/Http/Middleware/ForcedJsonResponse.php",
            "line": 14,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "App\\Http\\Middleware\\ForcedJsonResponse",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 137,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 821,
            "function": "then",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 800,
            "function": "runRouteWithinStack",
            "class": "Illuminate\\Routing\\Router",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 764,
            "function": "runRoute",
            "class": "Illuminate\\Routing\\Router",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
            "line": 753,
            "function": "dispatchToRoute",
            "class": "Illuminate\\Routing\\Router",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
            "line": 200,
            "function": "dispatch",
            "class": "Illuminate\\Routing\\Router",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 180,
            "function": "{closure:Illuminate\\Foundation\\Http\\Kernel::dispatchToRouter():197}",
            "class": "Illuminate\\Foundation\\Http\\Kernel",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/nova/src/Http/Middleware/ServeNova.php",
            "line": 23,
            "function": "{closure:Illuminate\\Pipeline\\Pipeline::prepareDestination():178}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "Laravel\\Nova\\Http\\Middleware\\ServeNova",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/barryvdh/laravel-debugbar/src/Middleware/InjectDebugbar.php",
            "line": 59,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "Barryvdh\\Debugbar\\Middleware\\InjectDebugbar",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
            "line": 21,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php",
            "line": 31,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
            "line": 21,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php",
            "line": 51,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\TrimStrings",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Http/Middleware/ValidatePostSize.php",
            "line": 27,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "Illuminate\\Http\\Middleware\\ValidatePostSize",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php",
            "line": 109,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php",
            "line": 61,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "Illuminate\\Http\\Middleware\\HandleCors",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php",
            "line": 58,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/monicahq/laravel-cloudflare/src/Http/Middleware/TrustProxies.php",
            "line": 25,
            "function": "handle",
            "class": "Illuminate\\Http\\Middleware\\TrustProxies",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 219,
            "function": "handle",
            "class": "Monicahq\\Cloudflare\\Http\\Middleware\\TrustProxies",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
            "line": 137,
            "function": "{closure:{closure:Illuminate\\Pipeline\\Pipeline::carry():194}:195}",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
            "line": 175,
            "function": "then",
            "class": "Illuminate\\Pipeline\\Pipeline",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
            "line": 144,
            "function": "sendRequestThroughRouter",
            "class": "Illuminate\\Foundation\\Http\\Kernel",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/knuckleswtf/scribe/src/Extracting/Strategies/Responses/ResponseCalls.php",
            "line": 256,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Http\\Kernel",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/knuckleswtf/scribe/src/Extracting/Strategies/Responses/ResponseCalls.php",
            "line": 249,
            "function": "callLaravelRoute",
            "class": "Knuckles\\Scribe\\Extracting\\Strategies\\Responses\\ResponseCalls",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/knuckleswtf/scribe/src/Extracting/Strategies/Responses/ResponseCalls.php",
            "line": 86,
            "function": "makeApiCall",
            "class": "Knuckles\\Scribe\\Extracting\\Strategies\\Responses\\ResponseCalls",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/knuckleswtf/scribe/src/Extracting/Strategies/Responses/ResponseCalls.php",
            "line": 39,
            "function": "makeResponseCall",
            "class": "Knuckles\\Scribe\\Extracting\\Strategies\\Responses\\ResponseCalls",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/knuckleswtf/scribe/src/Extracting/Extractor.php",
            "line": 240,
            "function": "__invoke",
            "class": "Knuckles\\Scribe\\Extracting\\Strategies\\Responses\\ResponseCalls",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/knuckleswtf/scribe/src/Extracting/Extractor.php",
            "line": 165,
            "function": "iterateThroughStrategies",
            "class": "Knuckles\\Scribe\\Extracting\\Extractor",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/knuckleswtf/scribe/src/Extracting/Extractor.php",
            "line": 97,
            "function": "fetchResponses",
            "class": "Knuckles\\Scribe\\Extracting\\Extractor",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/knuckleswtf/scribe/src/GroupedEndpoints/GroupedEndpointsFromApp.php",
            "line": 125,
            "function": "processRoute",
            "class": "Knuckles\\Scribe\\Extracting\\Extractor",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/knuckleswtf/scribe/src/GroupedEndpoints/GroupedEndpointsFromApp.php",
            "line": 72,
            "function": "extractEndpointsInfoFromLaravelApp",
            "class": "Knuckles\\Scribe\\GroupedEndpoints\\GroupedEndpointsFromApp",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/knuckleswtf/scribe/src/GroupedEndpoints/GroupedEndpointsFromApp.php",
            "line": 50,
            "function": "extractEndpointsInfoAndWriteToDisk",
            "class": "Knuckles\\Scribe\\GroupedEndpoints\\GroupedEndpointsFromApp",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/knuckleswtf/scribe/src/Commands/GenerateDocumentation.php",
            "line": 55,
            "function": "get",
            "class": "Knuckles\\Scribe\\GroupedEndpoints\\GroupedEndpointsFromApp",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php",
            "line": 36,
            "function": "handle",
            "class": "Knuckles\\Scribe\\Commands\\GenerateDocumentation",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Container/Util.php",
            "line": 43,
            "function": "{closure:Illuminate\\Container\\BoundMethod::call():35}",
            "class": "Illuminate\\Container\\BoundMethod",
            "type": "::"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php",
            "line": 96,
            "function": "unwrapIfClosure",
            "class": "Illuminate\\Container\\Util",
            "type": "::"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php",
            "line": 35,
            "function": "callBoundMethod",
            "class": "Illuminate\\Container\\BoundMethod",
            "type": "::"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Container/Container.php",
            "line": 799,
            "function": "call",
            "class": "Illuminate\\Container\\BoundMethod",
            "type": "::"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Console/Command.php",
            "line": 211,
            "function": "call",
            "class": "Illuminate\\Container\\Container",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/symfony/console/Command/Command.php",
            "line": 341,
            "function": "execute",
            "class": "Illuminate\\Console\\Command",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Console/Command.php",
            "line": 180,
            "function": "run",
            "class": "Symfony\\Component\\Console\\Command\\Command",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/symfony/console/Application.php",
            "line": 1079,
            "function": "run",
            "class": "Illuminate\\Console\\Command",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/symfony/console/Application.php",
            "line": 356,
            "function": "doRunCommand",
            "class": "Symfony\\Component\\Console\\Application",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/symfony/console/Application.php",
            "line": 195,
            "function": "doRun",
            "class": "Symfony\\Component\\Console\\Application",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Console/Application.php",
            "line": 165,
            "function": "run",
            "class": "Symfony\\Component\\Console\\Application",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php",
            "line": 447,
            "function": "call",
            "class": "Illuminate\\Console\\Application",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php",
            "line": 363,
            "function": "call",
            "class": "Illuminate\\Foundation\\Console\\Kernel",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/app/Console/Commands/ScribeGenerate.php",
            "line": 116,
            "function": "__callStatic",
            "class": "Illuminate\\Support\\Facades\\Facade",
            "type": "::"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php",
            "line": 36,
            "function": "handle",
            "class": "App\\Console\\Commands\\ScribeGenerate",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Container/Util.php",
            "line": 43,
            "function": "{closure:Illuminate\\Container\\BoundMethod::call():35}",
            "class": "Illuminate\\Container\\BoundMethod",
            "type": "::"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php",
            "line": 96,
            "function": "unwrapIfClosure",
            "class": "Illuminate\\Container\\Util",
            "type": "::"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php",
            "line": 35,
            "function": "callBoundMethod",
            "class": "Illuminate\\Container\\BoundMethod",
            "type": "::"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Container/Container.php",
            "line": 799,
            "function": "call",
            "class": "Illuminate\\Container\\BoundMethod",
            "type": "::"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Console/Command.php",
            "line": 211,
            "function": "call",
            "class": "Illuminate\\Container\\Container",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/symfony/console/Command/Command.php",
            "line": 341,
            "function": "execute",
            "class": "Illuminate\\Console\\Command",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Console/Command.php",
            "line": 180,
            "function": "run",
            "class": "Symfony\\Component\\Console\\Command\\Command",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/symfony/console/Application.php",
            "line": 1079,
            "function": "run",
            "class": "Illuminate\\Console\\Command",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/symfony/console/Application.php",
            "line": 356,
            "function": "doRunCommand",
            "class": "Symfony\\Component\\Console\\Application",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/symfony/console/Application.php",
            "line": 195,
            "function": "doRun",
            "class": "Symfony\\Component\\Console\\Application",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php",
            "line": 198,
            "function": "run",
            "class": "Symfony\\Component\\Console\\Application",
            "type": "->"
        },
        {
            "file": "/builds/routelogic/api.routelogic.io/artisan",
            "line": 35,
            "function": "handle",
            "class": "Illuminate\\Foundation\\Console\\Kernel",
            "type": "->"
        }
    ]
}

Files

Files are photo's and signature's from a visit


GET File

GET
http://localhost
/api/v2/file/{key}
requires authentication

Get the image of a photo or a signature by key

RateLimit (60/min)

Headers

Authorization
Example:
Bearer {YOUR_API_KEY}

URL Parameters

key
string
required

The key of the related image

Example:
Y2DAi383qkBcm
Example request:
curl --request GET \
    --get "http://localhost/api/v2/file/Y2DAi383qkBcm" \
    --header "Authorization: Bearer {YOUR_API_KEY}"
Example response:
[Binary data] -  The image
{
    "message": "Access token invalid"
}
{
    "message": "Access token missing"
}
{
    "message": "Required subscription is not active"
}
{
    "message": "This action is unauthorized."
}
{
    "message": "Resource not found"
}
{
    "message": "Too Many Attempts."
}
{
    "message": "Server Error"
}

Examples

Examples of how to use the API

How to generate an order pick list

It is possible to generate an order pick list for all routes on a specific date. This can be done by sending a GET request to the api/v2/schedules endpoint with the filters.date as a query parameter. The response will show you all the tasks for a specific date in order per vehicle.

How to sync my cms with routelogic (webhooks)

It is possible to sync your CMS with RouteLogic by using webhooks. You can create a webhook in the RouteLogic dashboard that will send a POST request to your CMS every time a task is created, updated or deleted. This way you can keep your CMS up to date with the latest information from RouteLogic. It is possible to set a bearer token for each webhook to make sure that only authorized requests are accepted by your CMS.

Moreover, you van also use the visit_status_updated webhook to get notified when the status of a visit is updated. The internal_note_created webhook can be used to get notified when an internal note is created by a driver.

How to work with barcodes / QR codes

To be able to scan barcodes or QR codes, they have to be linked to a task or visit in RouteLogic. In most cases a code should be linked to a task. This can be done by sending a POST request to the api/v2/tasks/{task_uuid}/codes endpoint with the barcode as a payload. Sometimes a package with the same code should be scanned multiple times. This can be done by adding the amount parameter to the payload.

It is possible to scan a code when delivering an order with the RouteLogic Driver App. The scanned codes will be visible in the manager portal and the scanned codes are also visible in a task endpoint.

Codes and recurring tasks

A recurring task is a task that is repeated on a regular basis. To create a recurring task, you add a recurring object to the payload of the POST request to the api/v2/tasks endpoint. If you want the same code for each delivery, you send a POST request to the api/v2/tasks/{task_uuid}/codes endpoint with the code as a payload. But if you want the code for just a specific delivery, you can add the code to the payload of the POST request to the api/v2/visits/{scheduleVisit_uuid}/codes endpoint. This will make sure that the code is only linked to that specific delivery and not to future deliveries.

Sending Notifications from Your Own Application

You can send notifications directly from your own application. To ensure this also works with the "Send Notifications" button in the Routelogic interface and to keep Routelogic aware of the notification status we recommend following this flow:

  1. Enable Self-Managed Notifications Go to Notifications > Manage notifications yourself and make sure this setting is turned on.
  2. Set Up the sending_notifications Webhook Configure the sending_notifications webhook. When this webhook is triggered, handle the messages in your application as needed.
  3. Automate Notification Sending (Optional) If you want to automate notifications (without user interaction), do not send the notifications directly from your application. Instead, use the API endpoint: /api/v2/schedules/{schedule_uuid}/send-notifications This approach ensures Routelogic is aware of the notification status and triggers the webhook so you can process the messages accordingly.

Returnable Packaging

We don’t keep track of how many total returnable packaging items (like pallets or crates) are at a customer’s location. However, we do give you the tools to track this yourself using your own system. One way to do this is by using our schedule endpoint: /api/v2/schedules/{schedule_uuid} together with the visit_status_updated webhook. This includes returnable_packaging data per visit, showing how many items (like pallets) were delivered or picked up. Drivers can record these amounts in the app, so you can keep track of them through the API. Within the applications settings you can setup packaging types. To match these in your own system you can retrieve them with the /api/v2/returnablePackagingTypes endpoint.

Webhooks

This document describes the webhooks that are send by RouteLogic Webhooks are used to notify external systems about events that happen in the system. The webhooks are send to the provided webhook URL in the webhook group. The webhook URL can be set in the company synchronisation settings. It is possible to set multiple webhook URLs and only send specific events.

task_created

This event is sent when a task has been created

{
    "type": "task_created",
    "timestamp": "2026-02-04T08:54:17+01:00",
    "data": {
        "uuid": "a0ff7c7a-78b2-43b3-8634-5e1f3eb140e8",
        "type": "delivery",
        "external_identifier": "mOnrWv",
        "external_reference": null,
        "note": null,
        "pending_payment_amount": 0,
        "external_link": null,
        "track_and_trace_link": "http:\/\/localhost\/tr\/YQGAmcXhEJCd",
        "delivery_from_date": null,
        "delivery_date": "2026-02-04",
        "start_time": "08:00:00",
        "end_time": "17:00:00",
        "delivery_duration_minutes": 0,
        "recurring": null,
        "return_required": null,
        "signature_required": null,
        "used_capacity": 0,
        "used_capacity_2": 0,
        "used_capacity_3": 0,
        "updated_at": "2026-02-04T07:54:15.000000Z",
        "created_at": "2026-02-04T07:54:15.000000Z",
        "tags": [],
        "notification_template_uuid": null,
        "return_task_uuid": null,
        "shipment_steps": null
    }
}

task_updated

This event is sent when a task has been updated

{
    "type": "task_updated",
    "timestamp": "2026-02-04T08:54:17+01:00",
    "data": {
        "uuid": "a0ff7c7a-78b2-43b3-8634-5e1f3eb140e8",
        "type": "delivery",
        "external_identifier": "mOnrWv",
        "external_reference": null,
        "note": null,
        "pending_payment_amount": 0,
        "external_link": null,
        "track_and_trace_link": "http:\/\/localhost\/tr\/YQGAmcXhEJCd",
        "delivery_from_date": null,
        "delivery_date": "2026-02-04",
        "start_time": "08:00:00",
        "end_time": "17:00:00",
        "delivery_duration_minutes": 0,
        "recurring": null,
        "return_required": null,
        "signature_required": null,
        "used_capacity": 0,
        "used_capacity_2": 0,
        "used_capacity_3": 0,
        "updated_at": "2026-02-04T07:54:15.000000Z",
        "created_at": "2026-02-04T07:54:15.000000Z",
        "tags": [],
        "notification_template_uuid": null,
        "return_task_uuid": null,
        "shipment_steps": null
    }
}

task_deleted

This event is sent when a task has been deleted

{
    "type": "task_deleted",
    "timestamp": "2026-02-04T08:54:17+01:00",
    "data": {
        "uuid": "a0ff7c7a-78b2-43b3-8634-5e1f3eb140e8",
        "type": "delivery",
        "external_identifier": "mOnrWv",
        "external_reference": null,
        "note": null,
        "pending_payment_amount": 0,
        "external_link": null,
        "track_and_trace_link": "http:\/\/localhost\/tr\/YQGAmcXhEJCd",
        "delivery_from_date": null,
        "delivery_date": "2026-02-04",
        "start_time": "08:00:00",
        "end_time": "17:00:00",
        "delivery_duration_minutes": 0,
        "recurring": null,
        "return_required": null,
        "signature_required": null,
        "used_capacity": 0,
        "used_capacity_2": 0,
        "used_capacity_3": 0,
        "updated_at": "2026-02-04T07:54:15.000000Z",
        "created_at": "2026-02-04T07:54:15.000000Z",
        "tags": [],
        "notification_template_uuid": null,
        "return_task_uuid": null,
        "shipment_steps": null
    }
}

visit_status_updated

This event is sent when a visit status has been updated

{
    "type": "visit_status_updated",
    "timestamp": "2026-02-04T08:54:17+01:00",
    "data": {
        "uuid": "a0ff7c7a-9595-41f7-8473-5c947dc925b2",
        "type": "task",
        "order_index": 0,
        "delivery_time": "09:00:00",
        "eta_start": "08:25",
        "eta_end": "09:25",
        "delivered_at": "2026-02-04T08:05:00.000000Z",
        "task": {
            "uuid": "a0ff7c7a-78b2-43b3-8634-5e1f3eb140e8",
            "type": "delivery",
            "external_identifier": "mOnrWv",
            "external_reference": null,
            "note": null,
            "pending_payment_amount": 0,
            "external_link": null,
            "track_and_trace_link": "http:\/\/localhost\/tr\/YQGAmcXhEJCd",
            "delivery_from_date": null,
            "delivery_date": "2026-02-04",
            "start_time": "08:00:00",
            "end_time": "17:00:00",
            "delivery_duration_minutes": 0,
            "recurring": null,
            "return_required": false,
            "signature_required": false,
            "used_capacity": 0,
            "used_capacity_2": 0,
            "used_capacity_3": 0,
            "updated_at": "2026-02-04T07:54:15.000000Z",
            "created_at": "2026-02-04T07:54:15.000000Z",
            "tags": [],
            "notification_template_uuid": null,
            "return_task_uuid": null,
            "address": {
                "street": "213 Blanda Turnpike",
                "house_number": "365",
                "house_number_extension": null,
                "postal_code": "85957",
                "city": "Devanborough",
                "latitude": 5.4321,
                "longitude": 5.4321,
                "address_line": "213 Blanda Turnpike 365",
                "full_address_line": "213 Blanda Turnpike 365, 85957, Devanborough",
                "country": {
                    "iso_code": "NL",
                    "description": "Nederland"
                }
            },
            "customer": {
                "name": "Isaiah Ortiz",
                "email": "[email protected]",
                "phone_number": null
            },
            "shipment_steps": null
        },
        "schedule_date": "2026-02-03T23:00:00.000000Z",
        "status": {
            "status_identifier": "delivered"
        },
        "signature": "YTBmZjdjN2EtOTU5NS00MWY3LTg0NzMtNWM5NDdkYzkyNWIy",
        "files": {
            "data": [
                {
                    "type": "image",
                    "key": "NTJWYVBvSHN1WVgyZndQcA"
                }
            ]
        },
        "schedule_uuid": "1ec24a7e-b681-4cf0-859a-3fd4dc3db716"
    }
}

internal_note_created

This event is send when an internal note has been created

{
    "type": "internal_note_created",
    "timestamp": "2026-02-04T08:54:17+01:00",
    "data": {
        "message": "This is an example message. Drivers use this to communicate with their managers",
        "visit": {
            "uuid": "a0ff7c7a-9595-41f7-8473-5c947dc925b2",
            "type": "task",
            "order_index": 0,
            "delivery_time": "09:00:00",
            "eta_start": "08:25",
            "eta_end": "09:25",
            "delivered_at": "2026-02-04T08:05:00.000000Z",
            "task": {
                "uuid": "a0ff7c7a-78b2-43b3-8634-5e1f3eb140e8",
                "type": "delivery",
                "external_identifier": "RLl0Ke5Asagi",
                "external_reference": null,
                "note": null,
                "pending_payment_amount": 0,
                "external_link": null,
                "track_and_trace_link": "http:\/\/localhost\/tr\/YQGAmcXhEJCd",
                "delivery_from_date": null,
                "delivery_date": "2026-02-04",
                "start_time": "08:00:00",
                "end_time": "17:00:00",
                "delivery_duration_minutes": 0,
                "recurring": null,
                "return_required": false,
                "signature_required": false,
                "used_capacity": 0,
                "used_capacity_2": 0,
                "used_capacity_3": 0,
                "updated_at": "2026-02-04T07:54:16.000000Z",
                "created_at": "2026-02-04T07:54:15.000000Z",
                "tags": [],
                "notification_template_uuid": null,
                "return_task_uuid": null,
                "address": {
                    "street": "213 Blanda Turnpike",
                    "house_number": "365",
                    "house_number_extension": null,
                    "postal_code": "85957",
                    "city": "Devanborough",
                    "latitude": 5.4321,
                    "longitude": 5.4321,
                    "address_line": "213 Blanda Turnpike 365",
                    "full_address_line": "213 Blanda Turnpike 365, 85957, Devanborough",
                    "country": {
                        "iso_code": "NL",
                        "description": "Nederland"
                    }
                },
                "customer": {
                    "name": "Isaiah Ortiz",
                    "email": "[email protected]",
                    "phone_number": null
                },
                "shipment_steps": null
            },
            "schedule_date": "2026-02-03T23:00:00.000000Z",
            "status": {
                "status_identifier": "delivered"
            },
            "signature": "YTBmZjdjN2EtOTU5NS00MWY3LTg0NzMtNWM5NDdkYzkyNWIy",
            "files": {
                "data": [
                    {
                        "type": "image",
                        "key": "NTJWYVBvSHN1WVgyZndQcA"
                    }
                ]
            }
        }
    }
}

schedule_calculated

This event is sent everytime a schedule has been calculated

{
    "type": "schedule_calculated",
    "timestamp": "2026-02-04T08:54:17+01:00",
    "data": {
        "uuid": "1ec24a7e-b681-4cf0-859a-3fd4dc3db716",
        "date": "2026-02-04",
        "description": "Example Schedule 1",
        "total_travel_time": 0,
        "total_distance": 0,
        "notifications_send": false,
        "schedule_vehicles": {
            "data": [
                {
                    "uuid": "a0ff7c7a-945a-48c0-8e4b-dbe8b93335e4",
                    "start_time": "08:00:00",
                    "end_time": "10:00:00",
                    "started_at": "2026-02-04 08:03:00",
                    "finished_at": "2026-02-04 10:02:00",
                    "total_travel_time": 0,
                    "total_distance": 1850,
                    "vehicle": {
                        "uuid": "a0ff7c7a-6a65-4260-8cc3-8588d2830cd5",
                        "licence_plate": "uiwlCWM4U",
                        "description": "Van 1"
                    },
                    "visits": {
                        "data": [
                            {
                                "uuid": "a0ff7c7a-9595-41f7-8473-5c947dc925b2",
                                "type": "task",
                                "order_index": 0,
                                "delivery_time": "09:00:00",
                                "delivered_at": "2026-02-04T08:05:00.000000Z",
                                "task": {
                                    "uuid": "a0ff7c7a-78b2-43b3-8634-5e1f3eb140e8",
                                    "external_identifier": "RLl0Ke5Asagi"
                                },
                                "task_uuid": "a0ff7c7a-78b2-43b3-8634-5e1f3eb140e8",
                                "schedule_date": "2026-02-03T23:00:00.000000Z",
                                "status": {
                                    "status_identifier": "delivered"
                                },
                                "signature": "YTBmZjdjN2EtOTU5NS00MWY3LTg0NzMtNWM5NDdkYzkyNWIy",
                                "files": {
                                    "data": [
                                        {
                                            "type": "image",
                                            "key": "NTJWYVBvSHN1WVgyZndQcA"
                                        }
                                    ]
                                }
                            }
                        ]
                    }
                }
            ]
        }
    }
}

sending_notifications

This event is sent everytime the notifications are being send through the button in the application or the api.

{
    "type": "sending_notifications",
    "timestamp": "2026-02-04T08:54:17+01:00",
    "data": {
        "uuid": "1ec24a7e-b681-4cf0-859a-3fd4dc3db716",
        "date": "2026-02-04",
        "description": "Example Schedule 1",
        "total_travel_time": 0,
        "total_distance": 0,
        "notifications_send": false,
        "first_notification": true,
        "schedule_vehicles": {
            "data": [
                {
                    "uuid": "a0ff7c7a-945a-48c0-8e4b-dbe8b93335e4",
                    "start_time": "08:00:00",
                    "end_time": "10:00:00",
                    "started_at": "2026-02-04 08:03:00",
                    "finished_at": "2026-02-04 10:02:00",
                    "total_travel_time": 0,
                    "total_distance": 1850,
                    "vehicle": {
                        "uuid": "a0ff7c7a-6a65-4260-8cc3-8588d2830cd5",
                        "licence_plate": "uiwlCWM4U",
                        "description": "Van 1"
                    },
                    "user": {
                        "uuid": "a0ff7c7a-7305-485e-8648-a08448bbc0a2",
                        "name": "Mr. Tobin Ziemann MD",
                        "public_name": "Mr. Tobin Ziemann MD"
                    },
                    "visits": {
                        "data": [
                            {
                                "uuid": "a0ff7c7a-9595-41f7-8473-5c947dc925b2",
                                "type": "task",
                                "order_index": 0,
                                "delivery_time": "09:00:00",
                                "eta_start": "08:25",
                                "eta_end": "09:25",
                                "delivered_at": "2026-02-04T08:05:00.000000Z",
                                "task": {
                                    "uuid": "a0ff7c7a-78b2-43b3-8634-5e1f3eb140e8",
                                    "type": "delivery",
                                    "external_identifier": "RLl0Ke5Asagi",
                                    "external_reference": null,
                                    "note": null,
                                    "pending_payment_amount": 0,
                                    "external_link": null,
                                    "track_and_trace_link": "http:\/\/localhost\/tr\/YQGAmcXhEJCd",
                                    "delivery_from_date": null,
                                    "delivery_date": "2026-02-04",
                                    "start_time": "08:00:00",
                                    "end_time": "17:00:00",
                                    "delivery_duration_minutes": 0,
                                    "recurring": null,
                                    "return_required": false,
                                    "signature_required": false,
                                    "used_capacity": 0,
                                    "used_capacity_2": 0,
                                    "used_capacity_3": 0,
                                    "updated_at": "2026-02-04T07:54:16.000000Z",
                                    "created_at": "2026-02-04T07:54:15.000000Z",
                                    "tags": [],
                                    "notification_template_uuid": null,
                                    "return_task_uuid": null,
                                    "address": {
                                        "street": "213 Blanda Turnpike",
                                        "house_number": "365",
                                        "house_number_extension": null,
                                        "postal_code": "85957",
                                        "city": "Devanborough",
                                        "latitude": 5.4321,
                                        "longitude": 5.4321,
                                        "address_line": "213 Blanda Turnpike 365",
                                        "full_address_line": "213 Blanda Turnpike 365, 85957, Devanborough",
                                        "country": {
                                            "iso_code": "NL",
                                            "description": "Nederland"
                                        }
                                    },
                                    "customer": {
                                        "name": "Isaiah Ortiz",
                                        "email": "[email protected]",
                                        "phone_number": null
                                    },
                                    "shipment_steps": null
                                },
                                "schedule_date": "2026-02-03T23:00:00.000000Z",
                                "status": {
                                    "status_identifier": "delivered"
                                },
                                "signature": "YTBmZjdjN2EtOTU5NS00MWY3LTg0NzMtNWM5NDdkYzkyNWIy"
                            }
                        ]
                    }
                }
            ]
        }
    }
}