openapi: 3.1.0 info: title: ChannelApe API version: '2026-10-08' description: 'GENERATED FROM DOCUMENTATION by API Evangelist on 2026-10-08: 8 operation(s) read from 8 public documentation page(s) (each operation names its page in x-source). This is not the provider''s published contract; ChannelApe has published no machine-readable contract that the pipeline could find. Engine: local.' x-evidence-tiers: code-example: 7 documentation: 1 pages-with-code: 2 pages-read: 8 x-generated-from: documentation x-provenance: generated x-authored-by: API Evangelist x-generated: '2026-10-08' x-generator: generate-contract-from-docs.py x-engine: local x-sources: - https://dev.channelape.com/docs/inventory/inventory-api - https://dev.channelape.com/docs/api-usage - https://dev.channelape.com/docs/playbook-webhook-process-cancellations - https://dev.channelape.com/docs/playbook-webhook-ship-confirmations-step - https://dev.channelape.com/docs/playbook-webhook-fulfillment-order-rejections - https://dev.channelape.com/docs/upserts-overview - https://dev.channelape.com/docs/webhooks-configuration - https://dev.channelape.com/docs/playbook-webhook-send-orders-step servers: - url: https://api.channelape.io paths: /0b2d6f2b-4676-40b4-9588-2a4c93f6b250: post: operationId: post_0b2d6f2b_4676_40b4_9588_2a4c93f6b250 tags: - 0B2D6F2B 4676 40B4 9588 2A4C93F6B250 summary: Webhook Send Orders Step description: Sends order fulfillment request to the configured payload URL. Successful (200‑299) or redirection (300‑399) responses update the fulfillment status to PENDING. x-source: https://dev.channelape.com/docs/playbook-webhook-send-orders-step parameters: - name: authToken in: query required: false schema: type: string description: Authentication token query parameter (AUTH_TOKEN_QUERY_PARAMETER_FIELD). requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Post0B2D6F2B467640B495882A4C93F6B250Request' responses: '201': description: Success (status as documented) content: application/json: schema: $ref: '#/components/schemas/Post0B2D6F2B467640B495882A4C93F6B250Response' x-evidence: kind: documentation /6f7402b4-e75c-4573-b3b4-3139dc1b733d: post: operationId: post_6f7402b4_e75c_4573_b3b4_3139dc1b733d tags: - 6F7402B4 E75C 4573 B3B4 3139Dc1B733D summary: Webhook Send Orders Step description: Sends order fulfillment request to the warehouse‑specific webhook URL defined in WAREHOUSE_LOCATION_MAP. Successful responses update the fulfillment status to PENDING. x-source: https://dev.channelape.com/docs/playbook-webhook-send-orders-step requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Post6F7402B4E75C4573B3B43139Dc1B733DRequest' responses: '201': description: Success (status as documented) content: application/json: schema: $ref: '#/components/schemas/Post6F7402B4E75C4573B3B43139Dc1B733DResponse' x-evidence: kind: documentation /rest/v1/rpc/{rpcid}: post: operationId: post_rest_v1_rpc_rpcid tags: - Rest summary: POST /rest/v1/rpc/create_api_account x-source: https://dev.channelape.com/docs/api-usage parameters: - name: rpcid in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PostRestV1RpcRpcidRequest' responses: '201': description: Success (status as documented) x-evidence: kind: code-example language: curl snippet: "curl 'https://api.channelape.io/rest/v1/rpc/create_api_account' \\ -d '{ \"business_id\": \"c8c6bcfa-f544-4680-bbf3-7d93aee95efa\"\ , \"name\": \"My API Account\" }' \\ -H \"apikey: ANON_KEY\" \\ -H \"Content-Type: application/vnd.pgrst.object+json\" \\ -H \"Authorization:\ \ Bearer YOUR_KEY\" \n This will create your API account private key. Note, that this is only shown once, so ensure you save it.\nOnce\ \ you have your A" collapsed_from: 4 example path(s) differing only at rpcId /rest/v1/{v1id}: get: operationId: get_rest_v1_v1id tags: - Rest summary: GET /rest/v1/webhook_actions x-source: https://dev.channelape.com/docs/api-usage parameters: - name: v1id in: path required: true schema: type: string - name: business_id in: query required: false schema: type: string responses: '200': description: Success (status as documented) x-evidence: kind: code-example language: curl snippet: "curl 'https://api.channelape.io/rest/v1/webhook_actions' \\ -H \"apikey: ANON_KEY\" \\ -H \"Authorization: Bearer YOUR_KEY\"\ \ \n Creating an API Account ​ \n You can create an API account to access your businesses resources across ChannelApe API's. To do this,\ \ you need be the owner of the business. Run the following command: " collapsed_from: 2 example path(s) differing only at v1Id post: operationId: post_rest_v1_v1id tags: - Rest summary: POST /rest/v1/webhook_configuration_actions x-source: https://dev.channelape.com/docs/webhooks-configuration parameters: - name: v1id in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PostRestV1V1IdRequest' responses: '201': description: Success (status as documented) x-evidence: kind: code-example language: curl snippet: "curl -X POST 'https://api.channelape.io/rest/v1/webhook_configuration_actions' \\ -H 'Content-Type: application/json' \\ -H\ \ \"apikey: ANON_KEY\" \\ -H \"Authorization: Bearer YOUR_KEY\" \\ -d '{ \"webhook_configuration_id\" : \"bdd307a8-8488-4f37-a5c2-da04e3d0d736\"\ , \"action\" : \"shipment.updated.status\", \"capture_snapshot\": false }' \n Capture Snapshots ​ \n Initially when webhooks launched,\ \ we captured the ent" collapsed_from: 2 example path(s) differing only at v1Id /v1/inventory_item_quantity_adjustments: post: operationId: post_v1_inventory_item_quantity_adjustments tags: - Inventory Item Quantity Adjustments summary: Setting an inventory items quantity description: POST https://api.channelape.io/v1/inventory_item_quantity_adjustments x-source: https://dev.channelape.com/docs/inventory/inventory-api requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PostV1InventoryItemQuantityAdjustmentsRequest' responses: '201': description: Success (status as documented) content: application/json: schema: $ref: '#/components/schemas/PostV1InventoryItemQuantityAdjustmentsResponse' x-evidence: kind: documentation /v1/suppliers/{supplierid}/callbacks: post: operationId: post_v1_suppliers_supplierid_callbacks tags: - Suppliers summary: Receive Fulfillment Order Receipts x-source: https://dev.channelape.com/docs/playbook-webhook-ship-confirmations-step parameters: - name: supplierid in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PostV1SuppliersSupplieridCallbacksRequest' responses: '200': description: Success (status as documented) content: application/json: schema: $ref: '#/components/schemas/PostV1SuppliersSupplieridCallbacksResponse' x-evidence: kind: documentation collapsed_from: 2 example path(s) differing only at supplierId /v1/{v1id}: get: operationId: get_v1_v1id tags: - Api summary: Retrieving current quantities for an item description: GET https://api.channelape.io/v1/inventory_item_current_quantities_live x-source: https://dev.channelape.com/docs/inventory/inventory-api parameters: - name: v1id in: path required: true schema: type: string - name: location_id in: query required: true schema: type: string - name: inventory_item_id in: query required: true schema: type: string - name: business_id in: query required: true schema: type: string responses: '200': description: Success (status as documented) content: application/json: schema: $ref: '#/components/schemas/GetV1V1IdResponse' x-evidence: kind: documentation collapsed_from: 2 example path(s) differing only at v1Id components: schemas: Post0B2D6F2B467640B495882A4C93F6B250Request: type: object properties: additionalFields: type: object description: Order level additional fields. customer: type: object description: Customer information. lineItems: type: array description: Array of line item objects. locationId: type: string purchasedAt: type: string description: ISO timestamp of purchase. purchaseOrderNumber: type: string shippingCompany: type: string shippingMethod: type: string status: type: string description: Order fulfillment status (e.g., NEW). warehouseOrderId: type: string warehouseCode: type: string warehouseCompany: type: string warehouseName: type: string warehouseId: type: string warehouseZipcode: type: string channelOrderId: type: string channelId: type: string orderId: type: string required: - additionalFields - customer - lineItems - locationId - purchasedAt - purchaseOrderNumber - shippingCompany - shippingMethod - status - warehouseOrderId - warehouseCode - warehouseCompany - warehouseName - warehouseId - warehouseZipcode - channelOrderId - channelId - orderId Post0B2D6F2B467640B495882A4C93F6B250Response: type: object properties: status: type: integer description: HTTP status code of the webhook response. body: type: string description: Response body returned by the webhook endpoint. Post6F7402B4E75C4573B3B43139Dc1B733DRequest: type: object properties: additionalFields: type: object customer: type: object lineItems: type: array locationId: type: string purchasedAt: type: string purchaseOrderNumber: type: string shippingCompany: type: string shippingMethod: type: string status: type: string warehouseOrderId: type: string warehouseCode: type: string warehouseCompany: type: string warehouseName: type: string warehouseId: type: string warehouseZipcode: type: string channelOrderId: type: string channelId: type: string orderId: type: string required: - additionalFields - customer - lineItems - locationId - purchasedAt - purchaseOrderNumber - shippingCompany - shippingMethod - status - warehouseOrderId - warehouseCode - warehouseCompany - warehouseName - warehouseId - warehouseZipcode - channelOrderId - channelId - orderId Post6F7402B4E75C4573B3B43139Dc1B733DResponse: type: object properties: status: type: integer description: HTTP status code of the webhook response. body: type: string description: Response body returned by the webhook endpoint. PostRestV1RpcRpcidRequest: type: object properties: business_id: type: string name: type: string PostRestV1V1IdRequest: type: object properties: webhook_configuration_id: type: string action: type: string capture_snapshot: type: boolean PostV1InventoryItemQuantityAdjustmentsRequest: type: object properties: quantity: type: string business_id: type: string inventory_item_id: type: string location_id: type: string status: type: string operation: type: string memo: type: string external_ids: type: string required: - quantity - business_id - inventory_item_id - location_id - status - operation PostV1InventoryItemQuantityAdjustmentsResponse: type: object properties: id: type: string inventory_item_id: type: string location_id: type: string business_id: type: string status: type: string quantity: type: number adjustment_time: type: string memo: type: string operation: type: string creation_time: type: string update_time: type: string external_ids: type: object sub: type: string PostV1SuppliersSupplieridCallbacksRequest: type: object properties: fulfillmentOptions: type: object description: Options for the fulfillment request, e.g., partialShipments flag. orderUpdate: type: object description: Root object containing order identification and fulfillment details. orderUpdate.id: type: string description: Order identifier. orderUpdate.channelOrderId: type: string description: Channel order identifier. orderUpdate.purchaseOrderNumber: type: string description: Purchase order number. orderUpdate.fulfillments: type: array description: List of fulfillment objects. orderUpdate.fulfillments[].id: type: string description: Fulfillment identifier. orderUpdate.fulfillments[].additionalFields: type: array description: Custom name/value pairs, e.g., warehouse_order_id. orderUpdate.fulfillments[].additionalFields[].name: type: string description: Name of the additional field. orderUpdate.fulfillments[].additionalFields[].value: type: string description: Value of the additional field. orderUpdate.fulfillments[].supplierId: type: string description: Supplier identifier. orderUpdate.fulfillments[].shippingCompany: type: string description: Shipping company name. orderUpdate.fulfillments[].shippingMethod: type: string description: Shipping method. orderUpdate.fulfillments[].trackingNumber: type: string description: Tracking number. orderUpdate.fulfillments[].trackingUrls: type: array description: Array of tracking URL strings. orderUpdate.fulfillments[].shippedAt: type: string description: Timestamp of shipment (ISO 8601). orderUpdate.fulfillments[].locationId: type: string description: Location identifier that must exist in the WAREHOUSE_LOCATION_MAP. orderUpdate.fulfillments[].status: type: string description: Fulfillment status (e.g., OPEN, SUCCESS, CANCELED, PENDING, NEW, BACKORDER). orderUpdate.fulfillments[].lineItems: type: array description: List of line item objects. orderUpdate.fulfillments[].lineItems[].id: type: string description: Line item identifier. orderUpdate.fulfillments[].lineItems[].sku: type: string description: SKU of the line item. orderUpdate.fulfillments[].lineItems[].title: type: string description: Title of the line item. orderUpdate.fulfillments[].lineItems[].additionalFields: type: array description: Custom fields for the line item. orderUpdate.fulfillments[].lineItems[].grams: type: integer description: Weight in grams. orderUpdate.fulfillments[].lineItems[].price: type: integer description: Price amount. orderUpdate.fulfillments[].lineItems[].shippingPrice: type: integer description: Shipping price amount. orderUpdate.fulfillments[].lineItems[].shippingTax: type: integer description: Shipping tax amount. orderUpdate.fulfillments[].lineItems[].quantity: type: integer description: Quantity of the line item. orderUpdate.fulfillments[].lineItems[].shippingMethod: type: string description: Shipping method for the line item. orderUpdate.fulfillments[].lineItems[].vendor: type: string description: Vendor name. required: - orderUpdate - orderUpdate.fulfillments - orderUpdate.fulfillments[].additionalFields[].name - orderUpdate.fulfillments[].additionalFields[].value - orderUpdate.fulfillments[].locationId - orderUpdate.fulfillments[].status - orderUpdate.fulfillments[].lineItems - orderUpdate.fulfillments[].lineItems[].quantity PostV1SuppliersSupplieridCallbacksResponse: type: object properties: updateResult: type: object description: Result summary of the update operation. updateResult.inventoryAdjustmentCount: type: integer description: Number of inventory adjustments performed. updateResult.inventorySetCount: type: integer description: Number of inventory set operations performed. updateResult.orderActivityCount: type: integer description: Number of order activities created. updateResult.orderUpdateCount: type: integer description: Number of order updates applied. GetV1V1IdResponse: type: object properties: business_id: type: string inventory_item_id: type: string location_id: type: string available_to_sell: type: number committed: type: number on_hand: type: number on_hold: type: number on_order: type: number reserve: type: number incoming: type: number unavailable: type: number available_to_promise: type: number sku: type: string title: type: string location: type: string location_legacy_id: type: string inventory_item_legacy_id: type: string securitySchemes: apiKey: type: apiKey in: header name: apikey security: - apiKey: [] tags: - name: 0B2D6F2B 4676 40B4 9588 2A4C93F6B250 - name: 6F7402B4 E75C 4573 B3B4 3139Dc1B733D - name: Api - name: Inventory Item Quantity Adjustments - name: Rest - name: Suppliers