OneCart API
OneCart is a global multichannel commerce platform — supporting sellers worldwide, not any single region. The OneCart API lets you manage products, orders, listings, and sales analytics across global marketplaces and storefronts from one place — including Amazon (US, UK, EU and more), Shopify, eBay, Walmart, TikTok Shop, WooCommerce, and Southeast Asian marketplaces like Shopee and Lazada.
Interactive API reference → OpenAPI spec (JSON) llms.txt
APIs by platform
OneCart is a single, unified REST API for every marketplace and storefront you sell on. Connect a channel once and use the same endpoints — products, listings, orders, inventory, and analytics — across all of them. The per-platform guides below all map to the same OpenAPI spec.
Shopify API
Sync your Shopify catalog and inventory, and pull, print, and fulfill Shopify orders through the OneCart API — while keeping stock consistent across every other channel you sell on.
Amazon API
Manage Amazon listings, push inventory levels, and retrieve and fulfill Amazon orders via the OneCart API, alongside all your other marketplaces from one integration.
eBay API
List and update products on eBay, keep inventory in sync across channels, and pull and fulfill eBay orders through the OneCart API — one integration instead of many.
WooCommerce API
Connect your WooCommerce store to list and update products, sync stock, and pull and fulfill orders via the OneCart API, unified with the rest of your channels.
Etsy API
Manage your Etsy listings and inventory and retrieve and fulfill Etsy orders through the OneCart API, in sync with every other marketplace you sell on.
Shopee API
List and update Shopee products, push inventory, and pull, print, and fulfill Shopee orders via the OneCart API — with stock kept consistent across all channels.
Walmart API
Manage Walmart Marketplace listings and inventory and retrieve and fulfill Walmart orders through the OneCart API, unified with the rest of your storefronts.
TikTok Shop API
Sync your TikTok Shop catalog and inventory and pull, print, and fulfill TikTok Shop orders via the OneCart API, alongside every other channel from one place.
Lazada API
List and update Lazada products, push inventory levels, and pull, print, and fulfill Lazada orders through the OneCart API — consistent with all your other channels.
Qoo10 API
Manage Qoo10 listings and inventory and retrieve and fulfill Qoo10 orders via the OneCart API, in sync with the rest of your marketplaces.
Zalora API
Sync your Zalora catalog and stock and pull and fulfill Zalora orders through the OneCart API, unified with every other channel you sell on.
RedMart API
Manage RedMart listings and inventory and retrieve and fulfill RedMart orders via the OneCart API, alongside your other storefronts.
Magento API
Connect your Magento store to list and update products, sync stock, and pull and fulfill orders through the OneCart API, unified with the rest of your channels.
Temu API
List and update Temu products, keep inventory in sync, and retrieve and fulfill Temu orders via the OneCart API — one integration across every marketplace.
Basics
- Base URL:
https://app.getonecart.com/api/v2 - All responses are JSON. Request parameters can be sent as query strings, form fields, or a JSON body.
Authentication
Every request must include your API key in the Authorization header:
Authorization: YOUR_API_KEY
Create and manage keys in Settings → API Keys in your OneCart dashboard. Each key belongs to one company and only ever sees that company's data.
- Full access — read and write.
- Read-only —
GETrequests only. Any write returns403 FORBIDDEN.
A missing or invalid key returns 401 UNAUTHORIZED.
Rate limits
Requests are limited to 300 per 60 seconds, per API key. Every response carries:
| Header | Meaning |
|---|---|
X-RateLimit-Limit | Requests allowed in the window |
X-RateLimit-Remaining | Requests left in the current window |
X-RateLimit-Reset | Unix time when the window resets |
Over the limit returns 429 RATE_LIMITED with a Retry-After header (seconds to wait).
Response format
Every successful response is wrapped in a consistent envelope:
{
"data": { },
"meta": { },
"links": { },
"errors": [],
"warnings": []
}
data— the resource or list of resources you requested.meta— pagination and context.links— pagination links; present on list endpoints only.errors— always empty ([]) on success.warnings— non-fatal notices, such as deprecations. Usually empty.
Pagination
List endpoints accept page (default 1) and
per_page (default 25, max 100).
meta reports current_page, per_page,
total_items, total_pages, has_next_page,
and has_previous_page. links gives ready-made URLs for
self, first, prev, next, and
last — follow next until it is null.
Choosing fields
Most endpoints support a _fields query parameter so you only fetch what you need:
- Omit it for the resource's default fields.
- Pass a bare list —
?_fields=id,order_no,status— for exactly those fields (idis always included). - Adjust the defaults with
+/-—?_fields=+order_items,-tracking_no.
Unknown field names are ignored. Mixing a bare list with +/- in the same request returns a 400.
Errors
When a request fails, the body is a single error object:
{
"error": {
"code": "VALIDATION_ERROR",
"message": "Validation failed",
"details": [{ "field": "quantity", "message": "must be an integer" }],
"request_id": "b1f2…"
}
}
request_id matches the X-Request-Id response header — include it when contacting support.
| Code | Status | Meaning |
|---|---|---|
UNAUTHORIZED | 401 | Missing or invalid API key |
FORBIDDEN | 403 | Key lacks access (e.g. read-only key on a write) |
NOT_FOUND | 404 | Resource does not exist or isn't yours |
VALIDATION_ERROR | 400 / 422 | Request parameters were invalid |
RATE_LIMITED | 429 | Too many requests — see Rate limits |
Endpoints
Full definitions (parameters, response schemas) are in the OpenAPI spec. Base URL https://app.getonecart.com/api/v2.
Products (variants / SKUs)
- GET /variants — List products
- GET /variants/count — Count products
- POST /variants — Create products
- PUT /variants/{id} — Update stock
- PUT /variants/bulk_update — Update stock in bulk
- POST /variants/force_push — Resync stock to channels
Listings
- GET /listings — List listings
- GET /listings/count — Count listings
- GET /listings/{id} — Get a listing
- PUT /listings/{id} — Update a listing
- GET /listings/{id}/skus — List a listing's SKUs
Orders
- GET /orders — List orders
- GET /orders/{id} — Get an order
- PUT /orders/{id} — Mark an order shipped
- PUT /orders/{id}/cancel — Cancel an order
- PUT /orders/bulk_cancel — Cancel orders in bulk
- GET /orders/cancelled — List cancelled orders
- POST /orders/print_awbs — Print shipping labels
- GET /delivery_orders — List delivery orders
Catalog
- GET /brands — List brands
- GET /brands/{id}/skus — List a brand's SKUs
- GET /buyer_categories — List buyer categories
- GET /buyer_categories/{id}/skus — List SKUs in a category
- POST /bundle_uploads — Create a bundle upload
- GET /bundle_uploads/{id} — Get a bundle upload
Channels & coverage
- GET /shops — List shops (connected channels)
- GET /sku_channels — Look up channels for SKUs
- GET /coverage — Find SKU coverage gaps
- POST /coverage — Coverage gaps for a large SKU list
- GET /shopify_locations — List Shopify locations
- PUT /shopify_locations/{id} — Update location stock
- GET /zapier — Test the connection
Insights & analytics
- GET /insights/brand_sales — Sales summary for a brand
- GET /insights/category_sales — Sales summary for a category
- GET /insights/sku_sales — Sales summary for a SKU
- GET /insights/channels — Channel performance
- GET /insights/bundles — Bundle analysis
- GET /insights/cancellations — Cancellation metrics
- GET /insights/peak_hours — Peak shopping hours
- GET /insights/hidden_winners — Hidden winners
- GET /insights/slow_movers — Slow-moving inventory
- GET /insights/stockout_risks — Products at risk of stocking out
- GET /insights/out_of_stock_sellers — Out-of-stock sellers
- GET /insights/sla_risks — Orders at risk of missing ship-by deadline
- GET /insights/fees_summary — Fee summary
- GET /insights/fees_by_brand — Fees by brand
- GET /insights/fees_by_category — Fees by category
- GET /insights/fees_by_shop — Fees by shop
- GET /insights/fees_by_sku — Fees by SKU
Versioning
This is version 2 of the OneCart API — the current, actively supported version. We add fields without notice, so build clients that ignore unrecognized fields; breaking changes ship as a new version.
API v1 is deprecated and at end of life. It remains available without support until 31 January 2027, after which it will be shut down permanently. New integrations should use v2.
Support
Questions? Email hello@getonecart.com.