Authentication header
Token secrets are shown once at creation time and can be revoked at any time.
Authorization: Bearer <your_api_token>
The merchant API is designed for external systems that need reliable access to price history, schedules, analytics payloads, and API token lifecycle controls.
Base path
/api/v1
Authentication
Bearer token
Plan requirement
Enterprise
Endpoints
12
Generate a token from the embedded app API Access page, apply it as a bearer token, and handle stable JSON errors and X-RateLimit-* headers on every request.
Token secrets are shown once at creation time and can be revoked at any time.
Authorization: Bearer <your_api_token>
Start with the context endpoint to validate plan and scopes.
curl --request GET \ --url http://chronos.cymage-labs.com/api/v1/me \ --header 'Authorization: Bearer <your_api_token>' \ --header 'Accept: application/json'
{
"error": {
"code": "AUTH_INVALID",
"message": "Invalid API token.",
"requestId": "..."
}
}X-RateLimit-Limit: 120 X-RateLimit-Remaining: 119 X-RateLimit-Reset: 1760000000 Retry-After: 60
1 endpoint
Validate token context and API capability access before starting integration calls.
/api/v1/meCurrent API ContextReturns authenticated token, shop, and API capability metadata.Returns authenticated token, shop, and API capability metadata.
Auth
Bearer token
Plan
ENTERPRISE
Scopes
tokens:manage
Rate limit
120 requests per minute per token
Response example
{
"data": {
"shop": {
"domain": "demo.myshopify.com",
"planTier": "ENTERPRISE"
},
"token": {
"id": 42,
"label": "ERP Sync",
"prefix": "chrn_ab12cd34",
"scopes": [
"price_changes:read",
"schedules:read",
"analytics:read"
]
}
}
}2 endpoints
Read store-level and product-level price movement with filters aligned to the app's history views.
/api/v1/price-changesList Price ChangesLists price changes using the same filters as the in-app Price History view.Lists price changes using the same filters as the in-app Price History view.
Auth
Bearer token
Plan
ENTERPRISE
Scopes
price_changes:read
Rate limit
120 requests per minute per token
Request example
{
"query": {
"limit": "50",
"offset": "0",
"source": "scheduled",
"changeType": "decrease"
}
}/api/v1/products/:productId/price-changesList Product Price ChangesLists price history for a single product using the same filtering model as the product detail view.Lists price history for a single product using the same filtering model as the product detail view.
Auth
Bearer token
Plan
ENTERPRISE
Scopes
price_changes:read
Rate limit
120 requests per minute per token
Request example
{
"query": {
"limit": "25",
"offset": "0",
"search": "Blue variant",
"changeType": "decrease",
"source": "scheduled",
"dateFrom": "2026-03-01",
"dateTo": "2026-03-31",
"minPrice": "10.00",
"maxPrice": "99.00"
}
}4 endpoints
Create price and compare-at schedules, inspect execution state, and cancel pending runs when workflows change.
/api/v1/schedulesList SchedulesLists schedules with optional status/search/date filtering.Lists schedules with optional status/search/date filtering.
Auth
Bearer token
Plan
ENTERPRISE
Scopes
schedules:read
Rate limit
120 requests per minute per token
Request example
{
"query": {
"limit": "25",
"offset": "0",
"status": "SCHEDULED",
"search": "weekend",
"dateFrom": "2026-03-01",
"dateTo": "2026-03-31"
}
}/api/v1/schedulesCreate ScheduleCreates a schedule using the same validation, conflict checks, and plan-limit enforcement used by the in-app schedule builder.Creates a schedule using the same validation, conflict checks, and plan-limit enforcement used by the in-app schedule builder.
Auth
Bearer token
Plan
ENTERPRISE
Scopes
schedules:write
Rate limit
Shared merchant API limiter: 120 requests/minute per token and 600 requests/minute per shop.
Price-only schedule (PRICE)
{
"body": {
"name": "Weekend promo",
"scheduleType": "SINGLE",
"priceField": "PRICE",
"scheduledAt": "2026-03-29T08:00:00.000Z",
"timezone": "UTC",
"items": [
{
"shopifyVariantId": "gid://shopify/ProductVariant/44893011122420",
"newPrice": "17.99"
}
]
}
}nameOptionalOptional label (max 255 chars). Must be unique per shop after normalization.
notesOptionalOptional operator note saved to schedule audit trail.
scheduleTypeRequiredSINGLE or EXPIRES_AT. EXPIRES_AT requires expiresAt.
priceFieldRequiredPRICE, COMPARE_AT_PRICE, or BOTH. Controls required item fields and execution behavior.
scheduledAtRequiredISO-8601 datetime. Must satisfy minimum future buffer unless executeImmediately=true.
expiresAtOptionalISO-8601 datetime required for EXPIRES_AT; must be after scheduledAt and at least 2 hours later.
timezoneOptionalOptional timezone label (defaults to UTC).
discountWarningThresholdOptionalNon-negative number used for large-discount warning checks.
requiresApprovalOptionalFlag recorded on schedule for operator workflows.
executeImmediatelyOptionalEnterprise-only acceleration flag. Runs as soon as possible and bypasses future-time buffer checks.
confirmLargeItemCountOptionalSet true to acknowledge large item-count validation gate.
confirmLargeDiscountsOptionalSet true after reviewing warning-level discount/item warnings from prior validation attempts.
items[]RequiredAt least one target item. Each item must resolve to a variant owned by the authenticated shop.
items[].variantId | items[].shopifyVariantIdRequiredProvide at least one identifier. If both are provided, they must point to the same shop-owned variant.
items[].newPriceOptionalRequired for PRICE and BOTH. Not accepted for COMPARE_AT_PRICE.
items[].newCompareAtPriceOptionalRequired for COMPARE_AT_PRICE and BOTH. Not accepted for PRICE.
/api/v1/schedules/:scheduleIdGet Schedule DetailReturns detail for a single schedule owned by the authenticated shop.Returns detail for a single schedule owned by the authenticated shop.
Auth
Bearer token
Plan
ENTERPRISE
Scopes
schedules:read
Rate limit
120 requests per minute per token
Request example
{
"headers": {
"Authorization": "Bearer <your_api_token>"
}
}/api/v1/schedules/:scheduleId/cancelCancel ScheduleCancels a schedule if it is still in SCHEDULED state.Cancels a schedule if it is still in SCHEDULED state.
Auth
Bearer token
Plan
ENTERPRISE
Scopes
schedules:write
Rate limit
Shared merchant API limiter: 120 requests/minute per token and 600 requests/minute per shop.
Request example
{
"body": {
"note": "Cancelled by ERP workflow"
}
}noteOptionalOptional cancellation reason stored in schedule audit history.
2 endpoints
Fetch overview and product analytics payloads for reporting and downstream decision systems.
/api/v1/analytics/overviewGet Analytics OverviewReturns overview analytics payload equivalent to the UI analytics page.Returns overview analytics payload equivalent to the UI analytics page.
Auth
Bearer token
Plan
ENTERPRISE
Scopes
analytics:read
Rate limit
120 requests per minute per token
Request example
{
"query": {
"requestedDays": "30",
"topProductsPage": "1",
"topProductsPageSize": "10",
"topProductsQuery": "tee"
}
}/api/v1/products/:productId/analyticsGet Product AnalyticsReturns product-level analytics for a single Shopify product.Returns product-level analytics for a single Shopify product.
Auth
Bearer token
Plan
ENTERPRISE
Scopes
analytics:read
Rate limit
120 requests per minute per token
Request example
{
"query": {
"variantId": "gid://shopify/ProductVariant/44893011122420"
}
}3 endpoints
Manage shop-scoped API credentials for external systems without exposing stored secrets.
/api/v1/api-tokensList API TokensLists token metadata for the current shop without exposing secrets.Lists token metadata for the current shop without exposing secrets.
Auth
Bearer token
Plan
ENTERPRISE
Scopes
tokens:manage
Rate limit
Shared merchant API limiter: 120 requests/minute per token and 600 requests/minute per shop.
Response example
{
"data": {
"items": [
{
"id": 1,
"label": "ERP Sync",
"tokenPrefix": "chrn_ab12cd34",
"last4": "Qe7m",
"revokedAt": null
}
]
}
}/api/v1/api-tokensCreate API TokenCreates a new API token. Secret is returned once and never stored in plaintext.Creates a new API token. Secret is returned once and never stored in plaintext.
Auth
Bearer token
Plan
ENTERPRISE
Scopes
tokens:manage
Rate limit
Shared merchant API limiter: 120 requests/minute per token and 600 requests/minute per shop.
Request example
{
"body": {
"label": "Data Warehouse",
"scopes": [
"price_changes:read",
"schedules:read",
"analytics:read"
]
}
}/api/v1/api-tokens/:tokenId/revokeRevoke API TokenRevokes an existing token for the authenticated shop.Revokes an existing token for the authenticated shop.
Auth
Bearer token
Plan
ENTERPRISE
Scopes
tokens:manage
Rate limit
Shared merchant API limiter: 120 requests/minute per token and 600 requests/minute per shop.
Response example
{
"data": {
"tokenId": 11,
"revoked": true,
"alreadyRevoked": false
}
}Merchant API endpoints require Enterprise access. Plan changes, feature gates, and token controls are managed from the embedded billing and API Access pages.
Starter
Entry tier$29.99/month
Reliable price tracking and core scheduling for teams getting their pricing workflow in place.
7-day free trial (one-time per store)
Growth
$69.99/month
The mainstream plan for merchants running recurring pricing work and wanting analytics in the loop.
7-day free trial (one-time per store)
Enterprise
Best for scale$119.99/month
Full-platform control for high-volume operations, scheduled exports, API workflows, and priority support.
7-day free trial (one-time per store)
Install the app to start a one-time 7-day trial, then choose Enterprise when your team needs API workflows.
Installation starts from Shopify App Store after approval.