Shopify Admin API

# Shopify Admin API

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "Shopify Admin API" with this command: npx skills add zachgodsell93/shopify-admin-api

Shopify Admin API

Description

Full read/write access to Shopify Admin REST API for managing orders, products, customers, inventory, fulfillments, refunds, returns, and transactions.

Setup

Environment Variables

  • SHOPIFY_STORE_DOMAIN - Your store's myshopify.com domain (e.g., my-store.myshopify.com)
  • SHOPIFY_ACCESS_TOKEN - Admin API access token from custom app

Required API Scopes

ScopeAccess
read_orders / write_ordersOrders, Fulfillments, Abandoned Checkouts
read_products / write_productsProducts, Variants, Collections
read_customers / write_customersCustomers, Segments
read_inventory / write_inventoryInventory Levels, Items
read_returns / write_returnsReturns
read_all_ordersOrders older than 60 days (requires approval)

Authentication

All requests require this header:

X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN

Getting an Access Token

  1. Go to your Shopify Admin > Settings > Apps and sales channels
  2. Click "Develop apps" > "Create an app"
  3. Configure Admin API scopes based on what you need
  4. Install the app to your store
  5. Copy the Admin API access token

API Reference

Base URL: https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10

Orders

List Orders

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/orders.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Query parameters: ids, limit, since_id, created_at_min, created_at_max, updated_at_min, updated_at_max, processed_at_min, processed_at_max, status (open, closed, cancelled, any), financial_status, fulfillment_status, fields

Get Order

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/orders/{ORDER_ID}.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Get Order Count

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/orders/count.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Update Order

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/orders/{ORDER_ID}.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -X PUT \
  -d '{"order":{"id":{ORDER_ID},"note":"Updated note","tags":"priority,vip"}}'

Close Order

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/orders/{ORDER_ID}/close.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \
  -X POST

Re-open Order

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/orders/{ORDER_ID}/open.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \
  -X POST

Cancel Order

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/orders/{ORDER_ID}/cancel.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -X POST \
  -d '{"reason":"customer","email":true,"restock":true}'

Cancel reasons: customer, fraud, inventory, declined, other

Products

List Products

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/products.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Query parameters: ids, limit, since_id, title, vendor, handle, product_type, collection_id, created_at_min, created_at_max, updated_at_min, updated_at_max, published_at_min, published_at_max, published_status (published, unpublished, any), fields, status (active, archived, draft)

Get Product

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/products/{PRODUCT_ID}.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Get Product Count

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/products/count.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Create Product

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/products.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -X POST \
  -d '{"product":{"title":"Burton Custom Freestyle","body_html":"<strong>Good snowboard!</strong>","vendor":"Burton","product_type":"Snowboard","status":"draft","variants":[{"price":"99.99","sku":"BOARD-001"}]}}'

Update Product

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/products/{PRODUCT_ID}.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -X PUT \
  -d '{"product":{"id":{PRODUCT_ID},"title":"Updated Product Title","status":"active"}}'

Delete Product

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/products/{PRODUCT_ID}.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \
  -X DELETE

Product Variants

List Variants for Product

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/products/{PRODUCT_ID}/variants.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Get Variant

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/variants/{VARIANT_ID}.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Create Variant

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/products/{PRODUCT_ID}/variants.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -X POST \
  -d '{"variant":{"option1":"Blue","price":"19.99","sku":"BLUE-001","inventory_management":"shopify"}}'

Update Variant

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/variants/{VARIANT_ID}.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -X PUT \
  -d '{"variant":{"id":{VARIANT_ID},"price":"24.99","compare_at_price":"29.99"}}'

Delete Variant

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/products/{PRODUCT_ID}/variants/{VARIANT_ID}.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \
  -X DELETE

Customers

List Customers

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/customers.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Query parameters: ids, limit, since_id, created_at_min, created_at_max, updated_at_min, updated_at_max, fields

Search Customers

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/customers/search.json?query=email:customer@example.com" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Search fields: email, phone, first_name, last_name, company, orders_count, total_spent, country, state

Get Customer

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/customers/{CUSTOMER_ID}.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Get Customer Count

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/customers/count.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Create Customer

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/customers.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -X POST \
  -d '{"customer":{"first_name":"John","last_name":"Doe","email":"john.doe@example.com","phone":"+15551234567","addresses":[{"address1":"123 Main St","city":"Ottawa","province":"ON","country":"CA","zip":"K1A 0B1"}]}}'

Update Customer

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/customers/{CUSTOMER_ID}.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -X PUT \
  -d '{"customer":{"id":{CUSTOMER_ID},"tags":"vip,wholesale","note":"Important customer"}}'

Delete Customer

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/customers/{CUSTOMER_ID}.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \
  -X DELETE

Get Customer Orders

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/customers/{CUSTOMER_ID}/orders.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Inventory

List Inventory Levels

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/inventory_levels.json?inventory_item_ids={ITEM_ID}" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Query parameters: inventory_item_ids (required), location_ids, limit, updated_at_min

Adjust Inventory Level

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/inventory_levels/adjust.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -X POST \
  -d '{"location_id":{LOCATION_ID},"inventory_item_id":{ITEM_ID},"available_adjustment":5}'

Set Inventory Level

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/inventory_levels/set.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -X POST \
  -d '{"location_id":{LOCATION_ID},"inventory_item_id":{ITEM_ID},"available":100}'

Connect Inventory to Location

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/inventory_levels/connect.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -X POST \
  -d '{"location_id":{LOCATION_ID},"inventory_item_id":{ITEM_ID}}'

Inventory Items

List Inventory Items

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/inventory_items.json?ids={ITEM_IDS}" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Get Inventory Item

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/inventory_items/{ITEM_ID}.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Update Inventory Item

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/inventory_items/{ITEM_ID}.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -X PUT \
  -d '{"inventory_item":{"id":{ITEM_ID},"cost":"25.00","tracked":true}}'

Locations

List Locations

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/locations.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Get Location

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/locations/{LOCATION_ID}.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Get Location Count

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/locations/count.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Get Inventory Levels for Location

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/locations/{LOCATION_ID}/inventory_levels.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Fulfillments

List Fulfillments for Order

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/orders/{ORDER_ID}/fulfillments.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Get Fulfillment

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/orders/{ORDER_ID}/fulfillments/{FULFILLMENT_ID}.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Get Fulfillment Count

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/orders/{ORDER_ID}/fulfillments/count.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Create Fulfillment

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/fulfillments.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -X POST \
  -d '{"fulfillment":{"line_items_by_fulfillment_order":[{"fulfillment_order_id":{FULFILLMENT_ORDER_ID}}],"tracking_info":{"number":"1Z999AA10123456784","url":"https://www.ups.com/track?tracknum=1Z999AA10123456784","company":"UPS"}}}'

Update Tracking

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/fulfillments/{FULFILLMENT_ID}/update_tracking.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -X POST \
  -d '{"fulfillment":{"tracking_info":{"number":"1Z999AA10123456784","url":"https://www.ups.com/track?tracknum=1Z999AA10123456784","company":"UPS"},"notify_customer":true}}'

Cancel Fulfillment

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/fulfillments/{FULFILLMENT_ID}/cancel.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \
  -X POST

Fulfillment Orders

List Fulfillment Orders for Order

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/orders/{ORDER_ID}/fulfillment_orders.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Get Fulfillment Order

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/fulfillment_orders/{FULFILLMENT_ORDER_ID}.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Refunds

List Refunds for Order

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/orders/{ORDER_ID}/refunds.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Get Refund

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/orders/{ORDER_ID}/refunds/{REFUND_ID}.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Calculate Refund

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/orders/{ORDER_ID}/refunds/calculate.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -X POST \
  -d '{"refund":{"shipping":{"full_refund":true},"refund_line_items":[{"line_item_id":{LINE_ITEM_ID},"quantity":1,"restock_type":"return"}]}}'

Restock types: no_restock, cancel, return, legacy_restock

Create Refund

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/orders/{ORDER_ID}/refunds.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -X POST \
  -d '{"refund":{"currency":"USD","notify":true,"note":"Customer returned item","shipping":{"full_refund":true},"refund_line_items":[{"line_item_id":{LINE_ITEM_ID},"quantity":1,"restock_type":"return"}],"transactions":[{"parent_id":{TRANSACTION_ID},"amount":"10.00","kind":"refund","gateway":"shopify_payments"}]}}'

Returns

List Returns

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/returns.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Query parameters: limit, status (open, closed, cancelled, requested, in_progress)

Get Return

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/returns/{RETURN_ID}.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Create Return

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/returns.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -X POST \
  -d '{"return":{"order_id":{ORDER_ID},"return_line_items":[{"fulfillment_line_item_id":{FULFILLMENT_LINE_ITEM_ID},"quantity":1,"return_reason":"WRONG_ITEM"}]}}'

Return reasons: UNKNOWN, SIZE_TOO_SMALL, SIZE_TOO_LARGE, UNWANTED, NOT_AS_DESCRIBED, WRONG_ITEM, DEFECTIVE, STYLE, COLOR, OTHER

Transactions

List Transactions for Order

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/orders/{ORDER_ID}/transactions.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Get Transaction

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/orders/{ORDER_ID}/transactions/{TRANSACTION_ID}.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Get Transaction Count

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/orders/{ORDER_ID}/transactions/count.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Create Transaction (Capture)

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/orders/{ORDER_ID}/transactions.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -X POST \
  -d '{"transaction":{"kind":"capture","amount":"10.00","parent_id":{AUTHORIZATION_ID}}}'

Transaction kinds: authorization, capture, sale, void, refund

Collections

List Custom Collections

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/custom_collections.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Get Custom Collection

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/custom_collections/{COLLECTION_ID}.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Create Custom Collection

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/custom_collections.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -X POST \
  -d '{"custom_collection":{"title":"Summer Collection","body_html":"<p>Summer products</p>"}}'

Update Custom Collection

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/custom_collections/{COLLECTION_ID}.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -X PUT \
  -d '{"custom_collection":{"id":{COLLECTION_ID},"title":"Updated Collection"}}'

Delete Custom Collection

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/custom_collections/{COLLECTION_ID}.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \
  -X DELETE

List Smart Collections

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/smart_collections.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Get Smart Collection

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/smart_collections/{COLLECTION_ID}.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Create Smart Collection

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/smart_collections.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -X POST \
  -d '{"smart_collection":{"title":"Sale Items","rules":[{"column":"compare_at_price","relation":"greater_than","condition":"0"}]}}'

Rule columns: title, type, vendor, variant_price, tag, compare_at_price, weight, inventory_stock, variant_compare_at_price, variant_weight, variant_inventory, variant_title

Rule relations: equals, not_equals, greater_than, less_than, starts_with, ends_with, contains, not_contains

Collects (Product-Collection Links)

List Collects

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/collects.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Query parameters: product_id, collection_id, limit, since_id, fields

Create Collect

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/collects.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -X POST \
  -d '{"collect":{"product_id":{PRODUCT_ID},"collection_id":{COLLECTION_ID}}}'

Delete Collect

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/collects/{COLLECT_ID}.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \
  -X DELETE

Abandoned Checkouts

List Abandoned Checkouts

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/checkouts.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Query parameters: limit, since_id, created_at_min, created_at_max, updated_at_min, updated_at_max, status (open, closed)

Get Abandoned Checkout Count

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/checkouts/count.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Status Reference

Order Status

FieldValues
financial_statuspending, authorized, partially_paid, paid, partially_refunded, refunded, voided
fulfillment_statusnull (unfulfilled), partial, fulfilled, restocked

Product Status

StatusDescription
activeAvailable for sale
archivedNo longer available, hidden from admin lists
draftNot ready for sale

Return Status

StatusDescription
requestedReturn requested by customer
in_progressReturn being processed
openReturn accepted, awaiting items
closedReturn completed
cancelledReturn cancelled

Pagination

Shopify uses cursor-based pagination via the Link header.

Using Page Info

# First request
curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/products.json?limit=50" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \
  -i

Response includes Link header:

Link: <https://store.myshopify.com/admin/api/2024-10/products.json?page_info=abc123&limit=50>; rel="next"
# Next page
curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/products.json?page_info=abc123&limit=50" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Note: When using page_info, you cannot use other query parameters except limit and fields.

Rate Limiting

Shopify uses a leaky bucket algorithm:

  • Bucket size: 40 requests
  • Leak rate: 2 requests/second
  • Restoration: ~20 seconds for full bucket

Response headers:

  • X-Shopify-Shop-Api-Call-Limit: Current usage (e.g., 32/40)
  • Retry-After: Seconds to wait (on 429 response)

Best Practices

  1. Check X-Shopify-Shop-Api-Call-Limit header
  2. If near limit, add delays between requests
  3. On 429 response, wait for Retry-After seconds
  4. Use bulk operations for large data sets

Webhooks

List Webhooks

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/webhooks.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"

Create Webhook

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/webhooks.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -X POST \
  -d '{"webhook":{"topic":"orders/create","address":"https://example.com/webhooks/orders","format":"json"}}'

Common topics: orders/create, orders/updated, orders/fulfilled, orders/cancelled, products/create, products/update, products/delete, customers/create, customers/update, inventory_levels/update, refunds/create

Delete Webhook

curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/webhooks/{WEBHOOK_ID}.json" \
  -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \
  -X DELETE

Changelog

v1.0.0

  • Initial release with full Admin REST API coverage
  • Orders, Products, Variants, Customers
  • Inventory management (levels, items, locations)
  • Fulfillments and fulfillment orders
  • Refunds, Returns, Transactions
  • Collections (custom, smart) and collects
  • Abandoned checkouts
  • Webhooks management
  • Status reference tables
  • Pagination and rate limiting documentation

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

Emissor de Nota Fiscal Paulistana

Faturamento NFS-e SP (Emissão e Cancelamento de Notas Fiscais em São Paulo)

Registry SourceRecently Updated
1270Profile unavailable
General

De-AI-fy Text Skill1.0.0

Remove AI-like features from text to make it more natural and human-like (去除AI生成文本的AI特征,使文本更自然、更接近人类写作)

Registry SourceRecently Updated
2080Profile unavailable
General

Brand Monitor - 品牌舆情监控

新能源汽车品牌舆情监控 - 自动搜索、分析国内平台的品牌提及情况

Registry SourceRecently Updated
2960Profile unavailable
General

browserbase-sessions

Create and manage persistent Browserbase cloud browser sessions with authentication persistence. Use when you need to automate browsers, maintain logged-in s...

Registry SourceRecently Updated
9180Profile unavailable