UiPath Documentation
industry-department-solutions
latest
false
  • Overview
    • Introduction
    • Getting Started
    • API Guide
    • Customizations
    • Data Onboarding Checklist
  • API Resources
UiPath logo, featuring letters U and I in white

Supply Chain & Retail Solutions API guide

Last updated Apr 16, 2026

Getting Started

Prerequisites

UiPath's Supply Chain & Retail Solutions should already have the API end points ready for you to ingest data. If this is not the case please submit a support ticket.

Creating an authorization token

To submit data via the ingestion API an authorization token must be created. To do this:

  1. Log in to your organization.

  2. Click your icon in the lower-left corner, and select Access Tokens.

    Access Tokens

  3. Select GENERATE TOKEN.

  4. Create a Personal Access Token (PAT) and save the generated token into your environment.

    Generate Token

Using the API

This section describes how to upload data to a single object within the data warehouse. For guidance on the data required by the API, including supported fields and formats, see the API Resources section.

Ingesting Objects

All ingestion requests follow this pattern:

POST https://service.peak.ai/ingestion-api/api/v2/objects/{prefix}{OBJECT_NAME}{suffix}
POST https://service.peak.ai/ingestion-api/api/v2/objects/{prefix}{OBJECT_NAME}{suffix}

Where:

  • {prefix} - Solution-specific prefix (e.g., QP_)
  • {OBJECT_NAME} - Object name as defined in your data model (e.g., PRODUCTS)
  • {suffix} - Solution-specific suffix (e.g., _OOTB)

Example Request

curl -X POST \
  'https://service.peak.ai/ingestion-api/api/v2/object/QP_PRODUCTS_OOTB' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "solutionName": "QP_OOTB",
    "data": [
      {
        "PRODUCT_ID": "PROD-001",
        "UPDATED_AT": "2024-01-15 10:30:00",
        "BESPOKE_PRODUCT": false,
        "PRODUCT_NAME": "Industrial Steel Beam",
        "PRODUCT_CATEGORY": "Construction",
        "PRODUCT_SUBCATEGORY": "Structural"
      }
    ],
    "operationType": "UPSERT"
  }'
curl -X POST \
  'https://service.peak.ai/ingestion-api/api/v2/object/QP_PRODUCTS_OOTB' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "solutionName": "QP_OOTB",
    "data": [
      {
        "PRODUCT_ID": "PROD-001",
        "UPDATED_AT": "2024-01-15 10:30:00",
        "BESPOKE_PRODUCT": false,
        "PRODUCT_NAME": "Industrial Steel Beam",
        "PRODUCT_CATEGORY": "Construction",
        "PRODUCT_SUBCATEGORY": "Structural"
      }
    ],
    "operationType": "UPSERT"
  }'

Request Components

Headers:

  • Authorization - Your Personal Access Token (PAT) from platform.peak.ai
  • Content-Type: application/json - Required for JSON payloads

Payload:

  • solutionName - Matches your solution configuration (e.g., QP_OOTB)
  • data - Array of records to ingest (can contain multiple records)
  • operationType - Operation type for data ingestion:
    • UPSERT - Insert new records or update existing ones based on primary key
    • APPEND - Insert new records only (does not update existing records)

Response

Success (200 OK):

{
  "message": "Data ingested successfully",
  "recordsProcessed": 1
}
{
  "message": "Data ingested successfully",
  "recordsProcessed": 1
}

Error (4xx/5xx):

When validation fails, the response contains a structured list of errors. Each error includes a code, the affected field, severity, category, and a human-readable message. See the API Guide for the full list of error codes and their meanings.

{
  "errors": [
    {
      "code": "DI_E_23N01",
      "field": "product_id",
      "severity": "ERROR",
      "category": "BUSINESS",
      "message": "field is required",
      "description": "The 'product_id' field is required but was not provided in the request."
    },
    {
      "code": "DI_E_22001",
      "field": "product_name",
      "severity": "ERROR",
      "category": "BUSINESS",
      "message": "length must be <= 255 (got 312)",
      "description": "The 'product_name' value exceeds the maximum allowed length of 255 characters."
    },
    {
      "code": "DI_E_22023",
      "field": "status",
      "severity": "ERROR",
      "category": "BUSINESS",
      "message": "must be one of ['active', 'inactive', 'pending'] (got 'enabled')",
      "description": "The 'status' value 'enabled' is not in the list of allowed values."
    },
    {
      "code": "DI_E_23505",
      "field": "product_id",
      "severity": "ERROR",
      "category": "SYSTEM_DATA",
      "message": "duplicate primary key (product_id)",
      "description": "Two or more rows in this batch share the same primary key value."
    }
  ]
}
{
  "errors": [
    {
      "code": "DI_E_23N01",
      "field": "product_id",
      "severity": "ERROR",
      "category": "BUSINESS",
      "message": "field is required",
      "description": "The 'product_id' field is required but was not provided in the request."
    },
    {
      "code": "DI_E_22001",
      "field": "product_name",
      "severity": "ERROR",
      "category": "BUSINESS",
      "message": "length must be <= 255 (got 312)",
      "description": "The 'product_name' value exceeds the maximum allowed length of 255 characters."
    },
    {
      "code": "DI_E_22023",
      "field": "status",
      "severity": "ERROR",
      "category": "BUSINESS",
      "message": "must be one of ['active', 'inactive', 'pending'] (got 'enabled')",
      "description": "The 'status' value 'enabled' is not in the list of allowed values."
    },
    {
      "code": "DI_E_23505",
      "field": "product_id",
      "severity": "ERROR",
      "category": "SYSTEM_DATA",
      "message": "duplicate primary key (product_id)",
      "description": "Two or more rows in this batch share the same primary key value."
    }
  ]
}

Deleting Objects

All delete requests follow this pattern:

DELETE https://service.peak.ai/ingestion-api/api/v2/object/{prefix}{OBJECT_NAME}{suffix}
DELETE https://service.peak.ai/ingestion-api/api/v2/object/{prefix}{OBJECT_NAME}{suffix}

Where:

  • {prefix} - Solution-specific prefix (e.g., QP_)
  • {OBJECT_NAME} - Object name as defined in your data model (e.g., PRODUCTS)
  • {suffix} - Solution-specific suffix (e.g., _OOTB)

Example Request

curl -X DELETE \
  'https://service.peak.ai/ingestion-api/api/v2/object/QP_PRODUCTS_OOTB' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "solutionName": "QP_OOTB",
    "primaryKey": {
      "product_id": "PROD-001"
    }
  }'
curl -X DELETE \
  'https://service.peak.ai/ingestion-api/api/v2/object/QP_PRODUCTS_OOTB' \
  -H 'Authorization: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "solutionName": "QP_OOTB",
    "primaryKey": {
      "product_id": "PROD-001"
    }
  }'

Request Components

Headers:

  • Authorization - Your Personal Access Token (PAT) from platform.peak.ai
  • Content-Type: application/json - Required for JSON payloads

Payload:

  • solutionName - Matches your solution configuration (e.g., QP_OOTB)
  • primaryKey - Key-value pair identifying the record to delete, using the primary key column name and value

Response

Success (200 OK):

{
  "requestId": "abc123-def456-ghi789",
  "message": "Object deleted successfully",
  "deletedRows": 1
}
{
  "requestId": "abc123-def456-ghi789",
  "message": "Object deleted successfully",
  "deletedRows": 1
}

Error (4xx/5xx):

{
  "title": "Bad Request",
  "type": "",
  "message": "primaryKey contains columns not found in table schema: invalid_column"
}
{
  "title": "Bad Request",
  "type": "",
  "message": "primaryKey contains columns not found in table schema: invalid_column"
}

Was this page helpful?

Connect

Need help? Support

Want to learn? UiPath Academy

Have questions? UiPath Forum

Stay updated