MENU navbar-image

Introduction

InCheck API for Solution Providers

External API for Approved Solution Providers (Level 1) to integrate with the ZDHC Sandbox platform for chemical inventory reporting.

ID Format

ZDHC Sandbox uses a structured ID format: {prefix}-XXXXXXX-Z

Prefix Entity Type Example
01 Organisation 01-XXXXXXX-Z
20 Product 20-XXXXXXX-Z
40 InCheck Report 40-XXXXXXX-Z

Error Model

All non-2xx responses use a consistent error structure:

{
    "error": {
        "code": "string",
        "message": "string",
        "details": {}
    }
}

Authenticating requests

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

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

Retrieve a token by calling the /auth/login endpoint.

Chemical

Inventory

Bulk Store

requires authentication

Create or update one or more chemical inventories and their products in a single request.

Inventories can only be submitted or modified within 45 days after the end of the reporting month. The submission window closes at the end of that period (the last eligible day is 45 days after the month ends).

For example, for April 2026 (reporting month ending 30 April 2026), the window closes on 14 June 2026. Requests for a reporting period after this date are rejected.

When the window has closed, the API responds with 422 Unprocessable Entity and a message such as: The deadline for submitting or modifying inventory for April 2026 has passed. Solution providers should surface this error to suppliers so they understand that resubmission is no longer possible for that period.

Inventories for a future reporting month are also rejected with 422 (The inventory date cannot be in the future.).

If a supplier takes no action on a submitted inventory within 45 days, the Performance InCheck is automatically published without requiring explicit supplier approval. This affects how solution providers should design polling and notification logic around submitted inventories awaiting supplier review.

Solution providers do not need to implement custom timeouts or trigger publish themselves — the platform runs a daily job that auto-publishes eligible inventories. Monitor inventory status via the API instead of enforcing your own deadline.

Example request:
curl --request POST \
    "https://staging-api.vm400.consulting1x1.info/api/organisation/1/chemical/inventory/bulk/store" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"inventories\": [
        {
            \"year\": 18,
            \"month\": 12,
            \"submit\": false,
            \"type\": \"delivery\",
            \"products\": [
                {
                    \"chemical_product_id\": 18,
                    \"formulator_name\": \"tziqgenko\",
                    \"name\": \"iusto\",
                    \"weight\": 22
                }
            ]
        }
    ]
}"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/organisation/1/chemical/inventory/bulk/store"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "inventories": [
        {
            "year": 18,
            "month": 12,
            "submit": false,
            "type": "delivery",
            "products": [
                {
                    "chemical_product_id": 18,
                    "formulator_name": "tziqgenko",
                    "name": "iusto",
                    "weight": 22
                }
            ]
        }
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/organisation/{organisation_reference_id}/chemical/inventory/bulk/store

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

organisation_reference_id   integer     

The ID of the organisation reference. Example: 1

Body Parameters

inventories   object[]     
year   integer     

Must be at least 2000. Must not be greater than 2100. Example: 18

month   integer     

Must be at least 1. Must not be greater than 12. Example: 12

submit   boolean  optional    

Example: false

type   string  optional    

Example: delivery

Must be one of:
  • usage
  • delivery
  • unspecified
products   object[]  optional    
chemical_product_id   integer  optional    

This field is required when inventories..products..name or inventories..products..formulator_name is not present. The id of an existing record in the chemical_products table. Example: 18

formulator_name   string  optional    

This field is required when inventories..products..chemical_product_id is not present. Must not be greater than 255 characters. Example: tziqgenko

name   string  optional    

This field is required when inventories..products..chemical_product_id is not present. Example: iusto

weight   number     

Must be at least 0. Example: 22

Index

requires authentication

Show chemical inventories

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/organisation/1/chemical/inventory?per_page=8&filter%5Bsupplier_id%5D=2&filter%5Byear%5D=1&filter%5Bmonth%5D=16&filter%5Bstatus%5D=amet&filter%5Breference_id%5D=vero&sort=year&page=1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/organisation/1/chemical/inventory"
);

const params = {
    "per_page": "8",
    "filter[supplier_id]": "2",
    "filter[year]": "1",
    "filter[month]": "16",
    "filter[status]": "amet",
    "filter[reference_id]": "vero",
    "sort": "year",
    "page": "1",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "id": 1,
            "reference_id": "40-4SLWVAK6HPG-B",
            "submitting_user_id": null,
            "submitting_organisation_id": null,
            "supplier_id": 13680,
            "period": "2019-05-01T00:00:00.000000Z",
            "type": "unspecified",
            "status": "published",
            "auto_published": 0,
            "published_at": "2020-08-07T00:00:00.000000Z",
            "submitted_at": "2020-08-07T00:00:00.000000Z",
            "declined_at": null,
            "declined_reason": null,
            "declined_additional_info": null,
            "created_at": "2026-05-19T08:41:21.000000Z",
            "updated_at": "2026-05-19T09:32:48.000000Z",
            "expected_expiration": "2020-09-20T23:59:59.999999Z",
            "publishable": false,
            "published_inventory": {
                "id": 1,
                "level": {
                    "id": 2,
                    "name": "Level 1",
                    "created_at": "2026-05-08T21:42:24.000000Z",
                    "updated_at": "2026-05-19T11:35:13.000000Z"
                }
            },
            "organisation": {
                "id": 13680,
                "maxio_customer_id": 315360,
                "reference_id": "01-S27UGVEFKZ9-Q",
                "pdc_id": null,
                "gateway_aid": "A419RY42",
                "uuid": "49d6452f-9cce-4ecc-a841-29a69647b810",
                "type_id": 2,
                "status": "approved",
                "name": "Combined Fabrics Ltd",
                "legal_name": "Combined Fabrics Ltd",
                "address_1": "Atta Buksh Road (off Bank Stop) 17 KM Ferozpur Road Lahore",
                "address_2": null,
                "city": "Lahore",
                "state": "Punjab",
                "location": "PK",
                "zip": "54760",
                "phone": "009242111266246",
                "email": "raja.naukhaiz@combinedfabrics.com",
                "contact_first_name": "Waleed Yousaf",
                "contact_last_name": "Butt",
                "website": "https://www.combinedfabrics.com",
                "avatar_url": null,
                "applicant_comment": null,
                "reviewer_comment": null,
                "registration_mail_sent_at": null,
                "created_at": "2018-05-08T06:00:48.000000Z",
                "updated_at": "2026-05-12T15:36:12.000000Z",
                "reviewer_comment_category": null,
                "profile_reviewed_at": null,
                "profile_reviewed_by_user_id": null,
                "location_name": "Pakistan"
            }
        },
        {
            "id": 1,
            "reference_id": "40-4SLWVAK6HPG-B",
            "submitting_user_id": null,
            "submitting_organisation_id": null,
            "supplier_id": 13680,
            "period": "2019-05-01T00:00:00.000000Z",
            "type": "unspecified",
            "status": "published",
            "auto_published": 0,
            "published_at": "2020-08-07T00:00:00.000000Z",
            "submitted_at": "2020-08-07T00:00:00.000000Z",
            "declined_at": null,
            "declined_reason": null,
            "declined_additional_info": null,
            "created_at": "2026-05-19T08:41:21.000000Z",
            "updated_at": "2026-05-19T09:32:48.000000Z",
            "expected_expiration": "2020-09-20T23:59:59.999999Z",
            "publishable": false,
            "published_inventory": {
                "id": 1,
                "level": {
                    "id": 2,
                    "name": "Level 1",
                    "created_at": "2026-05-08T21:42:24.000000Z",
                    "updated_at": "2026-05-19T11:35:13.000000Z"
                }
            },
            "organisation": {
                "id": 13680,
                "maxio_customer_id": 315360,
                "reference_id": "01-S27UGVEFKZ9-Q",
                "pdc_id": null,
                "gateway_aid": "A419RY42",
                "uuid": "49d6452f-9cce-4ecc-a841-29a69647b810",
                "type_id": 2,
                "status": "approved",
                "name": "Combined Fabrics Ltd",
                "legal_name": "Combined Fabrics Ltd",
                "address_1": "Atta Buksh Road (off Bank Stop) 17 KM Ferozpur Road Lahore",
                "address_2": null,
                "city": "Lahore",
                "state": "Punjab",
                "location": "PK",
                "zip": "54760",
                "phone": "009242111266246",
                "email": "raja.naukhaiz@combinedfabrics.com",
                "contact_first_name": "Waleed Yousaf",
                "contact_last_name": "Butt",
                "website": "https://www.combinedfabrics.com",
                "avatar_url": null,
                "applicant_comment": null,
                "reviewer_comment": null,
                "registration_mail_sent_at": null,
                "created_at": "2018-05-08T06:00:48.000000Z",
                "updated_at": "2026-05-12T15:36:12.000000Z",
                "reviewer_comment_category": null,
                "profile_reviewed_at": null,
                "profile_reviewed_by_user_id": null,
                "location_name": "Pakistan"
            }
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "« Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next »",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 100,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/organisation/{organisation_reference_id}/chemical/inventory

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

organisation_reference_id   integer     

The ID of the organisation reference. Example: 1

Query Parameters

per_page   integer  optional    

Number of items to show per page. Defaults to 50 Example: 8

filter[supplier_id]   integer  optional    

Filter column supplier_id by any accepted value. Matches part of the value. Example: 2

filter[year]   integer  optional    

Filter column year by any accepted value. Matches part of the value. Example: 1

filter[month]   integer  optional    

Filter column month by any accepted value. Matches part of the value. Example: 16

filter[status]   string  optional    

Filter column status by any accepted value. Matches part of the value. Example: amet

filter[reference_id]   string  optional    

Filter column reference_id by any accepted value. Matches part of the value. Example: vero

filter[submitting_organisation.name]   string  optional    

Filter column submitting_organisation.name by any accepted value. Matches part of the value. Example: velit

filter[organisations.name]   string  optional    

Filter column organisations.name by any accepted value. Matches part of the value. Example: similique

filter[organisations.reference_id]   string  optional    

Filter column organisations.reference_id by any accepted value. Matches part of the value. Example: amet

filter[incheck_levels.name]   string  optional    

Filter column incheck_levels.name by any accepted value. Matches part of the value. Example: distinctio

sort   string  optional    

sort by any accepted column: year, month, status, reference_id, submitting_organisation_name, incheck_level_name, products_count, organisations.name, organisations.reference_id. prefix a "-" before the column name to sort in descending order Example: year

page   integer  optional    

the page number to show. Example: 1

Store

requires authentication

Store a new chemical inventory

Example request:
curl --request POST \
    "https://staging-api.vm400.consulting1x1.info/api/organisation/1/chemical/inventory" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"year\": 12,
    \"month\": 11,
    \"submit\": false,
    \"type\": \"delivery\"
}"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/organisation/1/chemical/inventory"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "year": 12,
    "month": 11,
    "submit": false,
    "type": "delivery"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/organisation/{organisation_reference_id}/chemical/inventory

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

organisation_reference_id   integer     

The ID of the organisation reference. Example: 1

Body Parameters

year   integer     

Must be at least 2000. Must not be greater than 2100. Example: 12

month   integer     

Must be at least 1. Must not be greater than 12. Example: 11

submit   boolean  optional    

Example: false

type   string  optional    

Example: delivery

Must be one of:
  • usage
  • delivery
  • unspecified

Update

requires authentication

Update an existing chemical inventory

Example request:
curl --request PUT \
    "https://staging-api.vm400.consulting1x1.info/api/organisation/1/chemical/inventory/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"year\": 13,
    \"month\": 12,
    \"submit\": true,
    \"type\": \"usage\"
}"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/organisation/1/chemical/inventory/1"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "year": 13,
    "month": 12,
    "submit": true,
    "type": "usage"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/organisation/{organisation_reference_id}/chemical/inventory/{id}

PATCH api/organisation/{organisation_reference_id}/chemical/inventory/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

organisation_reference_id   integer     

The ID of the organisation reference. Example: 1

id   integer     

The ID of the inventory. Example: 1

Body Parameters

year   integer     

Must be at least 2000. Must not be greater than 2100. Example: 13

month   integer     

Must be at least 1. Must not be greater than 12. Example: 12

submit   boolean  optional    

Example: true

type   string  optional    

Example: usage

Must be one of:
  • usage
  • delivery
  • unspecified

Decline

requires authentication

Decline a chemical inventory

Example request:
curl --request POST \
    "https://staging-api.vm400.consulting1x1.info/api/organisation/1/chemical/inventory/1/decline" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"reason\": \"Data inaccuracy detected\",
    \"additional_info\": \"praesentium\"
}"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/organisation/1/chemical/inventory/1/decline"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "reason": "Data inaccuracy detected",
    "additional_info": "praesentium"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/organisation/{organisation_reference_id}/chemical/inventory/{inventory_id}/decline

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

organisation_reference_id   integer     

The ID of the organisation reference. Example: 1

inventory_id   integer     

The ID of the inventory. Example: 1

Body Parameters

reason   string     

Example: Data inaccuracy detected

Must be one of:
  • Data inaccuracy detected
  • Incomplete product information
  • Non-compliance with MRSL requirements
  • Missing supporting documentation
  • Duplicate submission
  • Out of reporting period scope
  • Other (please specify below)
additional_info   string  optional    

Example: praesentium

Publish

requires authentication

Publish a chemical inventory. Only one report can be published per month. Higher-level reports can upgrade (replace) lower-level published reports.

Example request:
curl --request POST \
    "https://staging-api.vm400.consulting1x1.info/api/organisation/1/chemical/inventory/1/publish" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/organisation/1/chemical/inventory/1/publish"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/organisation/{organisation_reference_id}/chemical/inventory/{inventory_id}/publish

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

organisation_reference_id   integer     

The ID of the organisation reference. Example: 1

inventory_id   integer     

The ID of the inventory. Example: 1

Inventory Product

Index

requires authentication

List all products of a given inventory

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/organisation/1/chemical/inventory/doloribus/product?per_page=4&search=soluta&page=1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/organisation/1/chemical/inventory/doloribus/product"
);

const params = {
    "per_page": "4",
    "search": "soluta",
    "page": "1",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "id": 1,
            "supplier_chemical_inventory_id": 1,
            "chemical_product_id": null,
            "formulator_name": "",
            "weight": 0,
            "name": "[No product name] #584543",
            "created_at": "2026-05-19T08:41:21.000000Z",
            "updated_at": "2026-05-19T08:41:21.000000Z",
            "original_product": null
        },
        {
            "id": 1,
            "supplier_chemical_inventory_id": 1,
            "chemical_product_id": null,
            "formulator_name": "",
            "weight": 0,
            "name": "[No product name] #584543",
            "created_at": "2026-05-19T08:41:21.000000Z",
            "updated_at": "2026-05-19T08:41:21.000000Z",
            "original_product": null
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "« Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next »",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 100,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/organisation/{organisation_reference_id}/chemical/inventory/{supplier_inventory_id}/product

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

organisation_reference_id   integer     

The ID of the organisation reference. Example: 1

supplier_inventory_id   string     

The ID of the supplier inventory. Example: doloribus

Query Parameters

per_page   integer  optional    

Number of items to show per page. Defaults to 50 Example: 4

search   string  optional    

Search in all of these columns: name Example: soluta

page   integer  optional    

the page number to show. Example: 1

Store

requires authentication

Store a custom product

Example request:
curl --request POST \
    "https://staging-api.vm400.consulting1x1.info/api/organisation/1/chemical/inventory/nesciunt/product" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"chemical_product_id\": 1,
    \"formulator_name\": \"hwxagvsclksafzoslbjefe\",
    \"name\": \"dicta\",
    \"weight\": 63
}"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/organisation/1/chemical/inventory/nesciunt/product"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "chemical_product_id": 1,
    "formulator_name": "hwxagvsclksafzoslbjefe",
    "name": "dicta",
    "weight": 63
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/organisation/{organisation_reference_id}/chemical/inventory/{supplier_inventory_id}/product

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

organisation_reference_id   integer     

The ID of the organisation reference. Example: 1

supplier_inventory_id   string     

The ID of the supplier inventory. Example: nesciunt

Body Parameters

chemical_product_id   integer  optional    

This field is required when name or formulator_name is not present. The id of an existing record in the chemical_products table. Example: 1

formulator_name   string  optional    

This field is required when chemical_product_id is not present. Must not be greater than 255 characters. Example: hwxagvsclksafzoslbjefe

name   string  optional    

This field is required when chemical_product_id is not present. Example: dicta

weight   number     

Numeric weight. Must be zero or greater, with at most 2 decimal places (e.g. 1.5, 10, 0.25). Must be at least 0. Example: 63

Update

requires authentication

Update a custom product

Example request:
curl --request PUT \
    "https://staging-api.vm400.consulting1x1.info/api/organisation/1/chemical/inventory/magnam/product/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"chemical_product_id\": 6,
    \"formulator_name\": \"ghydk\",
    \"name\": \"sed\",
    \"weight\": 26
}"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/organisation/1/chemical/inventory/magnam/product/1"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "chemical_product_id": 6,
    "formulator_name": "ghydk",
    "name": "sed",
    "weight": 26
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/organisation/{organisation_reference_id}/chemical/inventory/{supplier_inventory_id}/product/{id}

PATCH api/organisation/{organisation_reference_id}/chemical/inventory/{supplier_inventory_id}/product/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

organisation_reference_id   integer     

The ID of the organisation reference. Example: 1

supplier_inventory_id   string     

The ID of the supplier inventory. Example: magnam

id   integer     

The ID of the product. Example: 1

Body Parameters

chemical_product_id   integer  optional    

This field is required when name or formulator_name is not present. The id of an existing record in the chemical_products table. Example: 6

formulator_name   string  optional    

This field is required when chemical_product_id is not present. Must not be greater than 255 characters. Example: ghydk

name   string  optional    

This field is required when chemical_product_id is not present. Example: sed

weight   number     

Numeric weight. Must be zero or greater, with at most 2 decimal places (e.g. 1.5, 10, 0.25). Must be at least 0. Example: 26

Destroy

requires authentication

Destroy a custom product

Example request:
curl --request DELETE \
    "https://staging-api.vm400.consulting1x1.info/api/organisation/1/chemical/inventory/nobis/product/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/organisation/1/chemical/inventory/nobis/product/1"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/organisation/{organisation_reference_id}/chemical/inventory/{supplier_inventory_id}/product/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

organisation_reference_id   integer     

The ID of the organisation reference. Example: 1

supplier_inventory_id   string     

The ID of the supplier inventory. Example: nobis

id   integer     

The ID of the product. Example: 1

Product

Index

requires authentication

Get Products

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/organisation/1/chemical/product?per_page=19&page=1&filter%5Bconformance_level_id%5D=6&filter%5Bctz_level_id%5D=20&search=quia&sort=chemical_products.id&column=chemical_products.id" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"filter\": {
        \"name\": \"vejltcdphalhrehkhl\",
        \"organisations__dot__wqZgUq29VtuwJcpbname\": \"vciuabomwuygrpmrgiowdozlieapdoyypmhoufnspfrhqdmucejnfsnvheouzcuhvjrcbkbmexjyrahpw\"
    },
    \"search\": \"zejskefvuzdgtbggalfxxscoibancpyixzsucqwppvilishjhgyfeydg\"
}"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/organisation/1/chemical/product"
);

const params = {
    "per_page": "19",
    "page": "1",
    "filter[conformance_level_id]": "6",
    "filter[ctz_level_id]": "20",
    "search": "quia",
    "sort": "chemical_products.id",
    "column": "chemical_products.id",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "filter": {
        "name": "vejltcdphalhrehkhl",
        "organisations__dot__wqZgUq29VtuwJcpbname": "vciuabomwuygrpmrgiowdozlieapdoyypmhoufnspfrhqdmucejnfsnvheouzcuhvjrcbkbmexjyrahpw"
    },
    "search": "zejskefvuzdgtbggalfxxscoibancpyixzsucqwppvilishjhgyfeydg"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "id": 1,
            "reference_id": "20-Z4289ZZUE9-W",
            "organisation_id": 5905,
            "zdhc_pid": 367089,
            "name": "A-POLE G-2 [P214AG76]",
            "version": 1,
            "description": null,
            "alternate_names": [
                "P214AG76"
            ],
            "conformance_level_id": null,
            "ctz_level_id": null,
            "status": "DRAFT",
            "sds_url": null,
            "website_url": null,
            "created_at": "2017-10-06T00:00:00.000000Z",
            "updated_at": "2023-02-28T00:00:00.000000Z",
            "technical_data_sheet_url": "",
            "conformance_level": null,
            "ctz_level": null
        },
        {
            "id": 1,
            "reference_id": "20-Z4289ZZUE9-W",
            "organisation_id": 5905,
            "zdhc_pid": 367089,
            "name": "A-POLE G-2 [P214AG76]",
            "version": 1,
            "description": null,
            "alternate_names": [
                "P214AG76"
            ],
            "conformance_level_id": null,
            "ctz_level_id": null,
            "status": "DRAFT",
            "sds_url": null,
            "website_url": null,
            "created_at": "2017-10-06T00:00:00.000000Z",
            "updated_at": "2023-02-28T00:00:00.000000Z",
            "technical_data_sheet_url": "",
            "conformance_level": null,
            "ctz_level": null
        }
    ]
}
 

Request      

GET api/organisation/{organisation_reference_id}/chemical/product

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

organisation_reference_id   integer     

The ID of the organisation reference. Example: 1

Query Parameters

per_page   integer  optional    

Number of items to show per page. Defaults to 100 Example: 19

page   integer  optional    

the page number to show. Example: 1

filter[chemical_products.name]   string  optional    

Filter column chemical_products.name by any accepted value. Filter by name Example: est

filter[chemical_products.zdhc_pid]   integer  optional    

Filter column chemical_products.zdhc_pid by any accepted value. Filter by ZDHC PID Example: 10

filter[chemical_products.status]   string  optional    

Filter column chemical_products.status by any accepted value. Filter by status Example: commodi

filter[organisations.name]   string  optional    

Filter column organisations.name by any accepted value. Filter by organisation name Example: libero

filter[conformance_level_id]   integer  optional    

Filter column conformance_level_id by any accepted value. Filter by conformance level IDs Example: 6

filter[ctz_level_id]   integer  optional    

Filter column ctz_level_id by any accepted value. Filter by CTZ level IDs Example: 20

filter[chemical_products.created_at]   datetime  optional    

Filter column chemical_products.created_at by any accepted value. Filter by created date Example: deleniti

filter[chemical_products.updated_at]   datetime  optional    

Filter column chemical_products.updated_at by any accepted value. Filter by updated date Example: sunt

filter[product_use_types.id]   integer  optional    

Filter column product_use_types.id by any accepted value. Filter by use type ID (multiple selection allowed) Example: 17

filter[product_categories.id]   integer  optional    

Filter column product_categories.id by any accepted value. Filter by use type category ID (multiple selection allowed) Example: 14

filter[organisations.reference_id]   string  optional    

Filter column organisations.reference_id by any accepted value. Filter by organisation reference ID Example: ipsum

search   string  optional    

Search in all of these columns: chemical_products.name, chemical_products.alternate_names, chemical_products.zdhc_pid, organisations.reference_id, organisations.name Example: quia

sort   string  optional    

sort by any accepted column: chemical_products.id, chemical_products.name, chemical_products.version, chemical_products.status, chemical_products.zdhc_pid, conformance_level_name, ctz_level_name, organisation_reference_id, organisation_name, chemical_products.created_at, chemical_products.updated_at. prefix a "-" before the column name to sort in descending order Example: chemical_products.id

column   string  optional    

get a distinct list of filterable values for any of the columns: chemical_products.id, chemical_products.name, chemical_products.version, chemical_products.status, ctz_level_name, conformance_level_name, organisation_reference_id, organisation_name, chemical_products.created_at, chemical_products.updated_at. Example: chemical_products.id

Body Parameters

filter   object  optional    
name   string  optional    

Must be at least 4 characters. Example: vejltcdphalhrehkhl

organisations__dot__wqZgUq29VtuwJcpbname   string  optional    

Must be at least 4 characters. Example: vciuabomwuygrpmrgiowdozlieapdoyypmhoufnspfrhqdmucejnfsnvheouzcuhvjrcbkbmexjyrahpw

search   string  optional    

Must be at least 4 characters. Example: zejskefvuzdgtbggalfxxscoibancpyixzsucqwppvilishjhgyfeydg

Show

requires authentication

Show a product

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/organisation/1/chemical/product/quisquam" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/organisation/1/chemical/product/quisquam"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": {
        "id": 1,
        "reference_id": "20-Z4289ZZUE9-W",
        "organisation_id": 5905,
        "zdhc_pid": 367089,
        "name": "A-POLE G-2 [P214AG76]",
        "version": 1,
        "description": null,
        "alternate_names": [
            "P214AG76"
        ],
        "conformance_level_id": null,
        "ctz_level_id": null,
        "status": "DRAFT",
        "sds_url": null,
        "website_url": null,
        "created_at": "2017-10-06T00:00:00.000000Z",
        "updated_at": "2023-02-28T00:00:00.000000Z",
        "technical_data_sheet_url": "",
        "organisation": {
            "id": 5905,
            "reference_id": "01-3SRBVESEWXG-W",
            "type_id": 6,
            "name": "Nicca Chemical Co., Ltd.",
            "address_1": "4-23-1 Bunkyo",
            "address_2": null,
            "city": "Fukui",
            "state": "Fukui",
            "location": "JP",
            "zip": "910-8670",
            "phone": "+81-776-25-8646",
            "email": "zdhc@niccachemical.com",
            "website": "https://nctexchem.com",
            "avatar_url": null,
            "location_name": "Japan"
        },
        "conformance_level": null,
        "ctz_level": null,
        "highest_mrsl_certification": null,
        "highest_ctz_certification": null,
        "certification_body_assignments": [],
        "safety_data_sheets": [
            {
                "id": 91697,
                "file_name": "A-POLE G-2 20170830.pdf",
                "mime_type": "application/octet-stream",
                "file_size": "0",
                "locale": "en",
                "version": 1,
                "chemical_product_id": 1,
                "organisation_id": 5905,
                "created_at": "2017-10-06T05:21:29.000000Z",
                "updated_at": "2018-09-03T04:45:46.000000Z",
                "file_url": "",
                "chemical_product": {
                    "id": 1,
                    "reference_id": "20-Z4289ZZUE9-W",
                    "organisation_id": 5905,
                    "zdhc_pid": 367089,
                    "name": "A-POLE G-2 [P214AG76]",
                    "version": 1,
                    "description": null,
                    "alternate_names": [
                        "P214AG76"
                    ],
                    "conformance_level_id": null,
                    "ctz_level_id": null,
                    "status": "DRAFT",
                    "sds_url": null,
                    "website_url": null,
                    "created_at": "2017-10-06T00:00:00.000000Z",
                    "updated_at": "2023-02-28T00:00:00.000000Z",
                    "technical_data_sheet_url": ""
                }
            }
        ],
        "certified_safety_data_sheets": [],
        "use_types": [
            {
                "id": 264,
                "name": "Softening agents",
                "is_inactive": 0,
                "created_at": "2026-05-08T21:42:47.000000Z",
                "updated_at": "2026-05-08T21:42:47.000000Z",
                "pivot": {
                    "chemical_product_id": 1,
                    "product_use_type_id": 264,
                    "id": 31058
                },
                "categories": [
                    {
                        "id": 2,
                        "name": "Textile Finishing Assistants",
                        "is_inactive": 0,
                        "created_at": "2026-05-08T21:42:46.000000Z",
                        "updated_at": "2026-05-08T21:42:46.000000Z",
                        "pivot": {
                            "product_use_type_id": 264,
                            "product_category_id": 2
                        },
                        "substrates": [
                            {
                                "id": 2,
                                "name": "Textile",
                                "is_inactive": 0,
                                "created_at": "2026-05-08T21:42:46.000000Z",
                                "updated_at": "2026-05-08T21:42:46.000000Z",
                                "pivot": {
                                    "product_category_id": 2,
                                    "product_substrate_id": 2
                                }
                            }
                        ]
                    },
                    {
                        "id": 62,
                        "name": "Finishing Assistants",
                        "is_inactive": 0,
                        "created_at": "2026-05-10T02:33:42.000000Z",
                        "updated_at": "2026-05-10T02:33:42.000000Z",
                        "pivot": {
                            "product_use_type_id": 264,
                            "product_category_id": 62
                        },
                        "substrates": []
                    }
                ]
            }
        ],
        "activity_logs": []
    }
}
 

Request      

GET api/organisation/{organisation_reference_id}/chemical/product/{reference_id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

organisation_reference_id   integer     

The ID of the organisation reference. Example: 1

reference_id   string     

The ID of the reference. Example: quisquam

InCheck

Inventory

Eligable Suppliers

requires authentication

Show all eligable suppliers for a given Solution Provider

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/inventory/eligable-suppliers?page=1&per_page=15" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/inventory/eligable-suppliers"
);

const params = {
    "page": "1",
    "per_page": "15",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": {
        "id": 1,
        "reference_id": "01-J4CGS34JUJV-Q",
        "name": "Ping Yang Pengye Shoes Com Ltd"
    }
}
 

Request      

GET api/inventory/eligable-suppliers

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 50 Example: 15

Activity Logs

Index

requires authentication

Get all activity logs for an incheck organisation

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/incheck/molestiae/activity-logs?sort=created_at&filter%5Baction_type%5D=sint&filter%5Buser_name%5D=error&column=context-%3Ecreated_at&search=vitae&page=1&per_page=8" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/incheck/molestiae/activity-logs"
);

const params = {
    "sort": "created_at",
    "filter[action_type]": "sint",
    "filter[user_name]": "error",
    "column": "context->created_at",
    "search": "vitae",
    "page": "1",
    "per_page": "8",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "id": 1,
            "channel": "organisation",
            "level": "INFO",
            "message": "[created] App\\Models\\Organisation",
            "context": {
                "ip": "127.0.0.1",
                "auth_id": null,
                "changes": {
                    "id": 19424,
                    "zip": "12345",
                    "city": "Invited city",
                    "name": "Bureau Veritas",
                    "uuid": "a1bbba2d-02f0-435e-bcc2-da28195fb810",
                    "email": "invited@localhost",
                    "phone": "+1234567890",
                    "state": "Invited state",
                    "status": "approved",
                    "type_id": 9,
                    "website": "https://invited.com",
                    "location": "US",
                    "address_1": "Invited street 1",
                    "address_2": "Invited street 2",
                    "legal_name": "Invited company",
                    "reference_id": "01-TMERKB8EK4F-M",
                    "contact_last_name": "Organisation",
                    "contact_first_name": "Invited",
                    "profile_reviewed_at": {
                        "date": "1987-09-15 21:19:59.000000",
                        "timezone": "UTC",
                        "timezone_type": 3
                    },
                    "registration_mail_sent_at": {
                        "date": "1989-11-09 04:04:34.000000",
                        "timezone": "UTC",
                        "timezone_type": 3
                    }
                },
                "context": {
                    "url": "console",
                    "user": "unauthenticated",
                    "user_role": "unauthenticated"
                },
                "endpoint": "console",
                "auth_mail": null,
                "action_type": "created",
                "organisation_id": 19424,
                "organisation_reference_id": "01-TMERKB8EK4F-M"
            },
            "created_at": "2026-05-08 21:42:24",
            "deleted_at": null
        },
        {
            "id": 1,
            "channel": "organisation",
            "level": "INFO",
            "message": "[created] App\\Models\\Organisation",
            "context": {
                "ip": "127.0.0.1",
                "auth_id": null,
                "changes": {
                    "id": 19424,
                    "zip": "12345",
                    "city": "Invited city",
                    "name": "Bureau Veritas",
                    "uuid": "a1bbba2d-02f0-435e-bcc2-da28195fb810",
                    "email": "invited@localhost",
                    "phone": "+1234567890",
                    "state": "Invited state",
                    "status": "approved",
                    "type_id": 9,
                    "website": "https://invited.com",
                    "location": "US",
                    "address_1": "Invited street 1",
                    "address_2": "Invited street 2",
                    "legal_name": "Invited company",
                    "reference_id": "01-TMERKB8EK4F-M",
                    "contact_last_name": "Organisation",
                    "contact_first_name": "Invited",
                    "profile_reviewed_at": {
                        "date": "1987-09-15 21:19:59.000000",
                        "timezone": "UTC",
                        "timezone_type": 3
                    },
                    "registration_mail_sent_at": {
                        "date": "1989-11-09 04:04:34.000000",
                        "timezone": "UTC",
                        "timezone_type": 3
                    }
                },
                "context": {
                    "url": "console",
                    "user": "unauthenticated",
                    "user_role": "unauthenticated"
                },
                "endpoint": "console",
                "auth_mail": null,
                "action_type": "created",
                "organisation_id": 19424,
                "organisation_reference_id": "01-TMERKB8EK4F-M"
            },
            "created_at": "2026-05-08 21:42:24",
            "deleted_at": null
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "« Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next »",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 100,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/incheck/{organisation_reference_id}/activity-logs

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

organisation_reference_id   string     

The ID of the organisation reference. Example: molestiae

Query Parameters

sort   string  optional    

sort by any accepted column: created_at, action_type, user_name, message. prefix a "-" before the column name to sort in descending order Example: created_at

filter[action_type]   string  optional    

Filter column action_type by any accepted value. Action type Example: sint

filter[user_name]   string  optional    

Filter column user_name by any accepted value. name of the user initiating the action Example: error

column   string  optional    

get a distinct list of filterable values for any of the columns: context->created_at, context->action_type, context->user_name, context->organisation_id, context->message. Example: context->created_at

search   string  optional    

Search in all of these columns: message Example: vitae

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 100 Example: 8

Index

requires authentication

Get all activity logs for a solution provider organisation

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/incheck/quam/solution-provider/activity-logs" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/incheck/quam/solution-provider/activity-logs"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "id": 1,
            "channel": "organisation",
            "level": "INFO",
            "message": "[created] App\\Models\\Organisation",
            "context": {
                "ip": "127.0.0.1",
                "auth_id": null,
                "changes": {
                    "id": 19424,
                    "zip": "12345",
                    "city": "Invited city",
                    "name": "Bureau Veritas",
                    "uuid": "a1bbba2d-02f0-435e-bcc2-da28195fb810",
                    "email": "invited@localhost",
                    "phone": "+1234567890",
                    "state": "Invited state",
                    "status": "approved",
                    "type_id": 9,
                    "website": "https://invited.com",
                    "location": "US",
                    "address_1": "Invited street 1",
                    "address_2": "Invited street 2",
                    "legal_name": "Invited company",
                    "reference_id": "01-TMERKB8EK4F-M",
                    "contact_last_name": "Organisation",
                    "contact_first_name": "Invited",
                    "profile_reviewed_at": {
                        "date": "1987-09-15 21:19:59.000000",
                        "timezone": "UTC",
                        "timezone_type": 3
                    },
                    "registration_mail_sent_at": {
                        "date": "1989-11-09 04:04:34.000000",
                        "timezone": "UTC",
                        "timezone_type": 3
                    }
                },
                "context": {
                    "url": "console",
                    "user": "unauthenticated",
                    "user_role": "unauthenticated"
                },
                "endpoint": "console",
                "auth_mail": null,
                "action_type": "created",
                "organisation_id": 19424,
                "organisation_reference_id": "01-TMERKB8EK4F-M"
            },
            "created_at": "2026-05-08 21:42:24",
            "deleted_at": null
        },
        {
            "id": 1,
            "channel": "organisation",
            "level": "INFO",
            "message": "[created] App\\Models\\Organisation",
            "context": {
                "ip": "127.0.0.1",
                "auth_id": null,
                "changes": {
                    "id": 19424,
                    "zip": "12345",
                    "city": "Invited city",
                    "name": "Bureau Veritas",
                    "uuid": "a1bbba2d-02f0-435e-bcc2-da28195fb810",
                    "email": "invited@localhost",
                    "phone": "+1234567890",
                    "state": "Invited state",
                    "status": "approved",
                    "type_id": 9,
                    "website": "https://invited.com",
                    "location": "US",
                    "address_1": "Invited street 1",
                    "address_2": "Invited street 2",
                    "legal_name": "Invited company",
                    "reference_id": "01-TMERKB8EK4F-M",
                    "contact_last_name": "Organisation",
                    "contact_first_name": "Invited",
                    "profile_reviewed_at": {
                        "date": "1987-09-15 21:19:59.000000",
                        "timezone": "UTC",
                        "timezone_type": 3
                    },
                    "registration_mail_sent_at": {
                        "date": "1989-11-09 04:04:34.000000",
                        "timezone": "UTC",
                        "timezone_type": 3
                    }
                },
                "context": {
                    "url": "console",
                    "user": "unauthenticated",
                    "user_role": "unauthenticated"
                },
                "endpoint": "console",
                "auth_mail": null,
                "action_type": "created",
                "organisation_id": 19424,
                "organisation_reference_id": "01-TMERKB8EK4F-M"
            },
            "created_at": "2026-05-08 21:42:24",
            "deleted_at": null
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "« Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next »",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 100,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/incheck/{organisation_reference_id}/solution-provider/activity-logs

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

organisation_reference_id   string     

The ID of the organisation reference. Example: quam

Level

Index

requires authentication

List InCheck levels

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/incheck/level" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/incheck/level"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 90
x-ratelimit-remaining: 89
vary: Origin
 

[
    {
        "id": 2,
        "name": "Level 1",
        "created_at": "2026-05-08T21:42:24.000000Z",
        "updated_at": "2026-05-19T11:35:13.000000Z"
    },
    {
        "id": 3,
        "name": "Level 0",
        "created_at": "2026-05-21T16:13:40.000000Z",
        "updated_at": "2026-05-21T16:13:40.000000Z"
    }
]
 

Request      

GET api/incheck/level

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Subscriptions

Store

requires authentication

Create a new subscription for a supplier

Example request:
curl --request POST \
    "https://staging-api.vm400.consulting1x1.info/api/incheck/culpa/subscriptions/quam" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"voucher_code\": \"izsivvvnu\"
}"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/incheck/culpa/subscriptions/quam"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "voucher_code": "izsivvvnu"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (400):


ValidationError
 

Example response (404):


CouponNotFound
 

Example response (409):


SubscriptionAlreadyActive
 

Example response (409):


SubscriptionPendingPayment
 

Request      

POST api/incheck/{organisation_reference_id}/subscriptions/{supplier_reference_id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

organisation_reference_id   string     

The ID of the organisation reference. Example: culpa

supplier_reference_id   string     

The ID of the supplier reference. Example: quam

Body Parameters

voucher_code   string     

Must not be greater than 255 characters. Example: izsivvvnu

Show

requires authentication

Show the subscription for a supplier

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/incheck/dolorem/subscriptions/quo" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/incheck/dolorem/subscriptions/quo"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": {
        "subscriptionId": 374452,
        "supplierId": 1,
        "status": "active",
        "reportingAllowed": true,
        "startDate": "2027-05-05T13:47:05.000000Z",
        "expiryDate": "2028-05-05T13:47:05.000000Z"
    }
}
 

Request      

GET api/incheck/{organisation_reference_id}/subscriptions/{supplier_reference_id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

organisation_reference_id   string     

The ID of the organisation reference. Example: dolorem

supplier_reference_id   string     

The ID of the supplier reference. Example: quo

Reports

Index

requires authentication

Get all incheck reports for an organisation

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/incheck/quas/reports" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/incheck/quas/reports"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "id": 1,
            "reference_id": "48-9PZFTPBB778A-T",
            "legacy_report_id": 169838,
            "supplier_id": 15699,
            "status": "reports_selected",
            "verified_at": null,
            "closed_at": null,
            "created_at": "2025-11-12T00:00:00.000000Z",
            "updated_at": "2026-05-21T15:35:21.000000Z",
            "legacy_external_id": "0RTCG9F7-11122025",
            "solution_provider_organisation_id": 19424,
            "inventory_type": "Usage",
            "reporting_month": 10,
            "reporting_year": 2025,
            "incheck_level_id": 2
        },
        {
            "id": 1,
            "reference_id": "48-9PZFTPBB778A-T",
            "legacy_report_id": 169838,
            "supplier_id": 15699,
            "status": "reports_selected",
            "verified_at": null,
            "closed_at": null,
            "created_at": "2025-11-12T00:00:00.000000Z",
            "updated_at": "2026-05-21T15:35:21.000000Z",
            "legacy_external_id": "0RTCG9F7-11122025",
            "solution_provider_organisation_id": 19424,
            "inventory_type": "Usage",
            "reporting_month": 10,
            "reporting_year": 2025,
            "incheck_level_id": 2
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "« Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next »",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 100,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/incheck/{organisation_reference_id}/reports

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

organisation_reference_id   string     

The ID of the organisation reference. Example: quas

Show

requires authentication

Show an incheck report

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/incheck/quia/reports/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/incheck/quia/reports/1"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": {
        "id": 1,
        "reference_id": "48-9PZFTPBB778A-T",
        "legacy_report_id": 169838,
        "supplier_id": 15699,
        "status": "reports_selected",
        "verified_at": null,
        "closed_at": null,
        "created_at": "2025-11-12T00:00:00.000000Z",
        "updated_at": "2026-05-21T15:35:21.000000Z",
        "legacy_external_id": "0RTCG9F7-11122025",
        "solution_provider_organisation_id": 19424,
        "inventory_type": "Usage",
        "reporting_month": 10,
        "reporting_year": 2025,
        "incheck_level_id": 2
    }
}
 

Request      

GET api/incheck/{organisation_reference_id}/reports/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

organisation_reference_id   string     

The ID of the organisation reference. Example: quia

id   integer     

The ID of the report. Example: 1

Store

requires authentication

Create a new incheck report

Example request:
curl --request POST \
    "https://staging-api.vm400.consulting1x1.info/api/incheck/et/reports" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/incheck/et/reports"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Example response (201):


{
    "data": {
        "id": 1,
        "reference_id": "48-9PZFTPBB778A-T",
        "legacy_report_id": 169838,
        "supplier_id": 15699,
        "status": "reports_selected",
        "verified_at": null,
        "closed_at": null,
        "created_at": "2025-11-12T00:00:00.000000Z",
        "updated_at": "2026-05-21T15:35:21.000000Z",
        "legacy_external_id": "0RTCG9F7-11122025",
        "solution_provider_organisation_id": 19424,
        "inventory_type": "Usage",
        "reporting_month": 10,
        "reporting_year": 2025,
        "incheck_level_id": 2
    },
    "message": "InCheck report created successfully"
}
 

Request      

POST api/incheck/{organisation_reference_id}/reports

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

organisation_reference_id   string     

The ID of the organisation reference. Example: et

Update

requires authentication

Update an incheck report

Example request:
curl --request PUT \
    "https://staging-api.vm400.consulting1x1.info/api/incheck/est/reports/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"close\": false
}"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/incheck/est/reports/1"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "close": false
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/incheck/{organisation_reference_id}/reports/{id}

PATCH api/incheck/{organisation_reference_id}/reports/{id}

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

organisation_reference_id   string     

The ID of the organisation reference. Example: est

id   integer     

The ID of the report. Example: 1

Body Parameters

close   boolean  optional    

Example: false

Report Inventories

Index

requires authentication

Get all eligabile inventories for an incheck report. Usually last 12 months.

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/incheck/dolore/reports/1/inventories" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/incheck/dolore/reports/1/inventories"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "id": 1,
            "reference_id": "40-4SLWVAK6HPG-B",
            "submitting_user_id": null,
            "submitting_organisation_id": null,
            "supplier_id": 13680,
            "period": "2019-05-01T00:00:00.000000Z",
            "type": "unspecified",
            "status": "published",
            "auto_published": 0,
            "published_at": "2020-08-07T00:00:00.000000Z",
            "submitted_at": "2020-08-07T00:00:00.000000Z",
            "declined_at": null,
            "declined_reason": null,
            "declined_additional_info": null,
            "created_at": "2026-05-19T08:41:21.000000Z",
            "updated_at": "2026-05-19T09:32:48.000000Z",
            "expected_expiration": "2020-09-20T23:59:59.999999Z",
            "publishable": false,
            "published_inventory": {
                "id": 1,
                "level": {
                    "id": 2,
                    "name": "Level 1",
                    "created_at": "2026-05-08T21:42:24.000000Z",
                    "updated_at": "2026-05-19T11:35:13.000000Z"
                }
            }
        },
        {
            "id": 1,
            "reference_id": "40-4SLWVAK6HPG-B",
            "submitting_user_id": null,
            "submitting_organisation_id": null,
            "supplier_id": 13680,
            "period": "2019-05-01T00:00:00.000000Z",
            "type": "unspecified",
            "status": "published",
            "auto_published": 0,
            "published_at": "2020-08-07T00:00:00.000000Z",
            "submitted_at": "2020-08-07T00:00:00.000000Z",
            "declined_at": null,
            "declined_reason": null,
            "declined_additional_info": null,
            "created_at": "2026-05-19T08:41:21.000000Z",
            "updated_at": "2026-05-19T09:32:48.000000Z",
            "expected_expiration": "2020-09-20T23:59:59.999999Z",
            "publishable": false,
            "published_inventory": {
                "id": 1,
                "level": {
                    "id": 2,
                    "name": "Level 1",
                    "created_at": "2026-05-08T21:42:24.000000Z",
                    "updated_at": "2026-05-19T11:35:13.000000Z"
                }
            }
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "« Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next »",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 100,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/incheck/{organisation_reference_id}/reports/{report_id}/inventories

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

organisation_reference_id   string     

The ID of the organisation reference. Example: dolore

report_id   integer     

The ID of the report. Example: 1

Bind

requires authentication

Bind inventories to an incheck report.

Example request:
curl --request POST \
    "https://staging-api.vm400.consulting1x1.info/api/incheck/magnam/reports/1/inventories" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"inventory_ids\": [
        18
    ]
}"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/incheck/magnam/reports/1/inventories"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "inventory_ids": [
        18
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/incheck/{organisation_reference_id}/reports/{report_id}/inventories

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

organisation_reference_id   string     

The ID of the organisation reference. Example: magnam

report_id   integer     

The ID of the report. Example: 1

Body Parameters

inventory_ids   integer[]     

Verified InCheck Report PDF

Show

requires authentication

Show the verified incheck report as a pdf

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/organisation/1/incheck/reports/aut/verified-incheck-report-pdf" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/organisation/1/incheck/reports/aut/verified-incheck-report-pdf"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


content of the pdf
 

Request      

GET api/organisation/{organisation_reference_id}/incheck/reports/{report_reference_id}/verified-incheck-report-pdf

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

organisation_reference_id   integer     

The ID of the organisation reference. Example: 1

report_reference_id   string     

The ID of the report reference. Example: aut