API resource

Store pages, menus and catalog sync

The rest of the storefront: pages, navigation menus, URL redirects, metaobjects, marketing activities shown in the Shopify admin, and syncing the store's products into a Meta catalog for catalog ads. Menus, redirects, metaobjects and marketing activities are Shopify only. Pick the store with accountId.

List catalog syncs

GET/v1/commerce/catalog-syncs

Works on: Shopify, WooCommerce

The ad-platform catalogs this store is kept in sync with.

Query parameters

accountIdstringrequired

Connected store account id.

curl "https://creatoros-production-5658.up.railway.app/v1/commerce/catalog-syncs?accountId=acc_Sh4Vp9Kz2Ny7Tx3Lm1Rc6Wb5Js8Df0Ga4Ue7Ki2Oq3H" \
  -H "Authorization: Bearer $CREATOROS_API_KEY"
Response 200
{
  "catalogSyncs": [
    {
      "id": "string",
      "accountId": "acc_Sh4Vp9Kz2Ny7Tx3Lm1Rc6Wb5Js8Df0Ga4Ue7Ki2Oq3H",
      "catalogPlatform": "meta",
      "catalogAccountId": "string",
      "catalogId": "string",
      "runStatus": "pending",
      "lastRunStartedAt": "2026-10-10T00:00:00.000Z",
      "lastRunFinishedAt": "2026-10-10T00:00:00.000Z",
      "lastError": "string",
      "itemsSent": 0,
      "itemsSkipped": 0,
      "itemsDeleted": 0,
      "createdAt": "2026-10-10T00:00:00.000Z"
    }
  ]
}

Sync a store into a Meta catalog

POST/v1/commerce/catalog-syncs

Works on: Shopify, WooCommerce

Keeps a Meta product catalog in sync with the store, for catalog ads (goal: catalog_sales) and Shops. The first full run starts right away in the background; runStatus and the item counts report its outcome. Every active product variant that is published to the online store and has an image becomes a catalog item, grouped by product (item_group_id). After that, product changes on the store update the catalog within minutes, and a daily full run removes items for products or variants the store no longer has.

Body

accountIdstringrequired

The store account id.

catalogAccountIdstringrequired

catalogIdstringrequired

Meta product catalog id.

curl -X POST "https://creatoros-production-5658.up.railway.app/v1/commerce/catalog-syncs" \
  -H "Authorization: Bearer $CREATOROS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "accountId": "acc_Sh4Vp9Kz2Ny7Tx3Lm1Rc6Wb5Js8Df0Ga4Ue7Ki2Oq3H",
    "catalogAccountId": "string",
    "catalogId": "string"
  }'
Response 200
{
  "catalogSync": {
    "id": "string",
    "accountId": "acc_Sh4Vp9Kz2Ny7Tx3Lm1Rc6Wb5Js8Df0Ga4Ue7Ki2Oq3H",
    "catalogPlatform": "meta",
    "catalogAccountId": "string",
    "catalogId": "string",
    "runStatus": "pending",
    "lastRunStartedAt": "2026-10-10T00:00:00.000Z",
    "lastRunFinishedAt": "2026-10-10T00:00:00.000Z",
    "lastError": "string",
    "itemsSent": 0,
    "itemsSkipped": 0,
    "itemsDeleted": 0,
    "createdAt": "2026-10-10T00:00:00.000Z"
  }
}

Stop a catalog sync

DELETE/v1/commerce/catalog-syncs/{syncId}

Works on: Shopify, WooCommerce

Stops syncing. Items already in the catalog stay there.

Path parameters

syncIdstringrequired

curl -X DELETE "https://creatoros-production-5658.up.railway.app/v1/commerce/catalog-syncs/obj_Cs8Kq3Vw6Nx1Ty9Lm4Rc7Hb2Js5Df0Ga3Ue8Ki6Oq1Y" \
  -H "Authorization: Bearer $CREATOROS_API_KEY"
Response 200
{
  "deleted": true,
  "syncId": "obj_Cs8Kq3Vw6Nx1Ty9Lm4Rc7Hb2Js5Df0Ga3Ue8Ki6Oq1Y"
}

Get a catalog sync

GET/v1/commerce/catalog-syncs/{syncId}

Works on: Shopify, WooCommerce

One catalog sync with the status and counts of its last run (itemsSent, itemsSkipped, itemsDeleted, lastError). Poll it after POST /v1/commerce/catalog-syncs/{syncId}/run to follow a run.

Path parameters

syncIdstringrequired

curl "https://creatoros-production-5658.up.railway.app/v1/commerce/catalog-syncs/obj_Cs8Kq3Vw6Nx1Ty9Lm4Rc7Hb2Js5Df0Ga3Ue8Ki6Oq1Y" \
  -H "Authorization: Bearer $CREATOROS_API_KEY"
Response 200
{
  "catalogSync": {
    "id": "string",
    "accountId": "acc_Sh4Vp9Kz2Ny7Tx3Lm1Rc6Wb5Js8Df0Ga4Ue7Ki2Oq3H",
    "catalogPlatform": "meta",
    "catalogAccountId": "string",
    "catalogId": "string",
    "runStatus": "pending",
    "lastRunStartedAt": "2026-10-10T00:00:00.000Z",
    "lastRunFinishedAt": "2026-10-10T00:00:00.000Z",
    "lastError": "string",
    "itemsSent": 0,
    "itemsSkipped": 0,
    "itemsDeleted": 0,
    "createdAt": "2026-10-10T00:00:00.000Z"
  }
}

Run a catalog sync now

POST/v1/commerce/catalog-syncs/{syncId}/run

Works on: Shopify, WooCommerce

Queues a full run. Poll GET /v1/commerce/catalog-syncs/{syncId} for the outcome.

Path parameters

syncIdstringrequired

curl -X POST "https://creatoros-production-5658.up.railway.app/v1/commerce/catalog-syncs/obj_Cs8Kq3Vw6Nx1Ty9Lm4Rc7Hb2Js5Df0Ga3Ue8Ki6Oq1Y/run" \
  -H "Authorization: Bearer $CREATOROS_API_KEY"
Response 200
{
  "catalogSync": {
    "id": "string",
    "accountId": "acc_Sh4Vp9Kz2Ny7Tx3Lm1Rc6Wb5Js8Df0Ga4Ue7Ki2Oq3H",
    "catalogPlatform": "meta",
    "catalogAccountId": "string",
    "catalogId": "string",
    "runStatus": "pending",
    "lastRunStartedAt": "2026-10-10T00:00:00.000Z",
    "lastRunFinishedAt": "2026-10-10T00:00:00.000Z",
    "lastError": "string",
    "itemsSent": 0,
    "itemsSkipped": 0,
    "itemsDeleted": 0,
    "createdAt": "2026-10-10T00:00:00.000Z"
  }
}

Record a marketing activity

PUT/v1/commerce/marketing-activities

Works on: Shopify, WooCommerce

Creates or updates (by remoteId) an activity in the store's Marketing section, so the merchant sees a post, ad or message you ran for them, with its link and UTM parameters for attribution. Use your own id (for example the Creator OS post or ad id) as remoteId.

Body

accountIdstringrequired

remoteIdstringrequired

titlestringrequired

urlstringrequired

previewImageUrlstring

utmobject

tacticstringrequired

channelstringrequired

statusstringrequired

budgetobject

adSpendstring

Decimal in the store currency.

startedAtstring

endedAtstring

curl -X PUT "https://creatoros-production-5658.up.railway.app/v1/commerce/marketing-activities" \
  -H "Authorization: Bearer $CREATOROS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "accountId": "acc_Sh4Vp9Kz2Ny7Tx3Lm1Rc6Wb5Js8Df0Ga4Ue7Ki2Oq3H",
    "remoteId": "spring-launch-2026",
    "title": "string",
    "url": "string",
    "tactic": "ad",
    "channel": "social",
    "status": "active"
  }'
Response 200
{
  "marketingActivity": {
    "id": "string",
    "remoteId": "spring-launch-2026"
  }
}

Delete a marketing activity

DELETE/v1/commerce/marketing-activities/{remoteId}

Works on: Shopify, WooCommerce

Deletes the marketing activity you created with PUT /v1/commerce/marketing-activities, identified by the remoteId you gave it. Shopify only. Needs marketing.write.

Path parameters

remoteIdstringrequired

The remoteId given when recording it.

Query parameters

accountIdstringrequired

Connected store account id.

curl -X DELETE "https://creatoros-production-5658.up.railway.app/v1/commerce/marketing-activities/spring-launch-2026?accountId=acc_Sh4Vp9Kz2Ny7Tx3Lm1Rc6Wb5Js8Df0Ga4Ue7Ki2Oq3H" \
  -H "Authorization: Bearer $CREATOROS_API_KEY"
Response 200
{
  "deleted": true,
  "remoteId": "spring-launch-2026"
}

Report daily engagement

POST/v1/commerce/marketing-activities/{remoteId}/engagements

Works on: Shopify, WooCommerce

Reports one day's numbers for an activity (UTC day), shown next to it in the store's Marketing section.

Path parameters

remoteIdstringrequired

The remoteId given when recording it.

Body

accountIdstringrequired

datestringrequired

impressionsinteger

viewsinteger

clicksinteger

sharesinteger

likesinteger

commentsinteger

adSpendstring

Decimal in the store currency.

curl -X POST "https://creatoros-production-5658.up.railway.app/v1/commerce/marketing-activities/spring-launch-2026/engagements" \
  -H "Authorization: Bearer $CREATOROS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "accountId": "acc_Sh4Vp9Kz2Ny7Tx3Lm1Rc6Wb5Js8Df0Ga4Ue7Ki2Oq3H",
    "date": "2026-10-10T00:00:00.000Z"
  }'
Response 200
{
  "remoteId": "spring-launch-2026",
  "recorded": true
}

List navigation menus

GET/v1/commerce/menus

Works on: Shopify, WooCommerce

The store's navigation menus with their items. Shopify only. Needs navigation.read.

Query parameters

accountIdstringrequired

Connected store account id.

curl "https://creatoros-production-5658.up.railway.app/v1/commerce/menus?accountId=acc_Sh4Vp9Kz2Ny7Tx3Lm1Rc6Wb5Js8Df0Ga4Ue7Ki2Oq3H" \
  -H "Authorization: Bearer $CREATOROS_API_KEY"
Response 200
{
  "menus": [
    {
      "id": "string",
      "handle": "string",
      "title": "string",
      "items": [
        {}
      ]
    }
  ]
}

Create a navigation menu

POST/v1/commerce/menus

Works on: Shopify, WooCommerce

Creates a navigation menu from title, handle and up to 100 items, and returns it with status 201. Shopify only. Needs navigation.write.

Body

accountIdstringrequired

titlestringrequired

handlestringrequired

itemsobject[]required

curl -X POST "https://creatoros-production-5658.up.railway.app/v1/commerce/menus" \
  -H "Authorization: Bearer $CREATOROS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "accountId": "acc_Sh4Vp9Kz2Ny7Tx3Lm1Rc6Wb5Js8Df0Ga4Ue7Ki2Oq3H",
    "title": "string",
    "handle": "string",
    "items": [
      {
        "title": "string",
        "type": "frontpage",
        "url": "string",
        "resourceId": "string",
        "items": [
          {
            "title": "string",
            "type": "frontpage",
            "url": "string",
            "resourceId": "string",
            "items": []
          }
        ]
      }
    ]
  }'
Response 200
{
  "menu": {
    "id": "string",
    "handle": "string",
    "title": "string",
    "items": [
      {
        "id": "string",
        "title": "string",
        "type": "frontpage",
        "url": "string",
        "resourceId": "string",
        "items": []
      }
    ]
  }
}

Delete a navigation menu

DELETE/v1/commerce/menus/{menuId}

Works on: Shopify, WooCommerce

Deletes the navigation menu. Shopify only. Needs navigation.write.

Path parameters

menuIdstringrequired

Platform-native id.

Query parameters

accountIdstringrequired

Connected store account id.

curl -X DELETE "https://creatoros-production-5658.up.railway.app/v1/commerce/menus/223344556677?accountId=acc_Sh4Vp9Kz2Ny7Tx3Lm1Rc6Wb5Js8Df0Ga4Ue7Ki2Oq3H" \
  -H "Authorization: Bearer $CREATOROS_API_KEY"
Response 200
{
  "deleted": true,
  "menuId": "223344556677"
}

Get a navigation menu

GET/v1/commerce/menus/{menuId}

Works on: Shopify, WooCommerce

One navigation menu with its nested items. Shopify only. Needs navigation.read.

Path parameters

menuIdstringrequired

Platform-native id.

Query parameters

accountIdstringrequired

Connected store account id.

curl "https://creatoros-production-5658.up.railway.app/v1/commerce/menus/223344556677?accountId=acc_Sh4Vp9Kz2Ny7Tx3Lm1Rc6Wb5Js8Df0Ga4Ue7Ki2Oq3H" \
  -H "Authorization: Bearer $CREATOROS_API_KEY"
Response 200
{
  "menu": {
    "id": "string",
    "handle": "string",
    "title": "string",
    "items": [
      {
        "id": "string",
        "title": "string",
        "type": "frontpage",
        "url": "string",
        "resourceId": "string",
        "items": []
      }
    ]
  }
}

Replace a navigation menu

PUT/v1/commerce/menus/{menuId}

Works on: Shopify, WooCommerce

Replaces the title and the whole item tree.

Path parameters

menuIdstringrequired

Platform-native id.

Body

accountIdstringrequired

titlestringrequired

handlestring

itemsobject[]required

curl -X PUT "https://creatoros-production-5658.up.railway.app/v1/commerce/menus/223344556677" \
  -H "Authorization: Bearer $CREATOROS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "accountId": "acc_Sh4Vp9Kz2Ny7Tx3Lm1Rc6Wb5Js8Df0Ga4Ue7Ki2Oq3H",
    "title": "string",
    "items": [
      {
        "title": "string",
        "type": "frontpage",
        "url": "string",
        "resourceId": "string",
        "items": [
          {
            "title": "string",
            "type": "frontpage",
            "url": "string",
            "resourceId": "string",
            "items": []
          }
        ]
      }
    ]
  }'
Response 200
{
  "menu": {
    "id": "string",
    "handle": "string",
    "title": "string",
    "items": [
      {
        "id": "string",
        "title": "string",
        "type": "frontpage",
        "url": "string",
        "resourceId": "string",
        "items": []
      }
    ]
  }
}

List metaobject definitions

GET/v1/commerce/metaobject-definitions

Works on: Shopify, WooCommerce

The custom content types defined on the store and their fields.

Query parameters

accountIdstringrequired

Connected store account id.

curl "https://creatoros-production-5658.up.railway.app/v1/commerce/metaobject-definitions?accountId=acc_Sh4Vp9Kz2Ny7Tx3Lm1Rc6Wb5Js8Df0Ga4Ue7Ki2Oq3H" \
  -H "Authorization: Bearer $CREATOROS_API_KEY"
Response 200
{
  "definitions": [
    {
      "id": "string",
      "type": "string",
      "name": "string",
      "fields": [
        {}
      ]
    }
  ]
}

List metaobjects of a type

GET/v1/commerce/metaobjects

Works on: Shopify, WooCommerce

The metaobjects of one type (a definition handle from GET /v1/commerce/metaobject-definitions), cursor-paginated with limit and cursor. Shopify only. Needs metaobjects.read.

Query parameters

accountIdstringrequired

Connected store account id.

typestringrequired

Definition type from GET /v1/commerce/metaobject-definitions.

limitinteger

cursorstring

curl "https://creatoros-production-5658.up.railway.app/v1/commerce/metaobjects?accountId=acc_Sh4Vp9Kz2Ny7Tx3Lm1Rc6Wb5Js8Df0Ga4Ue7Ki2Oq3H&type=%3Ctype%3E" \
  -H "Authorization: Bearer $CREATOROS_API_KEY"
Response 200
{
  "metaobjects": [
    {
      "id": "string",
      "type": "string",
      "handle": "string",
      "displayName": "string",
      "fields": [
        {}
      ]
    }
  ],
  "nextCursor": "string"
}

Create a metaobject

POST/v1/commerce/metaobjects

Works on: Shopify, WooCommerce

Creates a metaobject of type with its fields (key and string value, up to 100) and an optional handle, and returns it with status 201. Shopify only. Needs metaobjects.write.

Body

accountIdstringrequired

typestringrequired

handlestring

fieldsobject[]required

curl -X POST "https://creatoros-production-5658.up.railway.app/v1/commerce/metaobjects" \
  -H "Authorization: Bearer $CREATOROS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "accountId": "acc_Sh4Vp9Kz2Ny7Tx3Lm1Rc6Wb5Js8Df0Ga4Ue7Ki2Oq3H",
    "type": "string",
    "fields": [
      {
        "key": "string",
        "value": "string"
      }
    ]
  }'
Response 200
{
  "metaobject": {
    "id": "string",
    "type": "string",
    "handle": "string",
    "displayName": "string",
    "fields": [
      {
        "key": "string",
        "type": "string",
        "value": "string"
      }
    ]
  }
}

Delete a metaobject

DELETE/v1/commerce/metaobjects/{metaobjectId}

Works on: Shopify, WooCommerce

Deletes the metaobject. References to it from metafields stop resolving. Shopify only. Needs metaobjects.write.

Path parameters

metaobjectIdstringrequired

Platform-native id.

Query parameters

accountIdstringrequired

Connected store account id.

curl -X DELETE "https://creatoros-production-5658.up.railway.app/v1/commerce/metaobjects/445566778899?accountId=acc_Sh4Vp9Kz2Ny7Tx3Lm1Rc6Wb5Js8Df0Ga4Ue7Ki2Oq3H" \
  -H "Authorization: Bearer $CREATOROS_API_KEY"
Response 200
{
  "deleted": true,
  "metaobjectId": "445566778899"
}

Get a metaobject

GET/v1/commerce/metaobjects/{metaobjectId}

Works on: Shopify, WooCommerce

One metaobject with its fields. Shopify only. Needs metaobjects.read.

Path parameters

metaobjectIdstringrequired

Platform-native id.

Query parameters

accountIdstringrequired

Connected store account id.

curl "https://creatoros-production-5658.up.railway.app/v1/commerce/metaobjects/445566778899?accountId=acc_Sh4Vp9Kz2Ny7Tx3Lm1Rc6Wb5Js8Df0Ga4Ue7Ki2Oq3H" \
  -H "Authorization: Bearer $CREATOROS_API_KEY"
Response 200
{
  "metaobject": {
    "id": "string",
    "type": "string",
    "handle": "string",
    "displayName": "string",
    "fields": [
      {
        "key": "string",
        "type": "string",
        "value": "string"
      }
    ]
  }
}

Update a metaobject

PATCH/v1/commerce/metaobjects/{metaobjectId}

Works on: Shopify, WooCommerce

Sets the given field values; fields left out keep theirs.

Path parameters

metaobjectIdstringrequired

Platform-native id.

Body

accountIdstringrequired

handlestring

fieldsobject[]required

curl -X PATCH "https://creatoros-production-5658.up.railway.app/v1/commerce/metaobjects/445566778899" \
  -H "Authorization: Bearer $CREATOROS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "accountId": "acc_Sh4Vp9Kz2Ny7Tx3Lm1Rc6Wb5Js8Df0Ga4Ue7Ki2Oq3H",
    "fields": [
      {
        "key": "string",
        "value": "string"
      }
    ]
  }'
Response 200
{
  "metaobject": {
    "id": "string",
    "type": "string",
    "handle": "string",
    "displayName": "string",
    "fields": [
      {
        "key": "string",
        "type": "string",
        "value": "string"
      }
    ]
  }
}

List pages

GET/v1/commerce/pages

Works on: Shopify, WooCommerce

The store's content pages (Shopify online store pages, WordPress pages), cursor-paginated with limit, cursor and an optional query. Needs pages.read.

Query parameters

accountIdstringrequired

Connected store account id.

limitinteger

cursorstring

querystring

Platform search syntax, passed through.

curl "https://creatoros-production-5658.up.railway.app/v1/commerce/pages?accountId=acc_Sh4Vp9Kz2Ny7Tx3Lm1Rc6Wb5Js8Df0Ga4Ue7Ki2Oq3H" \
  -H "Authorization: Bearer $CREATOROS_API_KEY"
Response 200
{
  "pages": [
    {
      "id": "string",
      "accountId": "acc_Sh4Vp9Kz2Ny7Tx3Lm1Rc6Wb5Js8Df0Ga4Ue7Ki2Oq3H",
      "platform": "shopify",
      "title": "string",
      "handle": "string",
      "bodyHtml": "string",
      "isPublished": true,
      "publishedAt": "2026-10-10T00:00:00.000Z",
      "createdAt": "2026-10-10T00:00:00.000Z",
      "updatedAt": "2026-10-10T00:00:00.000Z"
    }
  ],
  "nextCursor": "string"
}

Create a page

POST/v1/commerce/pages

Works on: Shopify, WooCommerce

Creates a content page from title, optional handle, bodyHtml and isPublished, and returns it with status 201. Needs pages.write.

Body

accountIdstringrequired

titlestringrequired

handlestring

bodyHtmlstring

isPublishedboolean

curl -X POST "https://creatoros-production-5658.up.railway.app/v1/commerce/pages" \
  -H "Authorization: Bearer $CREATOROS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "accountId": "acc_Sh4Vp9Kz2Ny7Tx3Lm1Rc6Wb5Js8Df0Ga4Ue7Ki2Oq3H",
    "title": "string"
  }'
Response 200
{
  "page": {
    "id": "string",
    "accountId": "acc_Sh4Vp9Kz2Ny7Tx3Lm1Rc6Wb5Js8Df0Ga4Ue7Ki2Oq3H",
    "platform": "shopify",
    "title": "string",
    "handle": "string",
    "bodyHtml": "string",
    "isPublished": true,
    "publishedAt": "2026-10-10T00:00:00.000Z",
    "createdAt": "2026-10-10T00:00:00.000Z",
    "updatedAt": "2026-10-10T00:00:00.000Z"
  }
}

Delete a page

DELETE/v1/commerce/pages/{pageId}

Works on: Shopify, WooCommerce

Deletes the page from the store. This cannot be undone. Needs pages.write.

Path parameters

pageIdstringrequired

Platform-native id.

Query parameters

accountIdstringrequired

Connected store account id.

curl -X DELETE "https://creatoros-production-5658.up.railway.app/v1/commerce/pages/112233445566?accountId=acc_Sh4Vp9Kz2Ny7Tx3Lm1Rc6Wb5Js8Df0Ga4Ue7Ki2Oq3H" \
  -H "Authorization: Bearer $CREATOROS_API_KEY"
Response 200
{
  "deleted": true,
  "pageId": "112233445566"
}

Get a page

GET/v1/commerce/pages/{pageId}

Works on: Shopify, WooCommerce

One content page with its body. Needs pages.read.

Path parameters

pageIdstringrequired

Platform-native id.

Query parameters

accountIdstringrequired

Connected store account id.

curl "https://creatoros-production-5658.up.railway.app/v1/commerce/pages/112233445566?accountId=acc_Sh4Vp9Kz2Ny7Tx3Lm1Rc6Wb5Js8Df0Ga4Ue7Ki2Oq3H" \
  -H "Authorization: Bearer $CREATOROS_API_KEY"
Response 200
{
  "page": {
    "id": "string",
    "accountId": "acc_Sh4Vp9Kz2Ny7Tx3Lm1Rc6Wb5Js8Df0Ga4Ue7Ki2Oq3H",
    "platform": "shopify",
    "title": "string",
    "handle": "string",
    "bodyHtml": "string",
    "isPublished": true,
    "publishedAt": "2026-10-10T00:00:00.000Z",
    "createdAt": "2026-10-10T00:00:00.000Z",
    "updatedAt": "2026-10-10T00:00:00.000Z"
  }
}

Update a page

PATCH/v1/commerce/pages/{pageId}

Works on: Shopify, WooCommerce

Updates the fields you pass (title, handle, bodyHtml, isPublished) and returns the page. Needs pages.write.

Path parameters

pageIdstringrequired

Platform-native id.

Body

accountIdstringrequired

titlestring

handlestring

bodyHtmlstring

isPublishedboolean

curl -X PATCH "https://creatoros-production-5658.up.railway.app/v1/commerce/pages/112233445566" \
  -H "Authorization: Bearer $CREATOROS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "accountId": "acc_Sh4Vp9Kz2Ny7Tx3Lm1Rc6Wb5Js8Df0Ga4Ue7Ki2Oq3H"
  }'
Response 200
{
  "page": {
    "id": "string",
    "accountId": "acc_Sh4Vp9Kz2Ny7Tx3Lm1Rc6Wb5Js8Df0Ga4Ue7Ki2Oq3H",
    "platform": "shopify",
    "title": "string",
    "handle": "string",
    "bodyHtml": "string",
    "isPublished": true,
    "publishedAt": "2026-10-10T00:00:00.000Z",
    "createdAt": "2026-10-10T00:00:00.000Z",
    "updatedAt": "2026-10-10T00:00:00.000Z"
  }
}

List URL redirects

GET/v1/commerce/redirects

Works on: Shopify, WooCommerce

The store's URL redirects (old path to new target), cursor-paginated with limit, cursor and an optional query on the path. Shopify only. Needs navigation.read.

Query parameters

accountIdstringrequired

Connected store account id.

limitinteger

cursorstring

querystring

Platform search syntax, passed through.

curl "https://creatoros-production-5658.up.railway.app/v1/commerce/redirects?accountId=acc_Sh4Vp9Kz2Ny7Tx3Lm1Rc6Wb5Js8Df0Ga4Ue7Ki2Oq3H" \
  -H "Authorization: Bearer $CREATOROS_API_KEY"
Response 200
{
  "redirects": [
    {
      "id": "string",
      "path": "string",
      "target": "string"
    }
  ],
  "nextCursor": "string"
}

Create a URL redirect

POST/v1/commerce/redirects

Works on: Shopify, WooCommerce

Creates a redirect from path (starting with /) to target (a path or a full URL) and returns it with status 201. Shopify only. Needs navigation.write.

Body

accountIdstringrequired

pathstringrequired

The old path, starting with /.

targetstringrequired

Where to send visitors: a path or a full URL.

curl -X POST "https://creatoros-production-5658.up.railway.app/v1/commerce/redirects" \
  -H "Authorization: Bearer $CREATOROS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "accountId": "acc_Sh4Vp9Kz2Ny7Tx3Lm1Rc6Wb5Js8Df0Ga4Ue7Ki2Oq3H",
    "path": "string",
    "target": "string"
  }'
Response 200
{
  "redirect": {
    "id": "string",
    "path": "string",
    "target": "string"
  }
}

Delete a URL redirect

DELETE/v1/commerce/redirects/{redirectId}

Works on: Shopify, WooCommerce

Deletes the redirect; the old path answers 404 again. Shopify only. Needs navigation.write.

Path parameters

redirectIdstringrequired

Platform-native id.

Query parameters

accountIdstringrequired

Connected store account id.

curl -X DELETE "https://creatoros-production-5658.up.railway.app/v1/commerce/redirects/334455667788?accountId=acc_Sh4Vp9Kz2Ny7Tx3Lm1Rc6Wb5Js8Df0Ga4Ue7Ki2Oq3H" \
  -H "Authorization: Bearer $CREATOROS_API_KEY"
Response 200
{
  "deleted": true,
  "redirectId": "334455667788"
}

Update a URL redirect

PATCH/v1/commerce/redirects/{redirectId}

Works on: Shopify, WooCommerce

Changes the redirect's path and/or target. Shopify only. Needs navigation.write.

Path parameters

redirectIdstringrequired

Platform-native id.

Body

accountIdstringrequired

pathstring

targetstring

curl -X PATCH "https://creatoros-production-5658.up.railway.app/v1/commerce/redirects/334455667788" \
  -H "Authorization: Bearer $CREATOROS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "accountId": "acc_Sh4Vp9Kz2Ny7Tx3Lm1Rc6Wb5Js8Df0Ga4Ue7Ki2Oq3H"
  }'
Response 200
{
  "redirect": {
    "id": "string",
    "path": "string",
    "target": "string"
  }
}