Skip to main content

Shopify API Endpoints

Reference for the Shopify Admin API endpoints the iPaaS.com Shopify integration calls to read and write your store data.

This article lists the Shopify Admin API endpoints the iPaaS.com Shopify integration calls. It is a reference for what the integration accesses on your store; you do not call these yourself.

Endpoint areas: Authentication / OAuth · Products · Product Options · Product Variants · Customers · Companies (B2B) · Product Categories / Collections · Inventory · Locations · Orders · Fulfillments · Returns · Gift Cards · Metafields · Webhooks · Channels. (Use the article's table of contents to jump to a section.)

Base URL

All calls are made to your store's Shopify Admin API:

[Base URL] = https://{API Store}.myshopify.com
  • {API Store} is the store handle from your iPaaS.com subscription settings (for example, ipaas-dot-com).

  • {API Version} is the API Version configured in your subscription settings (for example, 2026-01).

The integration uses both the REST Admin API ([Base URL]/admin/api/{API Version}/<resource>.json) and the GraphQL Admin API. All GraphQL operations post to a single endpoint:

POST [Base URL]/admin/api/{API Version}/graphql.json

For GraphQL operations below, the Operation is the GraphQL query/mutation name and Key fields summarizes the main fields the integration reads or writes — the integration sends a full GraphQL document to the graphql.json endpoint above.

Authentication / OAuth

Exchange authorization code for access token (POST)

[Base URL]/admin/oauth/access_token

Used during installation of an app created after April 1, 2026 to convert the temporary authorization code into a permanent access token (sends Client Id, Client Secret, and the code).

Products

Get all products (GET)

[Base URL]/admin/api/{API Version}/products.json

Create a product (POST — GraphQL)

  • Operation: productCreate (with productSet / variant operations for the full product tree)

  • Key fields: id, title, descriptionHtml, status, vendor, tags, productType, handle, templateSuffix, publishedAt, options (id, name, optionValues), images, variants (sku, price, compareAtPrice, barcode, taxable, inventoryPolicy, inventoryItem.measurement.weight, unitCost, requiresShipping, selectedOptions), metafields

Get a product by SKU (POST — GraphQL)

  • Operation: productVariants(query: "sku:'{sku}'")

  • Key fields: product variant id (used to resolve the product behind a SKU)

Product Options

Create product options (POST — GraphQL)

  • Operation: productOptionsCreate

  • Key fields: productId, option name, option values; returns product options (id, name, position, optionValues)

Update product options (POST — GraphQL)

  • Operation: productOptionUpdate

  • Key fields: productId, option id + name, optionValuesToUpdate, optionValuesToAdd

Product Variants

Get a variant (POST — GraphQL)

  • Operation: productVariant(id)

  • Key fields: id, sku, price, barcode, title, position, taxable, inventoryPolicy, inventoryQuantity, inventoryItem (requiresShipping, tracked, measurement.weight, inventoryLevels), selectedOptions, image, product

Create variants in bulk (POST — GraphQL)

  • Operation: productVariantsBulkCreate (strategy DEFAULT / REMOVE_STANDALONE_VARIANT)

  • Key fields: productId, barcode, compareAtPrice, price, taxable, taxCode, inventoryPolicy, inventoryItem (sku, requiresShipping, tracked, cost, countryCodeOfOrigin, harmonizedSystemCode, measurement.weight), inventoryQuantities (availableQuantity, locationId), optionValues, mediaId/mediaSrc, metafields

Update variants in bulk (POST — GraphQL)

  • Operation: productVariantsBulkUpdate

  • Key fields: same as bulk create, keyed by variant id

Customers

Get all customers (GET)

[Base URL]/admin/api/{API Version}/customers.json

Get a customer (POST — GraphQL)

  • Operation: customer(id)

  • Key fields: id, firstName, lastName, email, phone, numberOfOrders, amountSpent, note, verifiedEmail, tags, defaultAddress, addresses, metafields, image

Create / update a customer (POST — GraphQL)

  • Operation: customerCreate / customerUpdate

  • Key fields: email, phone, firstName, lastName, tags, taxExempt, addresses (address1/2, city, country, provinceCode, zip, company, phone), smsMarketingConsent

Companies (B2B)

Get a company (POST — GraphQL)

  • Operation: company(id)

  • Key fields: id, name, note, externalId, totalSpent, contactsCount, defaultRole, createdAt, updatedAt, metafields

Create a company (POST — GraphQL)

  • Operation: companyCreate

  • Key fields: name, externalId, mainContact (customer email/firstName/lastName), contacts, contactRoles, locations (shippingAddress)

Update a company (POST — GraphQL)

  • Operation: companyUpdate

  • Key fields: companyId, name, note

Product Categories / Collections

Get a collection (POST — GraphQL)

  • Operation: collection(id)

  • Key fields: id, title, descriptionHtml, handle, templateSuffix, sortOrder, updatedAt, image, metafields

Create / update a collection (POST — GraphQL)

  • Operation: collectionCreate / collectionUpdate

  • Key fields: title, descriptionHtml, handle, templateSuffix

Delete a collection (POST — GraphQL)

  • Operation: collectionDelete

  • Key fields: collection id; returns deletedCollectionId

Custom collections (REST)

GET    [Base URL]/admin/api/{API Version}/custom_collections.json
GET    [Base URL]/admin/api/{API Version}/custom_collections/{id}.json
POST   [Base URL]/admin/api/{API Version}/custom_collections.json
PUT    [Base URL]/admin/api/{API Version}/custom_collections/{id}.json
DELETE [Base URL]/admin/api/{API Version}/custom_collections/{id}.json

Collects (product↔collection membership) (REST)

GET    [Base URL]/admin/api/{API Version}/collects.json
DELETE [Base URL]/admin/api/{API Version}/collects/{id}.json

Inventory

Get inventory levels (GET)

[Base URL]/admin/api/{API Version}/inventory_levels.json?inventory_item_ids={inventoryItemId}

Set inventory level (POST)

[Base URL]/admin/api/{API Version}/inventory_levels/set.json

Adjust inventory quantities (POST — GraphQL)

  • Operation: inventoryAdjustQuantities (uses the @idempotent directive and requires a changeFromQuantity on each change — both introduced as requirements in Shopify Admin API version 2026-04; the integration supplies them automatically)

  • Key fields: reason, name (available), changes (locationId, delta, inventoryItemId, changeFromQuantity)

Activate / deactivate inventory tracking at a location (POST — GraphQL)

  • Operation: inventoryBulkToggleActivation

  • Key fields: inventoryItemId, inventoryItemUpdates (locationId, activate)

Get fulfillment services (GET)

[Base URL]/admin/api/{API Version}/fulfillment_services.json

Locations

Get all locations (GET)

[Base URL]/admin/api/{API Version}/locations.json

Get a location (GET)

[Base URL]/admin/api/{API Version}/locations/{id}.json

Find a location by name (POST — GraphQL)

  • Operation: locations(query: "name:{name}")

  • Key fields: id, name, isActive, address — used to match an existing location (including deactivated) before create, and to recover from a duplicate-name conflict (Update and Link collision handling)

Create / update a location (POST — GraphQL)

  • Operation: locationAdd / locationEdit

  • Key fields: name, address (address1/2, city, zip, provinceCode, countryCode, phone); returns id, name, isActive

Activate a location (POST — GraphQL)

  • Operation: locationActivate (uses the @idempotent directive — requires Shopify Admin API version 2026-04 or later)

  • Key fields: locationId; reactivates a deactivated location before an update is applied

Orders

Get all orders (GET)

[Base URL]/admin/api/{API Version}/orders.json

Get an order (GET)

[Base URL]/admin/api/{API Version}/orders/{id}.json

Create an order (POST)

[Base URL]/admin/api/{API Version}/orders.json

Update an order (PUT)

[Base URL]/admin/api/{API Version}/orders/{id}.json

Get transactions for an order (GET)

[Base URL]/admin/api/{API Version}/orders/{id}/transactions.json

Fulfillments

Get an order's fulfillment orders (GET)

[Base URL]/admin/api/{API Version}/orders/{id}/fulfillment_orders.json

Create a fulfillment (POST)

[Base URL]/admin/api/{API Version}/fulfillments.json

Returns

Returns are managed entirely through the GraphQL Admin API. When a return is pushed from iPaaS.com, the integration first confirms which shipped items on the order can still be returned, then creates the return; closing or cancelling a return operates on the return that was created earlier.

Get an order's returnable fulfillments (POST — GraphQL)

  • Operation: returnableFulfillments(orderId)

  • Key fields: returnableFulfillmentLineItems (fulfillmentLineItem id, quantity) — used to confirm how many units of each shipped item remain returnable before a return is created.

Get an order's fulfillment line items (POST — GraphQL)

  • Operation: order(id) { fulfillments { fulfillmentLineItems } }

  • Key fields: fulfillment line item id, lineItem sku — used to match a return line's SKU to the shipped item on the order.

Create a return (POST — GraphQL)

  • Operation: returnCreate

  • Key fields: orderId, returnLineItems (fulfillmentLineItemId, quantity, returnReason, returnReasonNote), returnShippingFee (amount, currencyCode); returns the return id, name, status, totalQuantity, returnLineItems, returnShippingFees

Get a return (POST — GraphQL)

  • Operation: return(id)

  • Key fields: id, name, status, closedAt, totalQuantity, order, returnLineItems (quantity, returnReason, returnReasonNote, refundableQuantity, refundedQuantity, fulfillmentLineItem.lineItem.sku), returnShippingFees

Close a return (POST — GraphQL)

  • Operation: returnClose

  • Key fields: return id; returns id, status, closedAt

Cancel a return (POST — GraphQL)

  • Operation: returnCancel

  • Key fields: return id; returns id, status, closedAt

Gift Cards

Get all gift cards (GET)

[Base URL]/admin/api/{API Version}/gift_cards.json

Get a gift card (GET)

[Base URL]/admin/api/{API Version}/gift_cards/{id}.json

Create a gift card (POST)

[Base URL]/admin/api/{API Version}/gift_cards.json

Update a gift card (PUT)

[Base URL]/admin/api/{API Version}/gift_cards/{id}.json

Metafields

Get / create metafields (GET / POST)

GET  [Base URL]/admin/api/{API Version}/metafields.json?metafield[owner_id]={id}&metafield[owner_resource]={parentType}
POST [Base URL]/admin/api/{API Version}/metafields.json

Update / delete a metafield (PUT / DELETE)

PUT    [Base URL]/admin/api/{API Version}/{parentType}/{id}/metafields/{metafieldId}.json
DELETE [Base URL]/admin/api/{API Version}/metafields/{metafieldId}.json

Webhooks

Get / create webhooks (GET / POST)

GET  [Base URL]/admin/api/{API Version}/webhooks.json
POST [Base URL]/admin/api/{API Version}/webhooks.json

Used to register and read the Shopify event subscriptions (customer, order, product, collection, company, location, etc.) that drive inbound transfers.

Manage GraphQL webhook subscriptions (POST — GraphQL)

  • Operation: webhookSubscriptions / webhookSubscriptionCreate / webhookSubscriptionDelete

  • Key fields: topic, callback endpoint — used to register the return events (for example RETURNS_REQUEST, RETURNS_APPROVE, RETURNS_CLOSE, RETURNS_CANCEL, RETURNS_DECLINE) that drive inbound return transfers. These topics are only available through the GraphQL Admin API, so they are registered here rather than through the REST webhooks endpoint above.

Channels

Get sales channels (POST — GraphQL)

  • Operation: channels

  • Key fields: id, name — used to resolve publication/sales-channel targets when publishing products

Did this answer your question?