Shopify API Endpoints
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 · Gift Cards · Metafields · Webhooks · Channels. (Use the article's table of contents to jump to a section.)
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.jsonFor 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.jsonCreate a product (POST — GraphQL)
Operation:
productCreate(withproductSet/ 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:
productOptionsCreateKey fields: productId, option name, option values; returns product options (id, name, position, optionValues)
Update product options (POST — GraphQL)
Operation:
productOptionUpdateKey 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(strategyDEFAULT/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:
productVariantsBulkUpdateKey fields: same as bulk create, keyed by variant id
Customers
Get all customers (GET)
[Base URL]/admin/api/{API Version}/customers.jsonGet 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/customerUpdateKey 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:
companyCreateKey fields: name, externalId, mainContact (customer email/firstName/lastName), contacts, contactRoles, locations (shippingAddress)
Update a company (POST — GraphQL)
Operation:
companyUpdateKey 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/collectionUpdateKey fields: title, descriptionHtml, handle, templateSuffix
Delete a collection (POST — GraphQL)
Operation:
collectionDeleteKey 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}.jsonCollects (product↔collection membership) (REST)
GET [Base URL]/admin/api/{API Version}/collects.json
DELETE [Base URL]/admin/api/{API Version}/collects/{id}.jsonInventory
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.jsonAdjust inventory quantities (POST — GraphQL)
Operation:
inventoryAdjustQuantitiesKey fields: reason, name (
available), changes (locationId, delta, inventoryItemId)
Activate / deactivate inventory tracking at a location (POST — GraphQL)
Operation:
inventoryBulkToggleActivationKey fields: inventoryItemId, inventoryItemUpdates (locationId, activate)
Get fulfillment services (GET)
[Base URL]/admin/api/{API Version}/fulfillment_services.jsonLocations
Get all locations (GET)
[Base URL]/admin/api/{API Version}/locations.jsonGet a location (GET)
[Base URL]/admin/api/{API Version}/locations/{id}.jsonFind 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/locationEditKey fields: name, address (address1/2, city, zip, provinceCode, countryCode, phone); returns id, name, isActive
Activate a location (POST — GraphQL)
Operation:
locationActivate(uses the@idempotentdirective — 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.jsonGet an order (GET)
[Base URL]/admin/api/{API Version}/orders/{id}.jsonCreate an order (POST)
[Base URL]/admin/api/{API Version}/orders.jsonUpdate an order (PUT)
[Base URL]/admin/api/{API Version}/orders/{id}.jsonGet transactions for an order (GET)
[Base URL]/admin/api/{API Version}/orders/{id}/transactions.jsonFulfillments
Get an order's fulfillment orders (GET)
[Base URL]/admin/api/{API Version}/orders/{id}/fulfillment_orders.jsonCreate a fulfillment (POST)
[Base URL]/admin/api/{API Version}/fulfillments.jsonGift Cards
Get all gift cards (GET)
[Base URL]/admin/api/{API Version}/gift_cards.jsonGet a gift card (GET)
[Base URL]/admin/api/{API Version}/gift_cards/{id}.jsonCreate a gift card (POST)
[Base URL]/admin/api/{API Version}/gift_cards.jsonUpdate a gift card (PUT)
[Base URL]/admin/api/{API Version}/gift_cards/{id}.jsonMetafields
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.jsonUpdate / 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}.jsonWebhooks
Get / create webhooks (GET / POST)
GET [Base URL]/admin/api/{API Version}/webhooks.json
POST [Base URL]/admin/api/{API Version}/webhooks.jsonUsed to register and read the Shopify event subscriptions (customer, order, product, collection, company, location, etc.) that drive inbound transfers.
Channels
Get sales channels (POST — GraphQL)
Operation:
channelsKey fields: id, name — used to resolve publication/sales-channel targets when publishing products
