Skip to main content
Product updates for the OmniCommerce developer platform. API contract changes are also reflected in the OpenAPI spec.

2026

October — File uploads

  • Added POST /api/v1/documents to upload a file to the knowledge base as multipart/form-data, and GET /api/v1/documents/{documentId} to read it and its indexing status. New OAuth scope: documents:write. Guide: Knowledge base uploads
  • Added POST /api/v1/products/{productId}/images to upload an image file into a product’s or variant’s gallery. Guide: Product image uploads
  • SDK multipart methods (documents.upload, products.uploadImage) accept a File or Blob; the CLI takes --file <path>

October — Retry promotion delivery

  • Breaking: POST /api/v1/promotions/{promotionId}/sync is now POST /api/v1/promotions/{promotionId}/retry, with the same body and response. The SDK method promotions.sync is now promotions.retry
  • Promotions are delivered automatically when created or activated, edited while live, or given products, and removed when paused, ended, or archived. Use retry only after a failed delivery. Guide: Promotions

October — One analytics route per dashboard

  • Added GET /api/v1/analytics/overview, traffic, products, pricing, ads, orders, content, profit, ai-traffic, stores, and reports, one for each workspace analytics dashboard. All use analytics:read; profit also needs finance access for session members. Guide: Analytics
  • Breaking: GET /api/v1/analytics/sales is now GET /api/v1/analytics/orders with the same response. The SDK method analytics.getSales is now analytics.getOrders

October — Removed the API root endpoints

  • Removed GET /api and GET /api/v1. They only returned { ok, resource, service }. The SDK methods client.api.root() and client.api.v1() and their CLI commands go with them in the next SDK release

October — Reviews, sales analytics, order actions, listings, and variants

  • Added GET /api/v1/reviews, GET /api/v1/reviews/{reviewId}, POST /api/v1/reviews/actions (reply or request an Amazon review), and POST /api/v1/reviews/{reviewId}/draft-reply. Buyer names are omitted. Guide: Reviews
  • Added GET /api/v1/analytics/sales for sales KPIs, a daily trend, channel and status mix, and top products. Guide: Analytics
  • Added GET /api/v1/orders/{orderId}/action-options, POST /api/v1/orders/{orderId}/actions, and GET /api/v1/orders/{orderId}/actions to ship, cancel, generate shipping labels, and update tracking. Guide: Order fulfillment
  • Added GET /api/v1/products/{productId}/listings for each marketplace listing’s state, URL, and latest publish attempt, including rejection details
  • GET /api/v1/products/{productId} now returns the product’s variants in variants
  • New OAuth scopes: reviews:read, reviews:write, analytics:read
  • Breaking: GET /api/v1/products rows no longer include hasVariants. Use variantCount, which is above 0 when a product has variants

October — Omni agent API

  • Added POST /api/v1/agents/general/invoke to wait for the general Omni agent
  • Added POST /api/v1/agents/general/runs and GET /api/v1/agents/general/runs/{runId} to start a run and poll it. Starting returns 202 with the queued run, a Location header, and Retry-After
  • New OAuth scope: agents:invoke
  • The latest user message accepts { "type": "image", "url" } parts for uploaded HTTP(S) images
  • Guide: Omni agent API

October — Campaigns API

  • Added list, read, create, and revise endpoints under /api/v1/campaigns
  • Added plan actions, archive/restore, and permanent delete for archived campaigns
  • Added GET /api/v1/campaigns/options for the members and connected stores a plan can name
  • Uses promotions:read and promotions:write, the same permissions as the workspace Campaigns pages
  • Guide: Campaigns

September — Product delisted webhook

  • Added product.delisted
  • Emitted after a marketplace delist is saved, including POST /api/v1/products/{productId}/delist
  • changedFields names each removed channel, such as marketplaces.shopee
  • The OmniCommerce product is not deleted

September — Delist a product

  • Added POST /api/v1/products/{productId}/delist
  • Uses the same catalog:sync scope as publish
  • Omitting marketplaces delists every existing listing. Naming marketplaces limits the delist; each named marketplace must already have a listing
  • Covers Shopee, Lazada, TikTok Shop, Shopify, WhatsApp, Zalora, Amazon, and eBay
  • Returns 202 with a jobId to poll at GET /api/v1/jobs/{jobId}
  • Does not delete the OmniCommerce product

September — Exact product SKU list filter

  • GET /api/v1/products accepts sku for exact catalog SKU equality (trimmed). This is not the fuzzy q name/SKU search. Repeat sku or comma-separate up to 50 values.

September — Catalog cost API

  • Added POST /api/v1/products/cost (1–200 updates) and PATCH /api/v1/products/{productId}/cost
  • Cost is Omni-only: source amount and currency are stored on the product; the amount is not converted to the selling currency
  • When cost currency differs from selling currency and costPriceFxRate is omitted, Omni quotes FX and stores the rate on the product
  • Documented listing by marketplace (GET /api/v1/products) then batch cost write in Catalog updates

September — Public AOP API

  • Added public AOP REST endpoints under /api/v1/aop/*
  • POST /api/v1/aop/{aopId}/execute starts a run and returns thread_id
  • GET /api/v1/threads/{thread_id}/status polls execution
  • JSON responses use aop_id
  • Added create, config read/overwrite, and retry
  • New OAuth scopes: aops:read, aops:write

August — Catalog export and commerce outcome APIs

  • Added a cursor-paged JSON catalog export and optional CSV intake shape
  • Added PII-free SKU-level order outcomes and product pricing guardrail fields
  • Added versioned return webhooks plus return list/detail APIs
  • Added settlement list/detail APIs for normalized finance reconciliation
  • Added an immutable webhook-event pull API for missed-delivery recovery
  • Documented the complete bootstrap, webhook, price/inventory write, job, and reconciliation flow

August — Versioned catalog price and inventory updates

  • Added dedicated PATCH /api/v1/products/{productId}/price and PATCH /api/v1/products/{productId}/inventory endpoints for products and variants
  • Added credential-derived organization scope, exact marketplace-account targets, durable sync jobs, and pollable per-target status
  • Connected local changes to product.price.changed and product.inventory.changed webhooks

August — Unified settlement webhooks

  • Added settlement.created, settlement.updated, and settlement.status.changed as first-class subscription events
  • Normalized marketplace fees, seller net, variance, evidence status, and payout references independently from order lifecycle updates
  • Added versioned, currency-safe snapshots with duplicate suppression across marketplace finance retries
  • Documented the settlement lifecycle and added API Reference pages for all three events

August — Unified order webhooks

  • Added the provider-neutral 2026-08-01 order webhook contract
  • Standardized order lifecycle events across Shopee, Lazada, TikTok Shop, Shopify, Zalora, Amazon, and developer-created orders
  • Added complete PII-free snapshots, canonical statuses, exact account provenance, decimal-string money, and per-order resource versions
  • Documented subscription setup, signing, retries, idempotency, and marketplace mapping
  • Added first-class API Reference sections for every supported product, order, and look webhook operation, plus an availability catalog for planned resources

August — Public docs on Mintlify

  • Migrated developer docs to Mintlify with interactive OpenAPI playground
  • Documentation, API Reference, and Changelog tabs (Exa-style layout)
  • Guides for orders, promotions, price books, bulk import, and ghost mannequin
  • MCP reference for public catalog tools

Earlier

See the live OpenAPI document for the current endpoint surface: