Skip to main content

ChannelApe V1 API Documentation

Download OpenAPI specification:Download

Error Handling

Invalid requests will return with a non-200 level status code. The request will also contain one to many error codes. You can look up the error code and its meaning in the below table.

500 level status codes are usually intermittent and should be retried. If you are still encountering a 500 level status code after retrying the request a few times, please open a bug on our community page and a ChannelApe team member will look into it.

Code Enum Message
0 INTERNAL_SERVER_ERROR An internal server error occurred. Please check the server logs.
1 USER_ALREADY_EXISTS User already exists for email address.
2 INCORRECT_USERNAME_OR_PASSWORD Invalid email or password.
3 INVALID_VERIFICATION_TOKEN Invalid verification code. Please check the link in your email.
4 MALFORMED_AUTHORIZATION_TOKEN A malformed authorization token was received. Please check the server logs and try again.
5 MALFORMED_USERNAME Email address is not valid.
6 MALFORMED_PASSWORD Password does not meet our requirements.
7 EXPIRED_VERIFICATION_TOKEN Verification code has expired. Please request a new one.
8 USERNAME_NOT_FOUND Could not find user for given username.
9 INVALID_FORGOT_PASSWORD_TOKEN Invalid forgot password code. Please check the link in your email.
10 EXPIRED_FORGOT_PASSWORD_TOKEN Password reset code has expired. Please request a new one.
11 EXPIRED_AUTHORIZATION_TOKEN Authorization token has expired. Please request a new one.
12 INVALID_AUTHORIZATION_TOKEN Invalid authorization token. Please check the server logs and try again.
13 INVALID_BUSINESS_NAME Business name cannot be blank.
14 INVALID_TIME_ZONE Provided time zone is invalid.
15 BUSINESS_NOT_FOUND Requested business cannot be found.
16 INSUFFICIENT_BUSINESS_OWNER_PERMISSIONS Only the business owner is allowed to perform this action.
17 INSUFFICIENT_BUSINESS_MEMBER_PERMISSIONS Only a member of this business can perform this action.
18 USER_NOT_FOUND Requested user cannot be found.
19 INSUFFICIENT_USER_PERMISSIONS You are not authorized to update this user.
20 USER_ALREADY_BUSINESS_MEMBER User cannot be added to business because they are already a member.
21 BUSINESS_MEMBER_NOT_FOUND Requested business member cannot be found.
22 INVALID_QUERY_PARAMETERS Request cannot be completed with given query parameters.
23 OWNER_DELETION_NOT_ALLOWED Business owner cannot be removed from members list.
24 PRODUCT_NOT_FOUND Product not found.
25 SUPPLIER_NOT_FOUND Supplier could not be found for business.
26 SKU_NOT_FOUND SKU is required for this request and could not be found.
27 UPC_NOT_FOUND UPC is required for this request and could not be found.
28 TITLE_NOT_SET Title is required field for this request.
29 INVALID_CURRENCY_CODE Alphabetic currency code provided must be one from ISO4217.
30 INVALID_INVENTORY_ITEM_KEY Inventory item key of SKU or UPC is required for business creation.
31 INVENTORY_ITEM_ALREADY_EXISTS Inventory item already exists for this supplier with given index key.
32 INVALID_RETAIL_PRICE Retail price must be a number greater than or equal to zero.
33 INVALID_WHOLESALE_PRICE Wholesale price must be a number greater than or equal to zero.
34 INVALID_GRAMS Grams must be a number greater than or equal to zero.
35 INVALID_QUANTITY Quantity must be a number greater than or equal to zero.
36 INVENTORY_ITEM_NOT_FOUND Inventory item could not be found for business.
37 SKU_DOES_NOT_MATCH_INVENTORY_ITEM_VALUE SKU cannot be changed on an inventory item when SKU is selected as the inventory item key for the business.
38 UPC_DOES_NOT_MATCH_INVENTORY_ITEM_VALUE UPC cannot be changed on an inventory item when UPC is selected as the inventory item key for the business.
39 NOT_SUPPLIER_OF_BUSINESS One of the provided supplier IDs does not exist or is not a supplier of your business.
40 INTEGRATION_NOT_FOUND Requested integration cannot be found.
41 INVALID_SUPPLIER_INTEGRATION_CREDENTIALS Required supplier integration values were not found.
42 INVALID_INTEGRATION_ACTION This action is not supported by the given integration.
43 MISSING_REQUIRED_VARIANT_ATTRIBUTES Missing a required variant attribute. Please confirm your request has IDs for the title, condition, and retailPrice attributes.
44 VARIANT_EXISTS_CREATION_FAILURE Cannot create variant because this variant already exists in our system. If you're trying to update this variant, please refer to the update API.
45 VARIANT_NOT_FOUND Variant not found. Please check the provided SKU or UPC and Product ID.
46 CONDITION_REQUIRED Attribute: condition is required. Please specify NEW, USED, or REFURBISHED as the item condition.
47 TITLE_REQUIRED Attribute: title is required. Please specify title for this request.
48 VENDOR_REQUIRED Attribute: vendor is required. Please specify vendor for this request.
49 RETAIL_PRICE_REQUIRED Attribute: retailPrice is required. Please specify retailPrice for this request.
50 INTEGRATION_ALREADY_EXISTS_FOR_BUSINESS This integration already exists for your business.
51 INVALID_CONDITION Received invalid condition. Please specify NEW, USED, or REFURBISHED.
52 INVALID_QUANTITY_MIN Minimum quantity must be a number greater than or equal to zero.
53 INVALID_QUANTITY_MAX Maximum quantity must be a number greater than or equal to zero.
54 INVALID_RETAIL_PRICE_MIN Minimum retail price must be a number greater than or equal to zero.
55 INVALID_RETAIL_PRICE_MAX Maximum retail price must be a number greater than or equal to zero.
56 INVALID_WHOLESALE_PRICE_MIN Minimum wholesale price must be a number greater than or equal to zero.
57 INVALID_WHOLESALE_PRICE_MAX Maximum wholesale price must be a number greater than or equal to zero.
58 INVALID_WEIGHT_MIN Minimum weight must be a number greater than or equal to zero.
59 INVALID_WEIGHT_MAX Maximum weight must be a number greater than or equal to zero.
60 INVALID_QUANTITY_RANGE Maximum quantity cannot be less than minimum quantity.
61 INVALID_WEIGHT_RANGE Maximum weight cannot be less than minimum weight.
62 INVALID_RETAIL_PRICE_RANGE Maximum retail price cannot be less than minimum retail price.
63 INVALID_WHOLESALE_PRICE_RANGE Maximum wholesale price cannot be less than minimum wholesale price.
64 PRODUCT_FILTER_NOT_FOUND Product filter could not be found.
65 INVALID_PRODUCT_MODIFIER_NAME Product modifier name cannot be blank.
66 INVALID_PRODUCT_MODIFIER Provided product modifier is invalid.
67 INVALID_PRODUCT_MODIFIER_TARGET Provided product modifier target is invalid.
68 INVALID_PRODUCT_MODIFIER_VALUE Provided product modifier value is invalid.
69 INVALID_CHANNEL_INTEGRATION_CREDENTIALS Required channel integration values were not found.
70 CHANNEL_NOT_FOUND Channel could not be found for business.
71 INVALID_INTEGRATION_TYPE This resource cannot be used with the provided integration due to conflicting integration types.
72 PRODUCT_MODIFIER_NOT_FOUND Product modifier could not be found.
73 PRODUCT_BLOCK_NOT_FOUND Product block could not be found.
74 BUSINESS_ID_NOT_FOUND Business ID is a required query parameter for this request.
75 INVALID_VARIANT_REFERENCE_QUERY_MISSING_PARAM You must supply an inventoryItemValue or sku for this query.
76 PRODUCT_FILTER_USED_IN_PRODUCT_BLOCK Product filter cannot be deleted because it is currently being used by one or many product blocks.
77 PRODUCT_PUSH_NOT_FOUND Product push could not be found.
78 PRODUCT_FILTER_REQUIRED Attribute: productFilterIds is required. Please specify at least one product filter ID for this request.
79 DUPLICATE_PRODUCT_MODIFIER_TARGET Product push cannot have two product modifiers with the same target.
80 INVALID_PRODUCT_PUSH_ORDINAL Product push ordinal must be greater than zero.
81 PRODUCT_FILTER_USED_IN_PRODUCT_PUSH Product filter cannot be deleted because it is currently being used by one or many product pushes.
82 PRODUCT_MODIFIER_USED_IN_PRODUCT_PUSH Product modifier cannot be deleted because it is currently being used by one or many product pushes.
83 PATH_DOES_NOT_EXIST Requested path does not exist.
84 SERVICE_UNAVAILABLE Service is temporarily unavailable.
85 INVALID_CHANNEL_SETTINGS_PRICE_TYPE Price type for channel settings is invalid.
86 INVALID_CHANNEL_SETTINGS_UPDATE_FIELD Update field for channel settings is invalid.
87 INVALID_CHANNEL_NAME Channel name cannot be blank.
88 CHANNEL_NAME_ALREADY_EXISTS_FOR_BUSINESS This name already exists for a channel in your business.
89 SHOPIFY_AUTHORIZATION_CODE_REQUIRED Attribute: authorizationCode is required. Please specify authorization code for this request.
90 SHOPIFY_SUBDOMAIN_REQUIRED Attribute: shopifySubdomain is required. Please specify shop subdomain for this request.
91 SHOPIFY_SUBDOMAIN_NOT_FOUND Shopify subdomain could not be found.
92 INVALID_SHOPIFY_AUTHORIZATION_CODE Shopify authorization code is invalid.
93 SUBSCRIPTION_EXISTS_CREATION_FAILURE Cannot create subscription because this subscription already exists in our system. If you're trying to update this subscription, please refer to the update API.
94 SUBSCRIPTION_NOT_FOUND Subscription not found for business.
95 DAYS_OF_WEEK_REQUIRED At least one day of the week is required for this request and could not be found.
96 INVALID_DAYS_OF_WEEK Days of week provided are invalid.
97 INVALID_DAILY_START_TIME_IN_MINUTES Daily start time in minutes must be a number between 1 and 1440.
98 INVALID_DAILY_END_TIME_IN_MINUTES Daily end time in minutes must be a number between 1 and 1440 that is greater than the daily start time in minutes.
99 INVALID_DAILY_INTERVAL_IN_MINUTES Daily interval in minutes must be a number between 1 and 1440.
100 SCHEDULE_NOT_FOUND Schedule could not be found.
101 RECIPE_NOT_FOUND Recipe could not be found.
102 RECIPE_SOURCE_NOT_FOUND Recipe source could not be found for business.
103 INVALID_RECIPE_SOURCE_TYPE Recipe source type is invalid.
104 INVALID_RECIPE_SOURCE_ACTION Recipe source action could not be found for integration.
105 RECIPE_TARGET_NOT_FOUND Recipe target could not be found for business.
106 INVALID_RECIPE_TARGET_TYPE Recipe target type is invalid.
107 INVALID_RECIPE_TARGET_ACTION Recipe target action could not be found for integration.
108 DUPLICATE_RECIPE_SOURCE_AND_TARGET Recipes source ID, type, and action cannot match recipe target ID, type, and action.
109 INVALID_MINUTE_OF_DAY Minute of day must be a number between 1 and 1440.
110 INVALID_DAY_OF_WEEK Day of week provided is invalid.
111 ACTION_NOT_FOUND Action could not be found.
112 INVALID_ACTION_TARGET_TYPE Action target type is invalid.
113 ACTION_ALREADY_COMPLETED Action has already been completed.
114 INVALID_ACTION_HEALTH_CHECK_INTERVAL Action health check interval must be a number between 5 seconds and 12 hours.
115 INVALID_ACTION_TARGET Action target could not be found for business.
116 INVALID_SUPPLIER_NAME Supplier name cannot be blank.
117 SUPPLIER_NAME_ALREADY_EXISTS_FOR_BUSINESS This name already exists for a supplier in your business.
118 RECIPE_SOURCE_DISABLED Recipes require enabled applications. The provided source application is currently disabled.
119 RECIPE_TARGET_DISABLED Recipes require enabled applications. The provided target application is currently disabled.
120 ACTION_ALREADY_IN_PROGRESS Action cannot be processed right now because another matching action is currently in progress. Please try again later.
121 ACTION_ON_DISABLED_CHANNEL Action cannot be performed on a disabled channel.
122 COMPLETED_TASK_NOT_FOUND Completed task could not be found.
123 INVALID_COMPLETED_TASK_TARGET Completed task target could not be found for business.
124 INVALID_COMPLETED_TASK_TARGET_TYPE Completed task target type is invalid.
125 INVALID_COMPLETED_TASK_OPERATION Completed task operation is invalid.
126 ACTION_ON_DISABLED_SUPPLIER Action cannot be performed on a disabled supplier.
127 INVALID_SUBSCRIPTION_ID Subscription ID is invalid.
128 INVALID_SUBSCRIPTION_PRODUCT_HANDLE Subscription product handle is invalid.
129 INVALID_SUBSCRIPTION_START_PERIOD Subscription start period date is invalid. Must be a valid ISO 8601 formatted date.
130 INVALID_SUBSCRIPTION_END_PERIOD Subscription end period date is invalid. Must be a valid ISO 8601 formatted date after the start period date.
131 INVALID_START_DATE Start date parameter is invalid. Must be a valid ISO 8601 formatted date.
132 INVALID_END_DATE End date parameter is invalid. Must be a valid ISO 8601 formatted date after the start date.
133 ACTION_ON_INACTIVE_SUBSCRIPTION Action cannot be performed for business with inactive subscription.
134 MISSING_SUPPLIER_FILE_SETTINGS_SOURCE At least one source is required for supplier file settings.
135 INVALID_SUPPLIER_FILE_SETTINGS_SOURCE_ID Source ID for supplier file settings must be non-empty and unique.
136 SUPPLIER_FILE_SETTINGS_MAPPING_SOURCE_ID_NOT_FOUND Source ID for supplier file settings mapping cannot be found in sources.
137 INVALID_URL Valid URL is required.
138 INVALID_SUPPLIER_FILE_SETTINGS_SOURCE_JOIN_INDEX Join index greater than or equal to zero is required for all supplier file settings sources.
139 INVALID_FILE_TYPE Invalid file type. Acceptable values are CSV, TSV, and PSV.
140 INVALID_SUPPLIER_FILE_SETTINGS_SOURCE_AUTHORIZATION_USERNAME_KEY Username key for supplier file settings source cannot be found for integration.
141 INVALID_SUPPLIER_FILE_SETTINGS_SOURCE_AUTHORIZATION_PASSWORD_KEY Password key for supplier file settings source cannot be found for integration.
142 INVALID_SUPPLIER_FILE_SETTINGS_COLUMN_INDEX Column index greater than or equal to zero is required for all supplier file setting mappings.
143 INVALID_SUPPLIER_FILE_SETTINGS_OPTIONS_KEY Non-empty key is required for supplier file settings options mapping.
144 INVALID_SUPPLIER_FILE_SETTINGS_ADDITIONAL_FIELDS_KEY Non-empty key is required for supplier file settings additional fields mapping.
145 MISSING_SUPPLIER_FILE_SETTINGS_REMOVED_FROM_FEED_TAG Removed from feed tag is required for supplier file settings.
146 INVALID_UNIT_OF_MEASUREMENT Unit of measurement must be oz, lb, g, kg, or t.
147 INVALID_FILE_ESCAPE_CHARACTER Escape character for must be a valid non-newline ASCII character.
148 INVALID_TARGET_TYPE Invalid target type
149 FILE_NOT_FOUND File could not be found on server.
150 FILE_DOWNLOAD_TIMED_OUT File could not be downloaded within time limit.
151 FILE_CANNOT_BE_DOWNLOADED You do not have permission to download the file or some other server error occurred.
152 WALMART_PRIVATE_KEY_REQUIRED Attribute: privateKey is required. Please specify Private Key for this request.
153 WALMART_CONSUMER_ID_REQUIRED Attribute: consumerId is required. Please specify Consumer ID for this request.
154 INVALID_WALMART_PRIVATE_KEY null
155 INVALID_WALMART_CREDENTIALS Invalid Walmart consumerId or privateKey.
156 INVALID_SUBSCRIPTION_LAST_COMPLETED_TASK_USAGE_RECORDING_TIME Subscription last completed task usage recording time is invalid. Must be a valid ISO 8601 formatted date.
157 INVALID_CATEGORY_MODIFIER_NAME Category Modifier name cannot be blank.
158 INVALID_CATEGORY_MODIFIER_VALUE Category Modifier value cannot be blank.
159 INVALID_ORDER_STATUS Received invalid order status. Please specify OPEN, CLOSED, IN_PROGRESS, or CANCELED.
160 INVALID_ORDER_TOTAL_PRICE Order total price must be a number greater than or equal to zero.
161 INVALID_ORDER_SUBTOTAL_PRICE Order subtotal price must be a number greater than or equal to zero.
162 INVALID_ORDER_TOTAL_TAX Order total tax must be a number greater than or equal to zero.
163 INVALID_ORDER_TOTAL_GRAMS Order total grams must be a number greater than or equal to zero.
164 INVALID_ORDER_PURCHASED_AT_DATE Attribute: purchasedAt is required. Order creation requires valid ISO 8601 fomatted date for purchasedAt.
165 INVALID_ORDER_CANCELED_AT_DATE Order canceled at date is invalid. Must be a valid ISO 8601 formatted date.
166 INVALID_FULFILLMENT_STATUS Received invalid fulfillment status. Please specify PENDING, OPEN, SUCCESS, or CANCELED.
167 INVALID_CHANNEL_ORDER_ID Channel order ID cannot be blank.
168 DUPLICATE_CHANNEL_ORDER_ID Duplicate channel order ID found. All channel order IDs must be unique for business.
169 INVALID_LINE_ITEM_ID Line Item ID cannot be blank.
170 DUPLICATE_LINE_ITEM_ID Duplicate line item ID found for order. All line items must have unique ID.
171 INVALID_LINE_ITEM_QUANTITY Line item quantity must be greater than zero.
172 INVALID_LINE_ITEM_PRICE Line item price must be a number greater than or equal to zero.
173 LINE_ITEM_REQUIRED Attribute: lineItems cannot be empty. Line item list needs to contain at least one line item.
174 ORDER_NOT_FOUND Order could not be found.
175 INVALID_ORDERS_QUERY Attribute: businessId and channelId cannot be empty. Business ID or Channel ID is a required query parameter for this request.
176 EBAY_RU_NAME_REQUIRED Attribute: ruName cannot be empty. Please specify eBay RuName for this request.
177 EBAY_AUTHORIZATION_CODE_REQUIRED Attribute: authorizationCode cannot be empty. Please specify eBay authorization code for this request.
178 EBAY_MARKETPLACE_ID_REQUIRED Attribute: marketplaceId must be valid. Please specify valid eBay Marketplace ID for this request.
179 EBAY_TOKEN_GENERATION_FAILED Could not generate long lived eBay refresh token. Please retry request with new authorization code.
180 EBAY_INVENTORY_LOCATION_ADDRESS_REQUIRED Attribute: address is required. Please specify valid inventory location address for this request.
181 EBAY_INVALID_INVENTORY_LOCATION_ADDRESS Attribute: address is invalid. Could not create eBay inventory location using provided address. Please ensure address is valid for marketplace and try again.
182 EBAY_DEFAULT_FULFILLMENT_POLICY_REQUIRED Could not find default fulfillment policy for given eBay marketplace. Please create policy within eBay and then try your request again.
183 EBAY_DEFAULT_RETURN_POLICY_REQUIRED Could not find default return policy for given eBay marketplace. Please create policy within eBay and then try your request again.
184 EBAY_DEFAULT_PAYMENT_POLICY_REQUIRED Could not find default payment policy for given eBay marketplace. Please create policy within eBay and then try your request again.
185 EBAY_SESSION_ID_REQUIRED Arrtibue: sessionId cannot be empty. Please specify eBay Session ID for this request.
186 EBAY_AUTH_TOKEN_GENERATION_FAILED Could not generate long lived eBay auth token. Please retry request with new session ID.
187 INVALID_ORDER_TOTAL_SHIPPING_PRICE Order total shipping price must be a number greater than or equal to zero.
188 INVALID_ORDER_TOTAL_SHIPPING_TAX Order total shipping tax must be a number greater than or equal to zero.
189 INVALID_LINE_ITEM_SHIPPING_PRICE Line item shipping price must be a number greater than or equal to zero.
190 INVALID_LINE_ITEM_SHIPPING_TAX Line item shipping tax must be a number greater than or equal to zero.
191 INVALID_SUPPLIER_FILE_SETTINGS_OPTIONS_VALUE Non-empty value is required for supplier file settings options mapping.
192 INVALID_SUPPLIER_FILE_SETTINGS_ADDITIONAL_FIELDS_VALUE Non-empty value is required for supplier file settings additional fields mapping.
193 WALMART_CONSUMER_CHANNEL_TYPE_REQUIRED Attribute: consumerChannelType is required. Please specify Consumer Channel Type for this request.
194 INVENTORY_ITEM_USED_BY_VARIANT_REFERENCE Inventory item cannot be deleted because it is currently being used by one or many variant references.
195 INVALID_CHANNEL_OUTPUT_FILE_COLUMN_HEADER Non-empty header is required for all channel output file columns.
196 INVALID_CHANNEL_OUTPUT_FILE_COLUMN_FIELD Field for one or more channel output file columns is invalid.
197 INVALID_CHANNEL_OUTPUT_FILE_COLUMN_KEY Non-empty key is required for each optionalValue and additionalFieldValue field within channel output file columns.
198 INVALID_CHANNEL_OUTPUT_FILE_COLUMN_INDEX Valid index is required for each productImage and image field within channel output file columns.
199 INVALID_SEARCH_FIELD_ORDINAL Attribute: ordinal is invalid. Search Field ordinal must be greater than zero.
200 INVALID_SEARCH_FIELD_PREFIX_ALREADY_EXISTS Search Field Prefix already exists for business.
201 INVALID_SEARCH_FIELD_PREFIX_MUST_BE_POPULATED Attribute: prefix is required. Please specify search field prefix for this request.
202 INVALID_SEARCH_FIELD_LABEL_ALREADY_EXISTS Search Field Label already exists for business.
203 INVALID_SEARCH_FIELD_LABEL_MUST_BE_POPULATED Attribute: label is required. Please specify search field label for this request.
204 ORDINAL_NOT_FOUND Requested search field with ordinal not found for business.
207 API_ACCOUNT_NOT_FOUND Requested API Account with id not found for business.
208 API_ACCOUNTS_FORBIDDEN_TO_CREATE_BUSINESSES API Accounts are forbidden from creating businesses.
209 API_RATE_LIMIT_EXCEEDED You have exceeded the rate limit for your business. Try again in a moment.
210 API_ACCOUNTS_FORBIDDEN_TO_CREATE_API_ACCOUNTS API Accounts are forbidden from creating other API Accounts.
211 API_ACCOUNTS_FORBIDDEN_TO_DELETE_API_ACCOUNTS API Accounts are forbidden from deleting other API Accounts.
212 LOCATIONS_NEED_TO_BE_RETRIEVED_USING_A_VALID_SHOPIFY_INTEGRATION Locations can only be retrieved from a valid Shopify Integration.
213 INVALID_CHANNEL_ID Attribute: channelId is required. Please specify field channelId for this request.
214 LINE_ITEM_MUST_EXIST_ON_THE_ORDER Line Item must exist on the order.
215 REPORT_NOT_FOUND Requested report with embed code not found.
216 INVALID_FULFILLMENT_SHIPPED_AT_DATE Fulfillment shipped at date is invalid. Must be a valid ISO 8601 formatted date.
217 INVALID_ACTIVITY_OPERATION Attribute: operation is invalid. Operation must be CREATE, UPDATE, or DELETE.
218 INVALID_ACTIVITY_RESULT Attribute: result is invalid. Result must be SUCCESS, ERROR, WARNING, or UNCHANGED.
219 INVALID_ACTIVITY_MESSAGE_TITLE Attribute: title is invalid. Activity Message Title is required on messages and must be 100 characters or less.
220 INVALID_ACTIVITIY_MESSAGE_DESCRIPTION Attribute: description is invalid. Activity Message Description is required on messages and must be 1000 characters or less.
221 TOO_MANY_ACTIVITY_MESSAGES Attribute: messages is invalid. Exceeded limit of 20 messages per activity.
220 INVALID_ACTIVITIY_MESSAGE_DESCRIPTION Attribute: description is invalid. Activity Message Description is required on messages and must be 1000 characters or less.
221 TOO_MANY_ACTIVITY_MESSAGES Attribute: messages is invalid. Exceeded limit of 20 messages per activity.
222 INVALID_SHOPIFY_REQUEST Attempt to update Shopify resulted in bad request.
223 UNAUTHORIZED_SHOPIFY_REQUEST Attempt to update Shopify resulted in unauthorized request.
224 INVALID_SHOPIFY_ORDER_SHIPPING_ADDRESS Attempt to update Shopify order shipping address resulted in bad request.
225 UNABLE_TO_SYNC_SHOPIFY_CUSTOMER Shopify customer can not be synchronized because the shopify order does not have a customer.
226 INVALID_EMBED_CODE Attribute: embedCode is invalid. Embed code is required.
227 USER_DOES_NOT_HAVE_ACCESS_TO_ANALYTICS User does not have permissions to access analytics.
228 PLAYBOOK_STEP_NOT_FOUND Playbook Step could not be found.
229 INVALID_PLAYBOOK_STEP_NAME Attribute: name is required. Please specify a non-empty Playbook Step Name for this request.
230 DUPLICATE_PLAYBOOK_STEP_NAME Attribute: name must be unique across all steps. Playbook Step Name must be unique across all Playbook Steps.
231 INVALID_PLAYBOOK_STEP_ENVIRONMENT_VARIABLE_KEY_NAME Attribute: environmentVariableKeys cannot contain duplicate or empty names. Name must be unique across all environment variable keys in the Playbook Step.
232 INSUFFICIENT_PLAYBOOK_ADMIN_PERMISSIONS Only Playbook Administrators are allowed to perform this action.
233 INVALID_STEP_SETTINGS_VERSION Attribute: version is invalid. Version must be PRODUCTION, STAGING, or TEST
234 INVALID_STEP_ENVIRONMENT_VARIABLE Attribute: environmentVariables are not valid for the provided step.
235 STEP_ID_REQUIRED Attribute: step id is required. Please specify a non-empty Playbook Step ID for this request.
236 INVALID_ORDER_QUERY_PURCHASED_AT_MIN_INTERVAL Attribute: purchasedAtMaxIntervalMinutes must be a valid positive number.
237 INVALID_ORDER_QUERY_PURCHASED_AT_MAX_INTERVAL Attribute: purchasedAtMinIntervalMinutes must be a valid positive number.
238 INVALID_ORDER_QUERY_PURCHASED_AT_RANGE Order Query Range is invalid. purchasedAtMinIntervalMinutes must be greater than purchasedAtMaxIntervalMinutes.
239 STEP_SETTINGS_NOT_PERMITTED_FOR_INTEGRATION Attribute: stepSettings are only allowed for step integration.
240 STEP_INVOCATIONS_NOT_PERMITTED_FOR_INTEGRATION Steps can only be invoked by a step integration.
241 STEP_INVOCATION_FAILED Step invocation has failed for the given message.
242 BUSINESS_ID_REQUIRED Attribute: businessId is required. Please specify a non-empty valid Business ID for this request.
243 INVALID_LOCATION_NAME Attribute: name is invalid. Please specify a non-empty valid location name less than 256 characters for this request.
244 LOCATION_WITH_NAME_ALREADY_EXISTS Attribute: name is invalid. Location name must be unique to the business.
245 LOCATION_NOT_FOUND Location could not be found.
246 INVALID_INVENTORY_ITEM_SKU Attribute: sku is invalid. Please specify a non-empty valid SKU less than 101 characters for this request.
247 INVALID_INVENTORY_ITEM_TITLE Attribute: title is invalid. Please specify a non-empty valid title less than 256 characters for this request.
248 INVENTORY_ITEM_WITH_SKU_ALREADY_EXISTS Attribute: sku is invalid. Inventory Item sku must be unique to the business.
249 INVALID_QUANTITY_ADJUSTMENT Attribute: quantity is invalid. Adjustment must be a valid number greater or equal to -500000000 or less than or equal to 500000000.
250 INVALID_INVENTORY_QUANTITY_STATUS Attribute: inventoryStatus is invalid. Please specify a non-empty valid inventoryStatus for this request.
251 INVALID_ADJUSTMENT_EFFECTIVE_DATE Attribute: effectiveDate is invalid. Must be a valid ISO 8601 formatted date.
252 INVALID_MEMO Attribute: memo is invalid. Memo cannot be more than 1000 characters.
253 INVALID_TOTAL_ADJUSTED_QUANTITY Total Quantity for an inventory item cannot be adjusted to greater than 1000000000 or less than -1000000000.
254 INVALID_LOCATION_ID Attribute: locationId is invalid. Please specify a non-empty valid locationId for this request.
255 QUANTITY_STATUS_NOT_FOUND Quantity status could not be found.
256 IDEMPOTENT_KEY_IS_REQUIRED A unique X-Channel-Ape-Idempotent-Key header is required for this request.
257 INVALID_MAXIMUM_CONCURRENT_CONNECTION_SETTING Maximum concurrent connections is invalid.
258 INVALID_RESTOCK_TYPE Attribute: restockType on refund is invalid. Must be NO_RESTOCK, CANCEL, or RETURN.
259 INVALID_SUPPLIER_REFUND_RESTOCK_TYPE Attribute: restockType on refund line item is invalid. Supplier Refund Line Items must have NO_RESTOCK restock type.
260 INVALID_UPDATED_LINE_ITEM_QUANTITY Attribute: quantity on line item is invalid. It must be greater than or equal to the existing quantity to update a line item.
261 LINE_ITEMS_REQUIRED_FOR_UPDATE Attribute: lineItems is invalid. At least all existing line items must be provided to update the line items of the order.
262 INVALID_UPDATED_LINE_ITEM_SKU Attribute: sku on line item is invalid. It must match existing sku to update a line item.
263 INVALID_FULFILLMENT_LOCATION_ID Attribute: locationId on fulfillment is invalid. Location must exist on the same business as the order.
264 DUPLICATE_CHANNEL_LOCATION_ID Attribute: locationId is invalid. A channel with that location is already configured for your business.
265 INVALID_COMMITTED_QUANTITY Total Committed Quantity for an inventory item cannot be adjusted to less than 0.
266 INVALID_UPDATED_AT_START_DATE Updated at start date parameter is invalid. Must be a valid ISO 8601 formatted date after the start date.
267 INVALID_UPDATED_AT_END_DATE Updated at end date parameter is invalid. Must be a valid ISO 8601 formatted date after the start date and updated at start date.
268 INVALID_ORDER_QUERY_UPDATED_AT_MIN_INTERVAL Attribute: updateAtMaxIntervalMinutes must be a valid positive number.
269 INVALID_ORDER_QUERY_UPDATED_AT_MAX_INTERVAL Attribute: updateMinIntervalMinutes must be a valid positive number.
270 INVALID_ORDER_QUERY_UPDATED_AT_RANGE Order Query Range is invalid. updatedAtMinIntervalMinutes must be greater than updatedAtMaxIntervalMinutes.
271 INVALID_ORDER_QUERY_PURCHASED_AND_UPDATED_AT_RANGE Order Query Range is invalid. purchasedAtMinIntervalMinutes must be greater than updatedAtMaxIntervalMinutes.
272 INVALID_TAX_PRICE Tax price must be a number greater than or equal to zero.
273 INVALID_TAX_RATE Tax Rate is invalid. Optional tax rate field must be a decimal.
274 INVALID_TAX_TITLE Tax Title is invalid. Tax titles have a maximum length of 255 characters.
275 INVALID_REFUND_TRANSACTION_ID Refund Transaction ID is invalid. Transaction ID is a required field.
276 INVALID_REFUND_TRANSACTION_MESSAGE Refund Message is invalid. Refund transaction messages have a maximum length of 255 characters.
277 INVALID_REFUND_TRANSACTION_AMOUNT Refund Transaction Amount must be a number.
278 INVALID_REFUND_TRANSACTION_STATUS Refund Transaction Status is invalid. Please specify PENDING, SUCCESS, FAILURE, ERROR.
279 INVALID_REFUND_ADJUSTMENT_ID Refund Adjustment ID is invalid. Adjustment ID is a required field.
280 INVALID_REFUND_ADJUSTMENT_REASON Adjustment Reason is invalid. Refund adjustment messages have a maximum length of 255 characters.
281 INVALID_REFUND_ADJUSTMENT_AMOUNT Refund Adjustment Amount must be a number.
282 INVALID_REFUND_ADJUSTMENT_TAX_AMOUNT Refund Adjustment Tax Amount is invalid. Optional refund adjustment tax amount field must be a number.
283 MISSING_REQUIRED_REFUND_ATTRIBUTES Refund is invalid. Refunds cannot be empty. Provide at least one of lineItems, transactions, or adjustments.
284 INVALID_PLAYBOOK_PLAY_NAME Attribute: name is required. Please specify a non-empty Playbook Play Name for this request.
285 INVALID_PLAY_NAME Attribute: Play Name is invalid. Play Name Should have a maximum length of 100 characters.
287 PLAYBOOK_PLAY_NOT_FOUND Playbook Play could not be found.
288 DUPLICATE_PLAYBOOK_PLAY_NAME Attribute: name must be unique across all plays. Playbook Play Name must be unique across all Playbook Plays.
289 PLAY_SETTINGS_NOT_PERMITTED_FOR_INTEGRATION Attribute: playSettings are only allowed for step integration.
290 PLAY_ID_REQUIRED Attribute: playId is required. Please specify a non-empty Playbook Play ID for this request.
291 INVALID_ON_ORDER_QUANTITY Total On-Order Quantity for an inventory item cannot be adjusted to less than 0.
292 INVALID_RESERVE_QUANTITY Total Reserve Quantity for an inventory item cannot be adjusted to less than 0.
293 DUPLICATE_PLAYBOOK_PLAY_ENVIRONMENT_VARIABLE_NAME Attribute: environmentVariables are duplicated. Environment variable names must be unique per play supplier.
294 MISSING_PLAYBOOK_PLAY_ENVIRONMENT_VARIABLE Attribute: environmentVariables are missing for the provided play.
295 INVALID_PLAYBOOK_PLAY_ENVIRONMENT_VARIABLE Attribute: environmentVariables are not valid for the provided play.
296 INVALID_STATE_DEFINITION The play does not currently have a valid definition. Please update the play to have a valid definition and retry your request.
297 INVALID_PLAYBOOK_PLAY_ENVIRONMENT_VARIABLE_NAME Attribute: environmentVariable names are not valid for the provided play. Environment variable name is required.
298 DUPLICATE_SHOPIFY_CHANNEL_LOCATION_ID Attribute: locationId is invalid. Location is already set for a Shopify channel on this business. Location cannot be set for multiple Shopify Channels on the same business.

Actions

An action is a process by which ChannelApe accomplishes tasks. An inventory action might update inventory quantities across all marketplaces, thus performing specific tasks.

Get action

Retrieves an action by ID.

HTTP Status Codes

Status Meaning
200 Action successfully retrieved.
404 Action with ID does not exist or you do not have access to the business the action belongs to.
path Parameters
action_id
required
string
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Responses

Query actions by business

Query actions for a given business.

Required query parameters

businessId - ID of ChannelApe business

Optional query parameters

startDate - ISO 8601 date string (defaults to epoch time). Used to filter results after given purchase date.

endDate - ISO 8601 date string (defaults to current time). Used to filter results before given purchase date.

lastKey - ID returned on previous page of results. Used to retrieve next page of results when results are paginated.

size - Integer between 1 and 250 (defaults to 50). Maximum number of results to return.

HTTP Status Codes

Status Meaning
200 Action successfully retrieved.
400 Start date and/or end date is invalid.
404 Business does not exist or you do not have access to the business.
query Parameters
size
integer
Example: size=5
endDate
string
Example: endDate=2016-03-23T12:42:21.338Z
businessId
string
Example: businessId={{business_id}}
startDate
string
Example: startDate=2016-03-01T12:41:21.338Z
lastKey
string
Example: lastKey={{last_key}}
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Responses

Update action with error

Sets processing status to error for an in progress action. This will allow a new action to run with the same target if it is queued.

HTTP Status Codes

Status Meaning
200 Action successfully updated with error processing status.
400 Action has already been completed.
404 Action with ID does not exist or you do not have access to the business the action belongs to.
path Parameters
action_id
required
string
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Responses

Update action health check

Updated action health check which keeps action from automatically updating to an error processing status. Action will automatically update to error processing status if health check interval * 2 + 1 minute is exceeded without a health check update.

HTTP Status Codes

Status Meaning
200 Successfully updated last health check for action.
400 Action has already been completed.
404 Action with ID does not exist or you do not have access to the business the action belongs to.
path Parameters
action_id
required
string
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Responses

Complete action

Complete an in progress action. This will allow a new action to run with the same target if it is queued.

HTTP Status Codes

Status Meaning
200 Action successfully updated with completed processing status.
400 Action has already been completed.
404 Action with ID does not exist or you do not have access to the business the action belongs to.
path Parameters
action_id
required
string
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Responses

Analytics

Analytics expose numerous reports for embedding within an app.

Retrieve a list of available analytics

HTTP Status Codes

Status Meaning
200 Analytics list successfully retrieved.
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Responses

Generate embed URL

Generates an embed URL for a report.

Required Fields

embedUrl - Location of report.

timezone - Default timezone to run reports in.

HTTP Status Codes

Status Meaning
201 Temporary embed URL has been created for report.
400 Embed URL or Timezone is invalid.
403 User does not have peremission to access analytics.
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}
Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{
  • "timezone": "America/New_York",
  • "embedCode": "dashboard/1"
}

Batches

Allows for ingestion of large amounts of data into ChannelApe in the form of batch requests. Business are limited to 25% of their API Account Rate Limit when processing batches concurrently (i.e. a rate limit of 5 calls per second can process 1 batch process at a time). Subsequent batch requests will be queued up and processed in order of being received.

Create a new batch

Triggers a new async batch. Default type is INVENTORY so you must provide the list of adjustments.

Only basic validation is done at the time the batch is received, such as checking for null values. All other validation happens down stream when the batch is being processed.

Fields

businessId - Business where the batch should be run.

adjustments - If batch type is INVENTORY, then list of adjustments that will be made during the batch. Maximum limit is 4000 adjustments or a 1MB request size. If more than 4000 adjustments/1MB request body are needed, the request should be split up into multiple batches.

  • idempotentKey - A unique key designated for the individual adjustment. Adjustments are deduplicated and not made when there is a duplicate idempotent key. This is to prevent duplicate adjustments being made in the system.
  • inventoryItemId - A ChannelApe system inventory item id. Must provide either this or sku.
  • sku - A sku that may or may not exist in ChannelApe. If the sku doesn't exist during a batch run, it will be created when the batch is run.
  • locationId - A ChannelApe location ID of where the adjustment should be made.
  • inventoryStatus - The status for the adjustment
  • quantity - The quantity of the adjustment. The end result of the adjustment will depend on the operation.
  • operation - Whether or not you want to overwrite the existing value(SET) or adjust relative(ADJUST)
  • aggregateChannelSync (optional)- true or false (default). If specified as true, the side affects of making adjustments to parent locations will happen. See the side effects section under "Adjust inventory item quantity" heading.
  • memo - An optional field to that describes why an adjustment is being made.

HTTP Status Codes

Status Meaning
201 Batch has been created. Async processing will begin
400 Invalid fields
403 User does not have permission to trigger the batch for that business
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}
Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{
  • "businessId": "938a69a8-9ef2-4faa-b485-dad486aba56e",
  • "adjustments": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "325bd7f2-272a-4212-9abb-59ffeaddb5ab",
  • "type": "INVENTORY",
  • "status": "READY",
  • "createdAt": "2022-04-19T02:35:17.000Z",
  • "updatedAt": "2022-04-19T02:35:17.000Z",
  • "businessId": "938a69a8-9ef2-4faa-b485-dad486aba56e"
}

Retrieve Batch Information

Retrieve information from an individual batch

HTTP Status Codes

Status Meaning
200 Batch ID found and returned
404 Batch Not Found
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Responses

Response samples

Content type
application/json
{
  • "id": "{{$guid}}",
  • "type": "INVENTORY",
  • "status": "COMPLETE",
  • "createdAt": "2022-04-05T14:01:19.000Z",
  • "updatedAt": "2022-04-18T19:16:06.000Z",
  • "businessId": "938a69a8-9ef2-4faa-b485-dad486aba56e"
}

Businesses

A business in ChannelApe refers to an account created to access the platform. Some customers choose to create a separate business for each sales channel, while others group all their channels under a single business. This allows for logical grouping of orders, channels, inventory, and suppliers within the platform. Additionally, some customers may choose to segregate their businesses based on geographic location, such as North America versus Europe. Each business can have multiple users, allowing different business members to be added to each business.

Add Business Member

Add verified user to a business by providing their username. Only the business owner can add other members.

path Parameters
business_id
required
string
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}
Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{
  • "username": "{{username}}"
}

Get Business

Retrieve infomation about the business.

path Parameters
business_id
required
string
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Responses

Update Business

Update the name and/or timeZone of a business. Only the business owner can update the business.

Required Request Fields

name - Name of your business. Can be updated later.

timeZone - TimeZone your business operates under. Will change how dashboards render along with what times you see for recipe schedules in the app. API stores all values in UTC/GMT. Can be updated later.

path Parameters
business_id
required
string
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}
Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{
  • "name": "Jim's Vitamins",
  • "timeZone": "America/Atka"
}

Get Businesses for User

Retrieve all businesses belonging to the given user.

query Parameters
userId
string
Example: userId={{user_id}}
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Responses

Delete Business Member

Remove a user from the business. Only the business owner can remove other members.

Note: Business owner cannot be removed from the business.

path Parameters
business_id
required
string
user_id
required
string
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Responses

Verify Business Member

Once a business owner adds a member to the business, they need to verify their membership using this call and the token emailed to them.

path Parameters
business_member_verification_token
required
string
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Responses

Create Business

Create a new business.

Required Request Fields

name - Name of your business. Can be updated later.

timeZone - TimeZone your business operates under. Will change how dashboards render along with what times you see for recipe schedules in the app. API stores all values in UTC/GMT. Can be updated later.

alphabeticCurrencyCode - ISO 4217 currency code used by your business. All supplier inventory items will assume this currency. When an order is placed with an uknown currency, this currency will be assumed.

inventoryItemKey - Valid values are "SKU" or "UPC". Cannot be changed once business is created. Unique identifier for all inventory items under a supplier. Duplicate inventory item keys for a given supplier will be ommitted.

header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}
Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{
  • "name": "Jill's Supplement Store",
  • "timeZone": "America/New_York",
  • "alphabeticCurrencyCode": "USD",
  • "inventoryItemKey": "SKU"
}

Get API Account

Retrieve detailed information about a given API Account for a business.

header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Responses

Get Businesses API Accounts

Retrieve a list of API Accounts for a business.

header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Responses

Channels

Channel references the marketplaces, affiliate networks, or partners that ChannelApe can interact with to distribute your catalog or to retrieve orders from and sync inventory to. Some examples of a channel would be Shopify Store, Amazon, or NetSuite B2B Orders.

Create custom export channel

Create a Custom Export Channel for a business.

Required Fields

businessId - ID for ChannelApe business that channel should be created for.

integrationId - ID for Custom Export Channel. Must match ChannelApe Exporter integration ID (02df0b31-a071-4791-b9c2-aa01e4fb0ce6).

name - Needs to be unique across all channels for the business.

Optional Fields

enabled - Indicates whether the channel is installed. Uninstalled channels cannot run actions. Defaults to false.

settings - Map with multiple optional values.

  • allowRead - Allow ChannelApe to read existing products and variants from this channel. Defaults to true.

  • priceType - Which price variant price field retail or wholesale that ChannelApe will use when creating or updating variants on this channel. Defaults to retail.

  • outputFile - Map with multiple optional values to indicate file format.

    • header - Whether the output file should contain a header row consisting of column header values. Defaults to true.
    • columns - List of columns to write to output file. Defaults to empty list.
      • header - Value used for column header. Required field with no default.
      • field - Indicates ChannelApe product or variant field should be outputted for this column. Valid values are:
        • productId
        • inventoryItemValue
        • sku
        • upc
        • productTitle
        • produtDescription
        • productPrimaryCategory
        • productSecondaryCategory
        • productVendor
        • optionValue
        • productImage
        • productOptionKeys - Sorted alphabetically and comma separated
        • productTags - Sorted alphabetically and comma separated
        • productCreatedAt
        • productUpdatedAt
        • title
        • description
        • primaryCategory
        • secondaryCategory
        • vendor
        • quantity
        • weight
        • alphabeticCurrencyCode
        • retailPrice
        • wholesalePrice
        • condition
        • image
        • tags - Sorted alphabetically and comma separated
        • additionalFieldValue
        • variantCreatedAt
        • variantUpdatedAt
      • index - Only applicable for productImage and image fields. Indicates index (starting at 0) of image within images list. Return null if index does not exist.
      • key - Only appicable for optionValue and additionalFieldValue fields. Indicates key within map to retrieve. Returns null if key does not exist.
      • value - Static value to be written to each cell in the column. Only valid when field is empty.
      • unitOfMeasurement - Only applicable for weight field. Indicates what unit to output variant weight in. Defaults to grams. Valid values are:
        • oz - Ounces
        • lb - Pounds
        • g - Grams
        • kg - Kilograms
        • t - Metric Tonnes

HTTP Status Codes

Status Meaning
201 Successfully created channel for business.
400 Request body contains invalid fields. Check response errors list for more details.
403 You are not a member of the business passed in the request body.
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}
Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{
  • "businessId": "some-business-id",
  • "integrationId": "02df0b31-a071-4791-b9c2-aa01e4fb0ce6",
  • "enabled": true,
  • "name": "My Custom Export",
  • "settings": {
    }
}

Update custom export channel

Update a Custom Export Channel for a business.

Required Fields

name - Needs to be unique across all channels for the business.

Optional Fields

enabled - Indicates whether the channel is installed. Uninstalled channels cannot run actions. Defaults to false.

settings - Map with multiple optional values.

  • allowRead - Allow ChannelApe to read existing products and variants from this channel. Defaults to true.

  • priceType - Which price variant price field retail or wholesale that ChannelApe will use when creating or updating variants on this channel. Defaults to retail.

  • outputFile - Map with multiple optional values to indicate file format.

    • header - Whether the output file should contain a header row consisting of column header values. Defaults to true.
    • columns - List of columns to write to output file. Defaults to empty list.
      • header - Value used for column header. Required field with no default.
      • field - Indicates ChannelApe product or variant field should be outputted for this column. Valid values are:
        • productId
        • inventoryItemValue
        • sku
        • upc
        • productTitle
        • produtDescription
        • productPrimaryCategory
        • productSecondaryCategory
        • productVendor
        • optionValue
        • productImage
        • productOptionKeys - Sorted alphabetically and comma separated
        • productTags - Sorted alphabetically and comma separated
        • productCreatedAt
        • productUpdatedAt
        • title
        • description
        • primaryCategory
        • secondaryCategory
        • vendor
        • quantity
        • weight
        • alphabeticCurrencyCode
        • retailPrice
        • wholesalePrice
        • condition
        • image
        • tags - Sorted alphabetically and comma separated
        • additionalFieldValue
        • variantCreatedAt
        • variantUpdatedAt
      • index - Only applicable for productImage and image fields. Indicates index (starting at 0) of image within images list. Return null if index does not exist.
      • key - Only appicable for optionValue and additionalFieldValue fields. Indicates key within map to retrieve. Returns null if key does not exist.
      • value - Static value to be written to each cell in the column. Only valid when field is empty.
      • unitOfMeasurement - Only applicable for weight field. Indicates what unit to output variant weight in. Defaults to grams. Valid values are:
        • oz - Ounces
        • lb - Pounds
        • g - Grams
        • kg - Kilograms
        • t - Metric Tonnes

HTTP Status Codes

Status Meaning
201 Successfully created channel for business.
400 Request body contains invalid fields. Check response errors list for more details.
404 Channel with ID does not exist or you do not have access to the business the action belongs to.
path Parameters
channel_id
required
string
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}
Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{
  • "enabled": true,
  • "name": "My Custom Export",
  • "settings": {
    }
}

Get channel

Retrieve a single channel by ID.

HTTP Status Codes

Status Meaning
200 Channel successfully retrieved.
404 Channel with ID does not exist or you do not have access to the business the action belongs to.
path Parameters
channel_id
required
string
header Parameters
Authorization
string
Example: Bearor {{token}}

Responses

Get channels for business

Retrieve all channels belonging to a business.

HTTP Status Codes

Status Meaning
200 Channels successfully retrieved. If list is empty, businessId could be invalid or you are not a member of that business.
query Parameters
businessId
string
Example: businessId={{business_id}}
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Responses

Add manual action

Start a manual action for a channel.

Required Fields

action - Name of action you wish to run for this channel. Must be an action listed for this integration.

HTTP Status Codes

Status Meaning
201 Successfully created manual action for channel.
400 action provided in request body is invalid or subscription for this business is invalid.
403 You are not permitted to start an action for this channel.
path Parameters
channel_id
required
string
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}
Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{
  • "action": "PRODUCT_PUSH"
}

File Previews

Create file preview

header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}
Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{
  • "fileType": "TSV",
  • "url": "ftp://ftp.example.com/test.txt",
  • "authorization": {
    },
  • "headers": false
}

Integrations

Get integration

Retrieve integration information.

path Parameters
integration_id
required
string
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Responses

Get integrations

Retrieve all public integrations. Private supplier integrations that have already been installed can also be retrieved by passing the businessId query paramter.

Optional Query Parameters

businessId - Needed to retrieve any private supplier integrations associated with business.

query Parameters
businessId
string
Example: businessId={{business_id}}
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Responses

Locations

Inventory locations are physical locations where inventory items are stored, such as a warehouse.

Create Location

Required Request Fields

name - Name of your location. Can be updated later.

businessId - The ChannelApe business ID to associate the location to.

Optional Request Fields

aggregateLocationIds - A list of other valid locations for your business. If an adjustment is made at one of the aggregate locations, an adjustment will be made on this location as well that is the sum of current ATP at each of the aggregate locations listed. The sum of the total ATP across the locations will be synchronized to the channel if it is a virtual location. Ideally the locations that have this will be your virtual location, and the list of aggregateLocationIds will be the warehouses you want to keep in sync with that virtual location. You can have up to 5 aggregate locations on a single location. An aggregate location also can not contain itself.

Note: that you can't have nested aggregate locations. If a location has aggregate locations it can't be in a list of aggregate locations on another location. You can have a location listed across multiple aggregates.

HTTP Status Codes

Status Meaning
201 Location has been created.
400 One or more fields provided in the request body are invalid.
404 Business could not be found.
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}
Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{
  • "name": "East Coast Warehouse",
  • "businessId": "7790a7d0-2a53-4521-bde4-59ad32147edd"
}

Response samples

Content type
application/json
Example
{
  • "aggregateLocationIds": [ ],
  • "name": "East Coast Warehouse",
  • "businessId": "7790a7d0-2a53-4521-bde4-59ad32147edd",
  • "createdAt": "2022-08-16T20:02:37.000Z",
  • "errors": [ ],
  • "id": "87",
  • "updatedAt": "2022-08-16T20:02:37.000Z"
}

Get Locations for a business

Retrieves all locations for a business.

HTTP Status Codes

Status Meaning
200 Locations have been retrieved.
400 One or more fields provided in the request are invalid.
query Parameters
businessId
string
Example: businessId=7790a7d0-2a53-4521-bde4-59ad32147edd
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Update Location

Update the name of a location.

Required Request Fields

name - Name of your location.

Optional Request Fields

aggregateLocationIds - A list of other valid locations for your business. If an adjustment is made at one of the aggregate locations, an adjustment will be made on this location as well that is the sum of current ATP at each of the aggregate locations listed. The sum of the total ATP across the locations will be synchronized to the channel if it is a virtual location. Ideally the locations that have this will be your virtual location, and the list of aggregateLocationIds will be the warehouses you want to keep in sync with that virtual location. You can have up to 5 aggregate locations on a single location. An aggregate location also can not contain itself.

Note: that you can't have nested aggregate locations. If a location has aggregate locations it can't be in a list of aggregate locations on another location. You can have a location listed across multiple aggregates.

HTTP Status Codes

Status Meaning
200 Location has been updated.
400 One or more fields provided in the request body are invalid.
404 Location could not be found.
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}
Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{
  • "name": "West Coast Warehouse"
}

Response samples

Content type
application/json
Example
{
  • "aggregateLocationIds": [ ],
  • "businessId": "7790a7d0-2a53-4521-bde4-59ad32147edd",
  • "createdAt": "2022-08-17T15:36:43.236Z",
  • "errors": [ ],
  • "id": "123",
  • "name": "West Coast Warehouse",
  • "updatedAt": "2022-08-17T15:36:43.236Z"
}

Get Location

Retrieves a single location by ID.

HTTP Status Codes

Status Meaning
200 Location has been retrieved.
404 Location could not be found.
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Updating a location's SLA information

Add SLA info about a Location

Optional Fields

fulfillmentSLAHours - The SLA for the location. This must be a number greater than 0 if provided.

Operating Days if provided must require the following:

open - The opening time for the location. Must be before 'end'

end - The end of day for the location. Must be after 'open'

fulfillmentCutoffTime - The time a location stops fulfilling items. Must be between 'open' and 'end', or equal to 'end'

day - The day of week for the operating day. Must be one of the following:

  • M - Monday
  • T - Tuesday
  • W - Wednesday
  • R - Thursday
  • F - Friday
  • S - Saturday
  • U - Sunday

If you provide multiple of the same days, only one of them will be accepted.

HTTP Status Codes

Status Meaning
200 Location SLA information has been created/updated.
400 One or more fields provided in the request body are invalid.
404 Location could not be found.
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}
Request Body schema: application/json
object

Request samples

Content type
application/json
{
  • "fulfillmentSLAHours": "2",
  • "operatingDays": [
    ]
}

Get a location's SLA information

Retrieve SLA information for a location.

HTTP Status Codes

Status Meaning
200 Location SLA information was retrieved.
404 Location could not be found.
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Responses

Updating a location's closed dates

Add Closed dates for a location. This should be holidays or dates that the location would otherwise be open in according to their SLA information

Required Fields

closedDays - A list of days that the location is closed. This is a PUT, so any days committed will be removed. The entire list needs to be provided during update.

If you provide multiple of the same days, only one of them will be accepted.

HTTP Status Codes

Status Meaning
200 Location closed days have been updated.
400 One or more fields provided in the request body are invalid.
404 Location could not be found.
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}
Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{
  • "closedDays": [
    ]
}

Response samples

Content type
application/json
{
  • "closedDays": [
    ],
  • "errors": [ ],
  • "locationId": "123"
}

Get a location's closed dates

Retrieve a list of Closed Dates for a location

HTTP Status Codes

Status Meaning
200 Location closed dates was found.
404 Location could not be found.
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Logging Payloads

Log Payload

Provides an endpoint to get request/response payloads from external systems into ChannelApe during some of the automated flows you are using.

Required fields

The request body is what will be logged and searchable. This can be in any format up to 1mb.

Optional headers

X-Channel-Ape-Logs-Flow - a header to specify which flow this request or response body is being logged from. It's recommended to use this to organize things but If you don't provide a flow it will be logged under a default flow. This must be alphanumeric.

header Parameters
X-Channel-Ape-Logs-Flow
string
Example: sendorders
Authorization
string
Example: Bearor {{token}}
Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{
  • "customer": {
    }
}

Response samples

Content type
application/json
{
  • "flow": "default",
  • "logtime": "2022-09-08T20:50:56.592Z",
  • "businessId": "{{business_id}}"
}

Inventories

Representation of a physical SKU. When assosciated with a location, quantities can be set, adjusted, and retrieved for 1 or many quantity statuses.

Create Inventory Item

Required Request Fields

sku - Unique identifier for your inventory item up to 100 characters. Must be unique for your ChannelApe business.

businessId - The ChannelApe business ID to associate the Inventory Item to.

HTTP Status Codes

Status Meaning
201 Inventory Item has been created.
400 One or more fields provided in the request body are invalid.
404 Business could not be found.
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}
Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{
  • "businessId": "d119c22a-92a3-49f4-b020-e3e43c23c28d",
  • "sku": "301-0059-LE",
  • "title": "The Summer Collection Bundle"
}

Get Inventory Item by SKU

Retrieves a list of inventory items with the given SKU on the given business. 1 or 0 results will be returned.

HTTP Status Codes

Status Meaning
200 Inventory Items have been retrieved.
400 One or more fields provided in the request are invalid.
query Parameters
businessId
string
Example: businessId=7790a7d0-2a53-4521-bde4-59ad32147edd
sku
string
Example: sku=301-0059-LE
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Responses

Update Inventory Item

Update an Inventory item.

Required Request Fields

sku - Unique identifier for your inventory item. Must be unique for your ChannelApe business.

HTTP Status Codes

Status Meaning
200 Inventory Item has been updated.
400 One or more fields provided in the request body are invalid.
404 Inventory Item could not be found.
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}
Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{
  • "sku": "301-0059-LE",
  • "title": "The Summer Collection Bundle"
}

Get Inventory Item

Retrieves a single Inventory Item item by ID.

HTTP Status Codes

Status Meaning
200 Inventory Item has been retrieved.
404 Inventory Item could not be found.
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Responses

Inventories > Quantities

Modify quantities at given location/status for an inventory item.

Adjust inventory item quantity

Adjusts the inventory items current quantity at a given location and status. Request will fail if the inventory item does not exist.

Note that if you set the 'effectiveAt' time to the future, it will be staged and added to the adjustments at the effective time. The staged adjustments cannot be removed or edited. You'll need to make another adjustment to negate it.

Required Request Headers

X-Channel-Ape-Idempotent-Key - A unique value linked to the request that prevents the same operation from occuring twice. Limit of 255 characters.

Required Request Fields

locationId - The location at which the quantity will be adjusted. Must be a valid ChannelApe location

quantity - The quantity to the adjust the existing quantity by.

inventoryStatus - The status of the quantity that will be adjusted.
Possible values include:

* AVAILABLE_TO_SELL
* COMMITTED
* ON_ORDER
* RESERVE
* ON_HOLD
* ON_HAND

Optional Request Fields

aggregateChannelSync - true or false. Defaults to false. If specified as true, the side affects of making adjustments to parent locations will happen. See the side effects section below.

memo - A note to describe why the adjustment was possibly made. Limit of 1000 characters.

effectiveAt - The time the adjustment should be effective. If this is in the future, this will be staged and inserted into the adjustment history log at the effective time. This can be useful for expiring adjustments by creating an adjustment that offsets an existing one.

ChannelApe does allow setting effective dates in the past, but does not rewrite the adjustment history. It will be placed in the history log at the time the adjustment is made.

expiresAt - The time the adjustment should negate itself. These are always relative to the adjustment that is made. So even if you are doing a set the future adjustment will be the opposite of that. Example a +7 adjustment on sku ABC-123 is set to expire the following day. The following day a -7 adjustment will be made when the adjustment expires.

futureAppliedAtpPercentage- If you are making adjustments in the future for reserving inventory it may be hard to know exactly what quantities you want to set and expire in the future, especially in bulk. To make this easier, the API has an option to make a future adjustment based on the total inventory you have available to promise. If you have 100 units available to promise currently and you want to reserve 5% of those you can use this field in a future adjustment to take 5% of whatever inventory you have left at the time and reserve it. So if you sell through all 100, there is nothing to reserve. If you don't sell through any and still have 100 units, it will reserve 10 leaving you 90 units to sell.

For more on inventory adjustments and how they work in ChannelApe see our Inventory Management documentation.

Side Effects

If the location you are making an adjustment for is the child of one or more parent locations and aggregateChannelSync flag is true, the same relative adjustment will be made to each parent location. Ie. +1 on the child, then a +1 for each parent. If any of the parents are associated with a real time inventory channel, then the current ATP will also be synchronized to channel. The aggregateChannelSync only applies to currently effective adjustments.

HTTP Status Codes

Status Meaning
201 Inventory item quantity has been adjusted successfully
400 One or more fields provided in the request body are invalid.
404 Inventory Item could not be found.
header Parameters
Content-Type
string
Example: application/json
X-Channel-Ape-Idempotent-Key
string
Example: {{$guid}}
Authorization
string
Example: Bearor {{token}}
Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{
  • "locationId": 10,
  • "inventoryStatus": "ON_HOLD",
  • "quantity": "15",
  • "effectiveAt": "2019-10-25T19:07:49.088Z"
}

Adjust inventory item quantity by SKU

Adjusts the inventory items current quantity at a given location and status. Request will fail if the inventory item does not exist.

Note that if you set the 'effectiveAt' time to the future, it will be staged and added to the adjustments at the effective time. The staged adjustments cannot be removed or edited. You'll need to make another adjustment to negate it.

Required Request Headers

X-Channel-Ape-Idempotent-Key - A unique value linked to the request that prevents the same operation from occuring twice. Limit of 255 characters.

Required Request Fields

locationId - The location at which the quantity will be adjusted. Must be a valid ChannelApe location

quantity - The quantity to the adjust the existing quantity by.

sku - The sku for item in ChannelApe. If the sku does not exist, it will be automatically created

inventoryStatus - The status of the quantity that will be adjusted.
Possible values include:

* AVAILABLE_TO_SELL
* COMMITTED
* ON_ORDER
* RESERVE
* ON_HOLD
* ON_HAND

Optional Request Fields

aggregateChannelSync - true or false. Defaults to false. If specified as true, the side affects of making adjustments to parent locations will happen. See the side effects section below.

memo - A note to describe why the adjustment was possibly made. Limit of 1000 characters.

effectiveAt - The time the adjustment should be effective. If this is in the future, this will be staged and inserted into the adjustment history log at the effective time. This can be useful for expiring adjustments by creating an adjustment that offsets an existing one.

ChannelApe does allow setting effective dates in the past, but does not rewrite the adjustment history. It will be placed in the history log at the time the adjustment is made.

expiresAt - The time the adjustment should negate itself. These are always relative to the adjustment that is made. So even if you are doing a set the future adjustment will be the opposite of that. Example a +7 adjustment on sku ABC-123 is set to expire the following day. The following day a -7 adjustment will be made when the adjustment expires.

futureAppliedAtpPercentage- If you are making adjustments in the future for reserving inventory it may be hard to know exactly what quantities you want to set and expire in the future, especially in bulk. To make this easier, the API has an option to make a future adjustment based on the total inventory you have available to promise. If you have 100 units available to promise currently and you want to reserve 5% of those you can use this field in a future adjustment to take 5% of whatever inventory you have left at the time and reserve it. So if you sell through all 100, there is nothing to reserve. If you don't sell through any and still have 100 units, it will reserve 10 leaving you 90 units to sell.

For more on inventory adjustments and how they work in ChannelApe see our Inventory Management documentation.

Side Effects

If the location you are making an adjustment for is the child of one or more parent locations and aggregateChannelSync flag is true, the same relative adjustment will be made to each parent location. Ie. +1 on the child, then a +1 for each parent. If any of the parents are associated with a real time inventory channel, then the current ATP will also be synchronized to channel.

HTTP Status Codes

Status Meaning
201 Inventory item quantity has been adjusted successfully
400 One or more fields provided in the request body are invalid.
404 Inventory Item could not be found.
header Parameters
Content-Type
string
Example: application/json
X-Channel-Ape-Idempotent-Key
string
Example: {{$guid}}
Authorization
string
Example: Bearor {{token}}
Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{
  • "locationId": 10,
  • "sku": "Some-New-Sku",
  • "inventoryStatus": "ON_HOLD",
  • "quantity": "15",
  • "effectiveAt": "2019-10-25T19:07:49.088Z"
}

Response samples

Content type
application/json
{
  • "adjustment": 100,
  • "apiAccountId": "123",
  • "createdAt": "2022-09-13T18:25:34.753Z",
  • "effectiveAt": "2022-09-13T18:25:34.753Z",
  • "inventoryItemId": "100",
  • "inventoryStatus": "AVAILABLE_TO_SELL",
  • "locationId": "50",
  • "quantity": 100,
  • "staged": false,
  • "updatedAt": "2022-09-13T18:25:34.753Z"
}

Set inventory item quantity

Overwrites the inventory items current quantity at a given location and status.

Required Request Headers

X-Channel-Ape-Idempotent-Key - A unique value linked to the request that prevents the same operation from occuring twice. Limit of 255 characters.

Required Request Fields

locationId - The location at which the quantity will be adjusted. Must be a valid ChannelApe location

quantity - The quantity to the adjust the existing quantity by.

inventoryStatus - The status of the quantity that will be adjusted.
Possible values include:

* AVAILABLE_TO_SELL
* COMMITTED
* ON_ORDER
* RESERVE
* ON_HOLD
* ON_HAND

Optional Request Fields

aggregateChannelSync - true or false. Defaults to false. If specified as true, the side affects of making adjustments to parent locations will happen. See the side effects section below.

memo - A note to describe why the adjustment was possibly made. Limit of 1000 characters.

effectiveAt - The time the adjustment should be effective. If this is in the future, this will be staged and inserted into the adjustment history log at the effective time. This can be useful for expiring adjustments by creating an adjustment that offsets an existing one.

ChannelApe does allow setting effective dates in the past, but does not rewrite the adjustment history. It will be placed in the history log at the time the adjustment is made.

For more on inventory adjustments and how they work in ChannelApe see our Inventory Management documentation.

Side Effects

If the location you are making an adjustment for is the child of one or more parent locations and the aggregateChannelSync flag is set to true, then for each parent, it will sum up all of the adjusted statuses current quantities from all of the parents child locations, including the new adjustment that was just made and will set that value as the current value for the parent location. If any of the parents are associated with a real time inventory channel, then the current ATP will also be synchronized to channel.

HTTP Status Codes

Status Meaning
201 Inventory item quantity has been adjusted successfully
400 One or more fields provided in the request body are invalid.
404 Inventory Item could not be found.
header Parameters
Content-Type
string
Example: application/json
X-Channel-Ape-Idempotent-Key
string
Example: {{$guid}}
Authorization
string
Example: Bearor {{token}}
Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{
  • "locationId": 10,
  • "inventoryStatus": "ON_HOLD",
  • "quantity": "15",
  • "effectiveAt": "2019-10-25T19:07:49.088Z"
}

Set inventory item quantity by SKU

Overwrites the inventory items current quantity at a given location and status.

Required Request Headers

X-Channel-Ape-Idempotent-Key - A unique value linked to the request that prevents the same operation from occuring twice. Limit of 255 characters.

Required Request Fields

locationId - The location at which the quantity will be adjusted. Must be a valid ChannelApe location

quantity - The quantity to the adjust the existing quantity by.

sku - The sku for item in ChannelApe. If the sku does not exist, it will be automatically created

inventoryStatus - The status of the quantity that will be adjusted.
Possible values include:

* AVAILABLE_TO_SELL
* COMMITTED
* ON_ORDER
* RESERVE
* ON_HOLD
* ON_HAND

Optional Request Fields

aggregateChannelSync - true or false. Defaults to false. If specified as true, the side affects of making adjustments to parent locations will happen. See the side effects section below.

memo - A note to describe why the adjustment was possibly made. Limit of 1000 characters.

effectiveAt - The time the adjustment should be effective. If this is in the future, this will be staged and inserted into the adjustment history log at the effective time. This can be useful for expiring adjustments by creating an adjustment that offsets an existing one.

ChannelApe does allow setting effective dates in the past, but does not rewrite the adjustment history. It will be placed in the history log at the time the adjustment is made.

For more on inventory adjustments and how they work in ChannelApe see our Inventory Management documentation.

Side Effects

If the location you are making an adjustment for is the child of one or more parent locations and the aggregateChannelSync flag is set to true, then for each parent, it will sum up all of the adjusted statuses current quantities from all of the parents child locations, including the new adjustment that was just made and will set that value as the current value for the parent location. If any of the parents are associated with a real time inventory channel, then the current ATP will also be synchronized to channel.

HTTP Status Codes

Status Meaning
201 Inventory item quantity has been adjusted successfully
400 One or more fields provided in the request body are invalid.
404 Inventory Item could not be found.
header Parameters
Content-Type
string
Example: application/json
X-Channel-Ape-Idempotent-Key
string
Example: {{$guid}}
Authorization
string
Example: Bearor {{token}}
Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{
  • "locationId": 10,
  • "sku": "Some-New-Sku",
  • "inventoryStatus": "ON_HOLD",
  • "quantity": "15",
  • "effectiveAt": "2019-10-25T19:07:49.088Z"
}

Response samples

Content type
application/json
{
  • "adjustment": 100,
  • "apiAccountId": "123",
  • "createdAt": "2022-09-13T18:25:34.753Z",
  • "effectiveAt": "2022-09-13T18:25:34.753Z",
  • "inventoryItemId": "100",
  • "inventoryStatus": "AVAILABLE_TO_SELL",
  • "locationId": "50",
  • "quantity": 100,
  • "staged": false,
  • "updatedAt": "2022-09-13T18:25:34.753Z"
}

Retrieve Inventory Item Quantities

Retrieves the newest quantities for all the different locations and statuses. If an adjustment does not exist yet for a given location/status combination it will not be returned.

HTTP Status Codes

Status Meaning
200 Inventory Item exists.
404 Inventory Item could not be found.
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Responses

Orders

An order is transaction that was placed on either your website or marketplace. Using the ChannelApe API you could query orders by business and retrieve orders from every channel we support in a unified format.

For more details on the ChannelApe order model, please check out our knowledgebase here.

Create order

Create a new order for a channel.

Required Fields

channelId - ID for ChannelApe channel that order belongs to (i.e. Shopify Channel, Amazon Channel, eBay Channel).

channelOrderId - ID for order unique to ChannelApe business that you assign (i.e. Shopify Order ID, ASIN).

alphabeticCurrencyCode - Currency used throughout all price fields of the order (i.e. USD, EUR, CAD).

status - State of order (PENDING, OPEN, IN_PROGRESS, CLOSED, CANCELED, HOLD).

lineItems - List of line items for the order. At least one is required to create order. Only required fields for a lineItem are a "id" and "quantity". "id" needs to be unique across all line items for the order and "quantity" needs to be greater then 0.

Optional Headers

Header Use
X-Channel-Ape-Action-Id Attaches an action to any order activities created by the request whenver a valid action ID is provided.
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}
Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{
  • "channelId": "{{channel_id}}",
  • "channelOrderId": "{{channel_order_id}}",
  • "status": "CANCELED",
  • "alphabeticCurrencyCode": "USD",
  • "totalPrice": "30.80",
  • "subtotalPrice": "30.80",
  • "totalTax": "1.97",
  • "totalShippingPrice": "3.00",
  • "totalShippingTax": "0.18",
  • "totalGrams": "226.796",
  • "purchasedAt": "2015-09-11T20:52:15.000Z",
  • "canceledAt": "2015-09-13T08:04:00.000Z",
  • "canceledReason": "Wrong product",
  • "customer": {
    },
  • "fulfillments": [
    ],
  • "lineItems": [
    ],
  • "refunds": [
    ],
  • "additionalFields": [
    ]
}

Query orders by channel

Query orders for a given channel.

Required query parameters

channelId - ID of ChannelApe channel

Optional query parameters

status - String of PENDING, OPEN, HOLD, IN_PROGRESS, CLOSED, or CANCELED (no default). Used to filter results by one or many statuses. Multiple statuses can be provided by duplicate the status key and providing a different value.

startDate - ISO 8601 date string (defaults to epoch time). Used to filter results after given purchase date.

endDate - ISO 8601 date string (defaults to current time). Used to filter results before given purchase date.

updatedAtStartDate - ISO 8601 date string (defaults to epoch time). Used to filter orders that were updated after this time. Can be used in conjuction with startDate and endDate query params.

updatedAtEndDate - ISO 8601 date string (defaults to current time). Used to filter orders that were updated before this time. Can be used in conjuction with startDate and endDate query params.

lastKey - ID returned on previous page of results. Used to retrieve next page of results when results are paginated.

size - Integer between 1 and 250 (defaults to 100). Maximum number of results to return.

count - Boolean values of true or false (defaults to false). Should query return count of all matched results.

query Parameters
channelId
string
Example: channelId={{channel_id}}}
status
string
Example: status=OPEN
size
integer
Example: size=100
startDate
string
Example: startDate=2016-02-20T20:21:51.403Z
endDate
string
Example: endDate=2017-02-27T20:00:00.000Z
updatedAtStartDate
string
Example: updatedAtStartDate=2016-02-23T20:21:59.705Z
updatedAtEndDate
string
Example: updatedAtEndDate=2017-02-25T12:15:15.080Z
lastKey
string
Example: lastKey={{last_key}}
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Responses

Patch Order

Patch a single order using its ID. Any data not included in the request will be ignored, and the data will remain untouched unless explicitly defined. ChannelApe does not support patching individual list items(fulfillments, refunds, line items, or additional fields at any level). If a list is passed in on the request it will be wiped and recreated again with that given information.

All line item fields other than SKU and ID can be updated. Quantities can only be increased. New line items can also be added to an order.

Required Fields

No fields are required.

Optional Headers

Header Use
X-Channel-Ape-Action-Id Attaches an action to any order activities created by the request whenver a valid action ID is provided.
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}
Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{
  • "status": "CANCELED"
}

Update order

Update a single order using its ID. Any data not included in the request will be erased from the currently saved order.

All line item fields other than SKU and ID can be updated. Quantities can only be increased. New line items can also be added to an order.

Required Fields

channelId - ID for ChannelApe channel that order belongs to (i.e. Shopify Channel, Amazon Channel, eBay Channel).

channelOrderId - ID for order unique to ChannelApe business that you assign (i.e. Shopify Order ID, ASIN).

alphabeticCurrencyCode - Currency used throughout all price fields of the order (i.e. USD, EUR, CAD).

status - State of order (PENDING, OPEN, IN_PROGRESS, CLOSED, CANCELED, HOLD).

Optional Headers

Header Use
X-Channel-Ape-Action-Id Attaches an action to any order activities created by the request whenver a valid action ID is provided.
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}
Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{
  • "status": "CANCELED",
  • "alphabeticCurrencyCode": "USD",
  • "totalPrice": "30.80",
  • "subtotalPrice": "30.80",
  • "totalTax": "1.97",
  • "totalShippingPrice": "3.00",
  • "totalShippingTax": "0.18",
  • "totalGrams": "226.796",
  • "purchasedAt": "2015-09-11T20:52:15.000Z",
  • "canceledAt": "2015-09-13T08:04:00.000Z",
  • "canceledReason": "Wrong product",
  • "customer": {
    },
  • "fulfillments": [
    ],
  • "refunds": [
    ],
  • "additionalFields": [
    ]
}

Delete order

Delete a single order using its ID.

Optional Headers

Header Use
X-Channel-Ape-Action-Id Attaches an action to any order activities created by the request whenver a valid action ID is provided.
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Responses

Get order

Retrieve a single order by its order ID.

path Parameters
order_id
required
string
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Responses

Get order summary

Retrieves a summary of order inforamtion between two periods. Defaults to seven days.

Required query parameters

businessId - ID of ChannelApe business

Optional query parameters

startDate - ISO 8601 date string (defaults to 7 days prior). Used to filter results after given purchase date.

endDate - ISO 8601 date string (defaults to current time). Used to filter results before given purchase date.

Response variables

earliestCreationTime - Timestamp of startDate given as query parameter or seven days prior if no startDate is given.

latestCreationTime - Timestamp of endDate given as query parameter or current time if no endDate is given.

agingOrders - Orders with a createdAt date between seven days and two months ago and an order status of OPEN or IN_PROGRESS. Note this list does not change regardless of what startDat and endDate are set to.

alphabeticCurrencyCode - Currency that all money values returned are in. Should be currency code used by business. This endpoint does not convert currencies and instead assumes all orders have the same currency as the business.

closedOrders - Number of orders with CLOSED status found for this business between the provided start and end dates.

openOrders - Number of orders with OPEN status found for this business between the provided start and end dates.

inProgressOrders - Number of orders with IN_PROGRESS status found for this business between the provided start and end dates.

canceledOrders - Number of orders with CANCELED status found for this business between the provided start and end dates.

totalOrders - Number of orders found for this business between the provided start and end dates.

totalRevenue - Summation of totalPrice for all orders found between the provided start and end dates with an OPEN, IN_PROGRESS, or CLOSED status.

channels - Total order and revenue information for all channels (enabled or not) for the business sorted in descending order by total revenue. totalRevenue for each channel is calculated by summing the totalPrice for each order that has an IN_PROGRESS, CLOSED, or OPEN status. Channel without any orders are excluded.

topSellingLineItems - Top 100 selling line items sorted in descending order by totalRevenue. totalRevenue for each line item is calcualted by multipling line item price by quantity. Line items with the same line item ID are summed together to get the totalRevenue for each line item.

query Parameters
businessId
string
Example: businessId={{business_id}}
startDate
string
Example: startDate=2017-02-26T18:51:24.275Z
endDate
string
Example: endDate=2017-05-03T18:51:24.275Z
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Responses

Order Activities

Activities can be used to record things about an order. ChannelApe records all successful and error activities automatically, but individual integrations may have the need to record custom warning or information actions on an order.

Create an Order Activity

Log a new order activity for an Order.

The order must exist in ChannelApe when creating activity unless you are specifying a CREATE / ERROR or DELETE / SUCCESS. Although you can still create these if the order does exist, ChannelApe can anticipate the order not being there for those operation / result combinations.

Required Fields

operation - The operation for the corresponding order. (UPDATE, CREATE, or DELETE)

result - The result for the corresponding order. (WARNING, SUCCESS, ERROR, UNCHANGED)

channelOrderId - The Channel Order ID for the corresponding order. It is only required when you are not providing the Channel Ape Order ID. Channel ID is also required if you are providing this field. The should be used when an order does not yet exist in ChannelApe.

channelId - The Channel ID for the corresponding order. Must be a valid channel on the business, and is only required if providing order activity with a Channel Order ID.

orderId - The Channel Ape Order ID of the corresponding order. Channel ID and Channel Order ID is not required when providing this field.

HTTP Status Codes

Status Meaning
202 Order activity has been queued for creation.
400 One or more fields provided in the request body are invalid.
404 One or more resources provided in the request body could not be found.
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}
Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{
  • "operation": "CREATE",
  • "result": "WARNING",
  • "channelOrderId": "93712370",
  • "completionTime": "2019-02-21T12:12:00.000Z",
  • "channelId": "c73bb5ca-23d6-4744-96d5-c4fc1ca3bc5c",
  • "actionId": "Some-action-id",
  • "messages": [
    ]
}

Product Blocks

Get product block

header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Responses

Query product blocks by channel ID

header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Responses

Delete product block

header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Responses

Put product block

header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Responses

Query product blocks by business ID and product filter ID

query Parameters
businessId
string
Example: businessId=9f5c18b9-fef3-4d75-9dab-ea9a15fb3940
productFilterId
string
Example: productFilterId=8cc21616-e22f-46d1-913e-00aeecb8d0f2
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Responses

Product Filters

Update product filter

header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}
Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{
  • "complement": false,
  • "createdAt": "2015-10-22T17:23:38.106Z",
  • "errors": [ ],
  • "id": "90887395-9ace-45e5-8e0a-f97920cde82f",
  • "label": "Product Filter with sets of SKUs, UPCs, and Vendors - UPDATE",
  • "skus": [
    ],
  • "tags": [
    ],
  • "upcs": [
    ],
  • "updatedAt": "2015-10-22T17:24:28.074Z",
  • "vendors": [
    ]
}

Get product filter

header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Responses

Delete product filter

header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Responses

Create product filter

header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}
Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{
  • "businessId": "0ea98dc8-367c-4288-888a-7872e105dc52",
  • "label": "Testing Empty Tag Set Error",
  • "condition": "NEW",
  • "skus": [
    ],
  • "tags": [ ]
}

Query product filters by business ID and label

query Parameters
businessId
string
Example: businessId=9f5c18b9-fef3-4d75-9dab-ea9a15fb3940
label
boolean
Example: label=true
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Responses

Product Modifiers

Create product modifier

header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}
Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{
  • "businessId": "41ad9601-a0b1-46a7-a1db-068b36104b6f",
  • "name": "Set Equal to Five",
  • "description": "Setting quantity to five",
  • "modifier": "setEqualTo",
  • "target": "quantity",
  • "value": "4.8"
}

Get product modifiers for business

query Parameters
businessId
string
Example: businessId=9f5c18b9-fef3-4d75-9dab-ea9a15fb3940
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Responses

Delete product modifier

header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Responses

Update product modifier

header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}
Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{
  • "name": "Add Five Dollars to Price",
  • "description": "Add five dollars to retail price",
  • "modifier": "addAmount",
  • "target": "retailPrice",
  • "value": "5.00"
}

Get product modifier

header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Responses

Product Pushes

Query product pushes by channel ID

header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Responses

Put product push without ordinal

header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}
Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{
  • "productFilterIds": [
    ],
  • "productModifierIds": [
    ],
  • "primaryCategoryModifier": {
    },
  • "secondaryCategoryModifier": {
    }
}

Delete product push

header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Responses

Put product push

header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}
Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{
  • "productFilterIds": [
    ],
  • "productModifierIds": [
    ],
  • "primaryCategoryModifier": {
    },
  • "secondaryCategoryModifier": {
    }
}

Get product push

header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Responses

Products

A product is an inventory item located in your catalog. Products are usually listed for sale on a marketplace such as Amazon or Ebay.

Update Product

header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}
Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{
  • "categories": {
    },
  • "businessId": "bff40446-6061-4496-b56a-617fba995d8f",
  • "description": "Wow what a test - of presentation layer",
  • "images": [
    ],
  • "optionKeys": [
    ],
  • "tags": [
    ],
  • "title": "Testing new product fields",
  • "vendor": "Hodor"
}

Get Product

header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Responses

Create product

header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}
Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{
  • "categories": {
    },
  • "businessId": "bff40446-6061-4496-b56a-617fba995d8f",
  • "description": "Wow what a test - of presentation layer",
  • "images": [
    ],
  • "optionKeys": [
    ],
  • "tags": [
    ],
  • "title": "Testing new product fields",
  • "vendor": "Hodor"
}

Recipes

Recipes are used to create automations within the ChannelApe platform. Recipes can be triggered via a schedule or the completion of an action.

Get recipe

header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Responses

Update recipe

header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}
Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{
  • "enabled": false,
  • "sourceId": "dd9fc4f7-1d33-467c-8ecb-42b59b488736",
  • "sourceType": "schedule",
  • "targetAction": "PRODUCT_PULL",
  • "targetId": "14384039-7364-44f9-ab00-cd74287ab72a",
  • "targetType": "supplier"
}

Create recipe

header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}
Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{
  • "businessId": "6b30c39f-2c7f-422c-8dbb-39072117e94c",
  • "sourceId": "95c48ab3-41df-4a41-af87-3242e2c15c3b",
  • "sourceType": "schedule",
  • "targetId": "ec67fc63-77f0-4b64-8378-3e7211901f49",
  • "targetType": "supplier",
  • "targetAction": "PRODUCT_PULL",
  • "enabled": "true"
}

Query recipes by business ID

query Parameters
businessId
string
Example: businessId=dbe7abb7-7d2d-4611-a294-c8ddd094a744
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Responses

Delete recipe

header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Responses

Schedules

Get schedule

header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Responses

Create schedule

header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}
Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{
  • "businessId": "dbe7abb7-7d2d-4611-a294-c8ddd094a744",
  • "daysOfWeek": [
    ],
  • "endTimeInMinutes": 1440,
  • "intervalInMinutes": 1337,
  • "startTimeInMinutes": 544
}

Query schedules by business ID

query Parameters
businessId
string
Example: businessId=dbe7abb7-7d2d-4611-a294-c8ddd094a744
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Responses

Steps

Resources for Playbook Plays

A play is an ordered execution of steps to achieve some high level business goal.

Create step

Generate a new Playbook Step.

Required Fields

name - Name of the step. Must be unique.

Optional Fields

public - Whether or not the step will be queryable from ChannelApe. Default is true. If you turn off public visibility you will only be able retrieve this step by ID.

environmentVariableKeys -

  • name: The name of the environment variable
  • secured: This flag controls if a value is returned on the retrieval of a step/play supplier. This should be used for credentials or other sensitive settings that only need to be writable.
  • defaultValue: If no value is provided when creating a step supplier, this value will be used. Note that this will not apply to play suppliers
  • description: A description for end users to know the intention of the environment variable key. Can be up to 1k characters.

HTTP Status Codes

Status Meaning
201 Step has been created.
400 One or more fields provided in the request body are invalid.
403 You aren not a Playbook Admin and therefore cannot create steps.
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}
Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{
  • "name": "Send ChannelApe 940 over AS2",
  • "public": true,
  • "environmentVariableKeys": [
    ]
}

Query steps

Query public steps. Private steps can only be retrieved by retrieving it directly by ID.

Optional query parameters

name - String value used to match the beginning of a step name (ignoring case).

lastKey - ID returned on previous page of results. Used to retrieve next page of results when results are paginated.

size - Integer between 1 and 250 (defaults to 100). Maximum number of results to return.

HTTP Status Codes

Status Meaning
200 Matching steps were returned.
query Parameters
name
string
Example: name=send
size
integer
Example: size=50
Authorization
string
Example: Authorization=Bearor {{token}}
header Parameters
Content-Type
string
Example: application/json

Responses

Get step

Retrieve a Playbook Step by ID.

HTTP Status Codes

Status Meaning
200 Step was returned.
404 Step could not be found.
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Responses

Update step

Update name, public flag, and envrionment variable keys of an existing Playbook Step.

Required Fields

name - Name of the step. Must be unique.

Optional Fields

public - Whether or not the step will be queryable from ChannelApe. Default is true. If you turn off public visibility you will only be able retrieve this step by ID.

environmentVariableKeys -

  • name: The name of the environment variable
  • secured: This flag controls if a value is returned on the retrieval of a step/play supplier. This should be used for credentials or other sensitive settings that only need to be writable.
  • defaultValue: If no value is provided when creating a step supplier, this value will be used. Note that this will not apply to play suppliers
  • description: A description for end users to know the intention of the environment variable key. Can be up to 1k characters.

HTTP Status Codes

Status Meaning
200 Step has been updated.
400 One or more fields provided in the request body are invalid.
403 You aren not a Playbook Admin and therefore cannot create steps.
404 Step could not be found.
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}
Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{
  • "environmentVariableKeys": [
    ],
  • "name": "Send ChannelApe XML over AS2",
  • "public": false
}

Plays

Resources for Playbook Steps.

A play is a sequence of steps that are executed to achieve a business goal(s).

Create play

Generate a new Playbook Play.

Required Fields

name - Name of the step that must be 190 characters or less.

HTTP Status Codes

Status Meaning
201 Play has been created.
400 One or more fields provided in the request body are invalid.
403 You are not a Playbook Admin and therefore cannot create plays.
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}
Request Body schema: application/json
object

Responses

Request samples

Content type
application/json
{
  • "name": "Send orders to warehouse"
}

Response samples

Content type
application/json
{
  • "createdAt": "2021-04-21T19:05:26.000Z",
  • "id": "6f0baa19-be1a-4a52-9e21-9b78bc516dd1",
  • "name": "Send Orders to Warehouse",
  • "updatedAt": "2021-04-21T19:05:26.000Z",
  • "scheduleConfigurations": [ ]
}

Get All Plays

Retrieve all Playbook Plays available to install. The plays steps are not printed in this API call. You can call /v2/plays/:id to get more information on a play.

HTTP Status Codes

Status Meaning
200 Plays returned
header Parameters
Content-Type
string
Example: application/json
Authorization
string
Example: Bearor {{token}}

Responses

Response samples

Content type
application/json
{
  • "plays": [