---
title: "Create Order Template"
method: POST
path: "/supplier_provider/{supplier_provider_uid}/order_templates"
---

# Create Order Template

`POST /supplier_provider/{supplier_provider_uid}/order_templates`

## Request

- Base URL: `https://dc-region.zuperpro.com/api`
- URL: `https://dc-region.zuperpro.com/api/supplier_provider/{supplier_provider_uid}/order_templates`
- Auth: API key in header `x-api-key`

Saves one or more supplier order templates into Zuper and starts importing their products into your product catalog in the background. Use the `supplier_order_template_id` values from Get Live Order Templates; every ID is looked up at the supplier first, and the whole request is rejected if any of them is not found. Sending a template that is already saved for this provider refreshes it (name, description and the supplier's current product list) instead of creating a duplicate. The call returns as soon as the templates are saved: follow `import_status` in Get Saved Order Templates to see when the import finishes, and save branches for the provider first, because imported products are priced and linked against those branches. The supplier provider must be `CONNECTED`; otherwise the request fails with 403. Admin only: the API key must belong to an admin user; other roles receive 405 Access Denied.

## Path parameters

- `supplier_provider_uid` string, required

## Request body

- object
  - `order_templates` object[], required: Required. Templates to save; at least one.
    - `template_name` string, required: Required. Name shown in Zuper; it can differ from the supplier's name.
    - `supplier_order_template_id` union, required: Required. The template's ID at the supplier, from Get Live Order Templates. Numeric IDs (ABC Supply) are accepted and stored as strings.
      - string
      - integer
    - `description` string: Optional. Defaults to the supplier's description; QXO templates have none, so it stays empty unless you send one.

## Response `200`

200

- object
  - `type` 'success'
  - `title` string
  - `message` string
  - `data` object
    - `inserted_count` integer: Templates saved for the first time.
    - `updated_count` integer: Templates that were already saved and have been refreshed.
    - `order_template_ids` string[]: `order_template_uid` of each newly saved template. Refreshed templates are not listed.

## Other responses

- `400`: 400
- `403`: 403
- `404`: 404
- `405`: 405

## Changes

- **2026-11-03** `3c21bc232e16`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/zuper/apis/zuper-pro-api/changes/supplier_provider/:supplier_provider_uid/order_templates/post.md)

---

[API](https://skmtc.dev/zuper/apis/zuper-pro-api.md) - [All operations](https://skmtc.dev/zuper/apis/zuper-pro-api/llms.txt) - [OpenAPI document](https://skmtc.dev/zuper/apis/zuper-pro-api/revisions/3c21bc232e16?raw)
