Truncation guard
An import that would delete more than 90% of a catalog is refused and held for review. The rule exists because it happened once.
A unified eCommerce API for Shopify, WooCommerce, Magento 2, PrestaShop, BigCommerce, Wix and Google Merchant Center. Catalog reads on all seven, bulk price writes on six, and a result for every row you send.
PATCH /v1/connections/con_8f2a/prices Authorization: Bearer zk_live_•••• { "updates": [ { "sku": "TEE-BLK-M", "price": 29.90 }, { "sku": "TEE-BLK-L", "price": 29.90 } ] } → 200 OK { "applied": 2, "failed": 0 }
PATCH /v1/connections/con_3b71/prices Authorization: Bearer zk_live_•••• { "updates": [ { "sku": "TEE-BLK-M", "price": 29.90 }, { "sku": "TEE-BLK-L", "price": 29.90 } ] } → 200 OK { "applied": 2, "failed": 0 }
PATCH /v1/connections/con_9d04/prices Authorization: Bearer zk_live_•••• { "updates": [ { "sku": "TEE-BLK-M", "price": 29.90 }, { "sku": "TEE-BLK-L", "price": 29.90 } ] } → 200 OK { "applied": 2, "failed": 0 }
PATCH /v1/connections/con_51ce/prices Authorization: Bearer zk_live_•••• { "updates": [ { "sku": "TEE-BLK-M", "price": 29.90 }, { "sku": "TEE-BLK-L", "price": 29.90 } ] } → 200 OK { "applied": 2, "failed": 0 }
PATCH /v1/connections/con_7a2f/prices Authorization: Bearer zk_live_•••• { "updates": [ { "sku": "TEE-BLK-M", "price": 29.90 }, { "sku": "TEE-BLK-L", "price": 29.90 } ] } → 200 OK { "applied": 2, "failed": 0 }
PATCH /v1/connections/con_5f0b/prices Authorization: Bearer zk_live_•••• { "updates": [ { "sku": "TEE-BLK-M", "price": 29.90 }, { "sku": "TEE-BLK-L", "price": 29.90 } ] } → 200 OK { "applied": 2, "failed": 0 }
PATCH /v1/connections/con_c6e8/prices Authorization: Bearer zk_live_•••• { "updates": [ { "sku": "TEE-BLK-M", "price": 29.90 }, { "sku": "TEE-BLK-L", "price": 29.90 } ] } → 422 Unprocessable Entity { "error_code": "prices_not_writable", "message": "Google Merchant Center is read-only.", "errors": [] }
Catalog and variants read everywhere. Prices write on six. Google Merchant Center is read-only for now, and the table says so.
Google Merchant Center products come in without variants. Open a platform for how its stores connect.
From the first connection to the first webhook. One bearer token, one connection ID, JSON in and out.
curl -X POST https://api.zikkio.com/v1/connect/sessions \ -H "Authorization: Bearer zk_live_••••" \ -d '{ "platform": "shopify", "end_user_ref": "acme-42" }'
{
"session_id": "ses_3kd9",
"connect_url": "https://connect.zikkio.com/s/ses_3kd9",
"expires_in": 900
}
curl https://api.zikkio.com/v1/connections/con_8f2a/products?limit=2 \ -H "Authorization: Bearer zk_live_••••"
{
"data": [
{ "sku": "TEE-BLK-M", "name": "Black tee · M", "price": 29.90, "stock": 42 },
{ "sku": "TEE-BLK-L", "name": "Black tee · L", "price": 29.90, "stock": 17 }
],
"next_cursor": "eyJvZmZzZXQiOjJ9"
}
curl https://api.zikkio.com/v1/connections/con_8f2a/products/prod_41f \
-H "Authorization: Bearer zk_live_••••"
{
"id": "prod_41f",
"name": "Black tee",
"brand": "Acme",
"category": "Apparel / Tees",
"variants": [
{ "sku": "TEE-BLK-M", "price": 29.90, "cost": 11.20, "stock": 42 },
{ "sku": "TEE-BLK-L", "price": 29.90, "cost": 11.20, "stock": 17 }
]
}
curl -X PATCH https://api.zikkio.com/v1/connections/con_8f2a/prices \ -H "Authorization: Bearer zk_live_••••" \ -d '{ "updates": [ { "sku": "TEE-BLK-M", "price": 27.90 }, { "sku": "TEE-BLK-L", "price": 27.90 }, { "sku": "MUG-WHT", "price": 11.90 } ] }'
{
"applied": 2,
"failed": 1,
"rows": [
{ "sku": "TEE-BLK-M", "status": "applied", "price": 27.90 },
{ "sku": "TEE-BLK-L", "status": "applied", "price": 27.90 },
{ "sku": "MUG-WHT", "status": "failed",
"error_code": "sku_not_found" }
]
}
curl -X POST https://api.zikkio.com/v1/connections/con_8f2a/catalog/sync \
-H "Authorization: Bearer zk_live_••••"
{
"job_id": "job_9c1e",
"status": "queued",
"last_sync": "2026-10-07T06:12:00Z",
"rows": 12480
}
POST https://yourapp.example.com/webhooks/zikkio X-Zikkio-Signature: t=1759817520,v1=5f1c9e… Content-Type: application/json { "event": "catalog.synced", "connection_id": "con_8f2a", "rows": 12480, "added": 12, "removed": 3, "price_changes": 148, "occurred_at": "2026-10-07T06:14:33Z" }
HTTP/1.1 200 OK
A Shopify client takes a week. Keeping it alive on thousands of stores for years is the job.
An import that would delete more than 90% of a catalog is refused and held for review. The rule exists because it happened once.
Shopify tokens expire after an hour. Zikkio refreshes them, rotates the refresh token before its 90 days run out and locks the refresh across hosts, so a connected store stays connected.
Shopify bulk operations, resumable page downloads and retries on 429s and deadlocks keep catalogs with millions of rows complete.
Hundreds of prices in one call and a result for every SKU, on six platforms.
One row per variant with the same fields on every platform.
Magento attribute codes, PrestaShop XML webservices, stores behind Cloudflare: already in the code.
Public prices and a free plan that never expires. Plans differ only in API calls a month: every paid plan has webhooks, your brand on the connect page and your own apps.
For your first customers in production.
$200 $167 /month
26,000 API calls a month
Unlimited stores
Billed monthly
$2,000 billed yearly
For a product with a growing base of stores.
$400 $333 /month
260,000 API calls a month
Unlimited stores
Billed monthly
$4,000 billed yearly
For reading and repricing hundreds of stores every day.
$600 $500 /month
650,000 API calls a month
Unlimited stores
Billed monthly
$6,000 billed yearly
For large catalogs and frequent price updates.
$900 $750 /month
1,300,000 API calls a month
Unlimited stores
Billed monthly
$9,000 billed yearly
Every paid plan includes
Build and test the integration, free for as long as you need.
$0 $0 /month
5,000 API calls a month
Unlimited stores
No credit card
More than 1,300,000 API calls a month? Tell us your volume and we will put a plan together.
Talk to usPrices in US dollars, taxes excluded. Going over your calls never stops your integration: we let you know and suggest the plan that fits. Compare all plans Compare with API2Cart
Pricefy reprices e-commerce catalogs for its customers. Every day it reads each store’s catalog through Zikkio, computes new prices and writes them back in bulk, on every platform its customers sell on.
Pricefy is built by the same team as Zikkio.
“The catalog cache and the token handling are the parts we would never want to build again.”
Building repricing, feeds, PIM or ERP for online stores? You need the same calls.
See how repricing works Start for freeWhat teams ask before they connect their first store.
Free plan with 5,000 API calls a month and unlimited stores. No card, and no sales call unless you ask for one.
curl -X POST https://api.zikkio.com/v1/connect/sessions \ -H "Authorization: Bearer zk_test_••••" \ -d '{ "platform": "shopify" }'
{ "connect_url": "https://connect.zikkio.com/s/ses_3kd9" }