Trendy brands can go-live on Urban Outfitters 4 months faster with Cymbio
We are beyond excited to share this insider angle today, perfectly manifesting our commitment to Marketplacing™ the hottest brands on leading marketplaces such […]
Using Cymbio’s API integration, retailers can synchronize their product data, pull inventory, and create orders from multiple brands in one place.
Cymbio stands as the ultimate digital growth platform, tailored specifically for retailers looking to optimize their dropship and marketplace operations and supercharge their revenue streams. Retailers can automate inventory management, receive orders status, and fetch returns. By automating these tasks, your team can focus on revenue generation and core business activities.
This integration opens the gateway to unprecedented growth opportunities for retailers, making it easier than ever to onboard and work with new and existing brands.
Experience the full potential of Cymbio as it revolutionizes your drop ship and marketplace operations, paving the way for unparalleled success and growth. Unlock the full potential of your business with API-Cymbio integration.
Staging Host: https://cymbio3-api-staging.cym.bio/
Production Host: https://api.cym.bio/
When you use OAuth2, the Cymbio Authentication API allows you to handle all aspects of user identification. It has endpoints for logging in, signing up, logging out, using APIs, and more.
OAuth 2.0 is the identity protocol supported by the API.
To receive an access token, you need to perform the following steps:
To get authenticated, you need to have the following parameters:
Parameters | Description |
---|---|
client_id | The Client ID that you receive upon account activation. |
client_secret | The Client Secret that you receive upon account activation. |
grant_type | client_credentials |
scope | The scope capability of your API request for various API endpoints. For example: read, write, etc. For details, please see the Access Scopes section below. |
Each API has a scope definition that you need to request based on the calls, but the relevant ones are:
Scope | Permissions |
---|---|
variants | read |
retailers | read |
orders | read |
orders | write |
The access token is only valid for 6 minutes. After that you will need to get a new token.
How can you pull products/variants copy/imagery/pricing and inventory?
We offer one single end-point to consume product data and inventory, all the products you’ll be exposed to are ones that the brand or brands approved for you to use.
GET {{api-host}}/v3/retailers/{{retailer-id}}/variants?service_type=ecommerce&limit=1000&offset=0
(read more)
Filter by:
Make sure any additional call, you change the offset to get the next page where 0 = first page, 1000 = 2nd page, and so on.
Request:
GET /v3/retailers/3/variants?service_type=ecommerce&limit=1000&offset=0
Response:
[ { "id": 15383, "sku": "32291-06537-10", "upc": "888731282960", "ean": null, "options": { "size": "10", "color": "Rose Gold" }, "properties": { "type": [ "Slide" ], "year": [ "2017" ], "color": [ "Rose Gold" ], "season": [ "FW" ], "category": [ "Melissa" ] }, "currency": "USD", "supplier_id": 1, "supplier_name": "Melissa", "retail_price": 850000, "model": "32291-06537", "title": "BEACH SLIDE SHINE", "description": "The classic Beach Slide has gotten extra shimmery this season in these new exciting colorways.", "description_extra": "<ul><li>100% Recycled PVC</li><li>Durable, flexible and hypoallergenic</li><li>Bubble gum scent</li><li>Made in Brazil</li></ul>", "description_bullets": null, "images": [ "https://s3.amazonaws.com/cymbio-3-staging/Brands/Melissa/Images/original/32291-06537-8708f25c90f4598d8aeed3fc1ebf1df4.png", "https://s3.amazonaws.com/cymbio-3-staging/Brands/Melissa/Images/original/32291-06537-8b6cc572ebb099c4b0e188cf37646f86.png", "https://s3.amazonaws.com/cymbio-3-staging/Brands/Melissa/Images/original/32291-06537-d48495332b9e962349b3b27d981f0e8c.png", "https://s3.amazonaws.com/cymbio-3-staging/Brands/Melissa/Images/original/32291-06537-c48413d20c2706d6ec6047bbba7de7c0.png" ], "retailer_title": "BEACH SLIDE - hi", "retailer_description": "The classic Beach Slide has gotten extra shimmery this season in these new exciting colorways. ", "retailer_description_extra": "<ul>\n <li>100% Recycled PVC</li>\n <li>Durable, flexible and hypoallergenic</li>\n <li>Bubble gum scent</li>\n <li>Made in Brazil</li>\n</ul>", "retailer_description_bullets": null, "special_sale_price": null, "special_sale_price_start": null, "special_sale_price_end": null, "available_inventory": 0, "square_images": [ "https://s3.amazonaws.com/cymbio-3-staging/Brands/Melissa/Images/square_300/32291-06537-8708f25c90f4598d8aeed3fc1ebf1df4.png", "https://s3.amazonaws.com/cymbio-3-staging/Brands/Melissa/Images/square_300/32291-06537-8b6cc572ebb099c4b0e188cf37646f86.png", "https://s3.amazonaws.com/cymbio-3-staging/Brands/Melissa/Images/square_300/32291-06537-d48495332b9e962349b3b27d981f0e8c.png", "https://s3.amazonaws.com/cymbio-3-staging/Brands/Melissa/Images/square_300/32291-06537-c48413d20c2706d6ec6047bbba7de7c0.png" ] } ]
Name | Type | Sample | Description | |
---|---|---|---|---|
id | number | 15383 | Cymbio’s unique ID | |
sku | string | 32291-06537-10 | Product SKU | |
upc | string | 888731282960 | Product UPC | |
ean | string | null | Product EAN | |
options | object | An object of options specifying the uniqueness of this variant, like size, color, width, etc. | ||
size | number | 10 | The size of the variant | |
color | string | Rose Gold | The color of the variant | |
properties | object | An object of attributes | ||
type | string | Slide | ||
year | number | 2017 | ||
color | string | Rose Gold | ||
season | string | FW | ||
category | string | Melissa | Product’s Category | |
currency | string | USD | Main Currency | |
supplier_id | number | 1 | The Cymbio ID of the brand/vendor/supplier that owns this product | |
supplier_name | string | Melissa | The name of the brand/vendor/supplier that owns this product | |
retail_price | number | 850000 | retail price in cents in the currency specified above | |
model | string | 32291-06537 | The parent SKU/Style of this variants | |
title | string | BEACH SLIDE SHINE | Product title | |
description | string | The classic Beach Slide has gotten extra shimmery this season in these new exciting colorways. | Product short description | |
description_extra | string |
<ul><li>100% Recycled PVC</li><li>Durable, flexible and hypoallergenic</li><li>Bubble gum scent</li><li>Made in Brazil</li></ul> |
Additional description in HTML format | |
description_bullets | string[] | null | Additional description in bullets | |
images | string[] | [https//s3.amazonaws.com/cymbio-3-staging/Brands/Melissa/Images/original/32291-06537-8708f25c90f4598d8aeed3fc1ebf1df4.png] | An array of images | |
retailer_title | string | BEACH SLIDE – hi | Used in cases the title was overwritten by the retailer to comply with retailer’s romance (Done in the UI only) | |
retailer_description | string | The classic Beach Slide has gotten extra shimmery this season in these new exciting colorways. | Used in cases the title was overwritten by the retailer to comply with retailer’s romance (Done in the UI only) | |
retailer_description_extra | string |
<ul><li>100% Recycled PVC</li>\n <li>Durable, flexible and hypoallergenic</li>\n <li>Bubble gum scent</li>\n <li>Made in Brazil</li></ul> |
Used in cases the title was overwritten by the retailer to comply with retailer’s romance (Done in the UI only) | |
retailer_description_bullets | string[] | null | Used in cases the title was overwritten by the retailer to comply with retailer’s romance (Done in the UI only) | |
special_sale_price | number | null | Sale price in cents | |
special_sale_price_start | date | null | Sale price start date | |
special_sale_price_end | date | null | Sale price end date | |
available_inventory | number | 0 | Amount of unit available to sale | |
square_images | string[] | [https//s3.amazonaws.com/cymbio-3-staging/Brands/Melissa/Images/square_300/32291-06537-8708f25c90f4598d8aeed3fc1ebf1df4.png] | Array of thumbnail images of product |
How can you create an order and get the order status?
Pushing Orders for Fulfillment
POST {{api-host}}/v3/retailers/{{retailer-id}}/orders
(read more)
NOTE: Either send a list of your codes or utilize Cymbio’s shipping method codes.
Request:
POST {{api-host}}/v3/retailers/3/orders
{ "billing_address": { "first_name": "Davis", "last_name": "Huang", "address1": "42606 Christy St.", "address2": "", "country": "US", "state": "CA", "city": "Fremont", "zip_code": "94538", "phone_number": "5105731556", "email": "merch@ifchic.com", "company_name": "IFCHIC" }, "shipping_address": { "first_name": "Davis", "last_name": "Huang", "address1": "42606 Christy St.", "address2": "", "country": "US", "state": "CA", "city": "Fremont", "zip_code": "94538", "phone_number": "5105731556", "email": "merch@ifchic.com", "company_name": "IFCHIC" }, "retailer_order_id": "2311OTWC0", "shipping_method_code": "UPS_GND", "shipping_paid": 200, "shipping_tax": 120, "shipping_discount": 0, "shipping_duties": 0, "duties_tax": 0, "sales_division_code": "FF", "sales_order_number": "2310ULTNQ-FF", "ship_until": "2023-12-31T00:00:00Z", "warehouse_id": null, "is_gift": true, "gift_message": "Happy Birthday!", "currency": "USD", "order_lines": [ { "quantity": 1, "sku": "K201462-007-39", "id_in_source": "313", "billed_amount": 100, "box_type": "carton_1", "discount_amount": 100, "commission_fee": 150, "unit_price": 5000, "tax_billed_amount": 1200, "discount_label": "Christmas_2023" }, { "quantity": 1, "sku": "K201462-007-40", "id_in_source": "314", "billed_amount": 100, "box_type": "carton_1", "discount_amount": 100, "commission_fee": 150, "unit_price": 5000, "tax_billed_amount": 1200, "discount_label": "Christmas_2023" } ] }Response:{ "success": true, "id": 84235 }
Name | Mandatory? | Type | Sample | Description | |
---|---|---|---|---|---|
billing_address | Optional | object | Describes all the billing information | ||
address1 | Optional | string | 42606 Christy St. | Billing Address 1 | |
address2 | Optional | string | Billing Address 2 | ||
city | Optional | string | Fremont | Billing City | |
company_name | Optional | string | IFCHIC | Billing Company Name | |
country | Optional | string | US | Billing Country (ISO 3166-2) | |
Optional | string | merch@ifchic.com | Billing Email | ||
first_name | Optional | string | Davis | Billing First Name | |
last_name | Optional | string | Huang | Billing Last Name | |
phone_number | Optional | string | 5105731556 | Billing Phone Number | |
state | Optional | string | CA | Billing State (ISO 3166-2) | |
zip_code | Optional | string | 94538 | Billing Zip Code | |
shipping_address | Mandatory | object | Describes all the shipping information | ||
address1 | Mandatory | string | 42606 Christy St. | Shipping Address 1 | |
address2 | Optional | string | Shipping Address 2 | ||
city | Mandatory | string | Fremont | Shipping City | |
company_name | Optional | string | IFCHIC | Shipping Company Name | |
country | Mandatory | string | US | Shipping Country Code (ISO 3166-2) | |
Optional | string | merch@ifchic.com | Shipping Email Address | ||
first_name | Optional | string | Davis | Shipping First Name | |
last_name | Optional | string | Huang | Shipping Last Name | |
phone_number | Optional | string | 5105731556 | Shipping Phone Number | |
state | Mandatory | string | CA | Shipping State (ISO 3166-2) | |
zip_code | Mandatory | string | 94538 | Shipping Zip Code | |
order_lines | object[] | ||||
quantity | Mandatory | number | 1 | Number of units | |
sku | Custom | string | 1950401 | Variant’s SKU | |
upc | Custom | string | 123456789012 | Variant’s UPC | |
ean | Custom | string | 1234567890123 | Variant’s EAN | |
id_in_source | Optional | string | 1_A | Retailer/Marketplace line order identifier | |
billed_amount | Optional | number | 10000 | Amount paid by the end customer on the website per unit sold in cents (after discount without taxes) in the currency the customer paid | |
box_type | Optional | string | carton_1 | Used in cases the marketplace supplies the boxes and wants to declare which box to use | |
discount_amount | Optional | number | 1000 | Amount in cents of order level discounts | |
commission_fee | Optional | number | 1500 | Amount in cents of the commission of the marketplace for the entire order | |
unit_price | Optional | number | 5000 | For dropship cases, to indicate the price in cents the retailer expects to be billed by the brand per unit, without tax or shipping | |
tax_billed_amount | Optional | number | 1200 | The tax per line in cents the end-customer paid for all units on this line | |
customization | Optional | object | Used for products that support personalization like engravings | ||
discount_label | Optional | string | Christmas_2023 | The name of the promotion campaign | |
expected_delivery_date | Optional | date | |||
retailer_order_id | Mandatory | string | 2310ULTNQ | PO Number | |
shipping_method_code | Mandatory | string | UPS_GND | Shipping Method Code (See below a complete list) | |
shipping_paid | Optional | number | 0 | The Shipping Cost paid by the end customer in cents without tax after discount | |
shipping_tax | Optional | number | Shipping taxes in cents | ||
shipping_duties | Optional | number | Duties on shipping in case of cross-border shipments in cents | ||
shipping_discount | Optional | number | Discount on Shipping in cents | ||
duties_tax | Optional | number | Duties on products in case of cross-border shipments in cents | ||
sales_division_code | Optional | string | Used in cases the retailer/marketplace is operating multiple websites, either a code or the name of the website | ||
sales_order_number | Optional | string | The unique identifier of the order that is visible for the end-customer if different from the retailer_order_id | ||
is_gift | Mandatory | boolean | Should wrap as a gift | ||
gift_message | Optional | string | A Gift Message | ||
currency | Optional | string | USD | The currency used in the order. defaults to USD | |
ship_until | Optional | date | If order isn’t shipped by this date, the retailer/marketplace expect the brand to cancel this order | ||
warehouse_id | Optional | number | In cases the retailer/marketplace orchestrates the orders fulfillment and the brand has multiple warehouses. To use this feature there is a need to coordinate with Cymbio’s Ops team prior |
Pushing Orders Cancellations
POST {{api-host}}/v3/retailers/{{retailer-id}}/orders/{{order-id}}/cancel
(read more)
Request:
POST /v3/retailers/10910/orders/41523/cancel
Response:{ "success": true, "message": "Cancellation request for order [41523] has been sent" }
Pulling Order Statuses (order line level):
GET {{api-host}}/v3/retailers/{{retailer-id}}/orders/order-line?cymbio_order_id={{order-id}}
(read more)
Order Line Status | Description |
---|---|
Rejected before acceptance | Order lines that were rejected by Cymbio due to inventory or rules upon order capturing |
In progress | Order lines that are currently of being fulfilled |
Partially shipped | Order lines where part or quantity of the line was shipped and part was canceled |
Shipped | Order lines that were shipped |
Rejected by warehouse | Order lines that were canceled |
Request:
GET /v3/retailers/3/orders/order-line?cymbio_order_id=7590
Response:{ "cymbioOrderId": 7590, "orderPo": "asd123", "salesOrderNumber": null, "orderIdInSource": null, "createdAt": "2022-01-11T08:11:42.258Z", "orderLines": [ { "quantity": 1, "id_in_source": null, "status": "Shipped", "shipments": [ { "quantity": 1, "trackingNumber": "77777777", "shippingCarrier": "ups" } ], "variant": { "sku": "AIREZ0721-BLACK-M/L", "model": "AIREZ0721_BLACK", "title": "Cosabella Aire Hotpant | BLACK", "upc": "887981308420", "ean": null } }, { "quantity": 1, "id_in_source": null, "status": "Rejected by warehouse", "rejections": [ { "quantity": 1 } ], "variant": { "sku": "AIREZ0721-BLACK-S/M", "model": "AIREZ0721_BLACK", "title": "Cosabella Aire Hotpant | BLACK", "upc": "887981308413", "ean": null } }, { "quantity": 4, "id_in_source": null, "status": "Shipped", "shipments": [ { "quantity": 4, "trackingNumber": "888888888", "shippingCarrier": "ups" } ], "variant": { "sku": "20S1DR51LM-BLK-0", "model": "20S1DR51LM-BLK", "title": "Ariel Lame Mini Wrap Dress", "upc": "728870106720", "ean": null } }, { "quantity": 3, "id_in_source": null, "status": "Partially shipped", "shipments": [ { "quantity": 1, "trackingNumber": "888888888", "shippingCarrier": "ups" } ], "rejections": [ { "quantity": 2 } ], "variant": { "sku": "20S1DR51LM-BLK-2", "model": "20S1DR51LM-BLK", "title": "Ariel Lame Mini Wrap Dress", "upc": "728870106713", "ean": null } } ] }
NOTE: We suggest pulling order status on an hourly basis.
How can you create an RLR Notifications?
Cymbio provides the ability for retailers to create the return requests information about returns on the way back to the brand warehouse.
Create the Reverse Logistics Return (RLR) API:
POST {{api-host}}/v3/retailers/{{retailer-id}}/reverse-logistics-returns
(read more)
Request:
POST /v3/retailers/10241/reverse-logistics-returns
{ "retailer_order_id": "DS-78263", "id_in_source": "1745554", "reason_type": "wrong_item", "reason_text": "I got the wrong item, please replace it", "tracking_number": "1Z78256492742", "line_items": [ { "sku": "S78263", "upc": "837263009267", "ean": "8372630092674", "amount": 1, "tracking_number": "1Z78256492742", "id_in_source": "174554-1" } ] }Response:{ "success": true }
Name | Mandatory? | Type | Sample | Description | |
---|---|---|---|---|---|
retailer_order_id | Mandatory | string | 2310ULTNQ | PO Number | |
id_in_source | Optional | string | 1878324 | Retailer/Marketplace order identifier | |
reason_type | Mandatory | Selected from Reason Types | item_damaged | Reason type for returning the goods | |
reason_text | Optional | string | Item was damaged in delivery | Additional information | |
tracking_number | Optional | string | 1z047362784362 | The tracking number used to return the goods | |
line_items | Mandatory | object[] | sku | Custom | string | 1950401 | Variant’s SKU |
upc | Custom | string | 123456789012 | Variant’s UPC | |
ean | Custom | string | 1234567890123 | Variant’s EAN | |
amount | Mandatory | number | 1 | Number of units | |
tracking_number | Optional | string | 1z047362784362 | The tracking number used to return the goods | |
id_in_source | Optional | string | 1_A | Retailer/Marketplace line order identifier |
Available reason types for RLR notifications:
How can you fetch the returns that have been processed by the brand?
GET {{api-host}}/v3/retailers/{{retailer-id}}/returns?filter={"status":"not_acknowledged"}
(read more)
NOTE: We expect you to acknowledge each return ID you receive.
Name | Mandatory? | Type | Sample | Description | ||
---|---|---|---|---|---|---|
returnId | Mandatory | number | 1772 | Cymbio Internal Return ID | ||
salesOrderNumber | Optional | string | kering-872023-005 | End-Customer Order ID | ||
cymbioOrderId | Optional | number | 39617 | Cymbio Internal Order ID | ||
orderIdInSource | Optional | string | null | Not relevant for API users | ||
orderPo | Mandatory | string | kering-872023-005-A | Retailer Order ID and/or PO# | ||
reasonCode | Optional | string | other | Return Reason Code | ||
reason | Optional | string | null | Return Reason Text | ||
acknowledged | Optional | boolean | false | Acknowledgment status | ||
createdAt | Optional | date | 2023-09-21T06:40:17.932Z | Return Created at Date | ||
updatedAt | Optional | date | 2023-11-08T13:42:05.912Z | Return Updated at Date | ||
returnLines | Mandatory | object | ||||
identifiers | Mandatory | object | ||||
sku | Mandatory | string | 805693581 | Variant SKU | ||
upc | Mandatory | string | 3615090040163 | Variant UPC | ||
orderedQuantity | Mandatory | number | 1 | The original ordered quantity | ||
returnedQuantity | Mandatory | number | 1 | The returned quantity |
Request:
GET /v3/retailers/10241/returns?filter={"cymbio_order_id":39617,"status":"not_acknowledged"}
Response:[ { "returnId": 1772, "salesOrderNumber": "kering-872023-005", "cymbioOrderId": 39617, "orderIdInSource": null, "orderPo": "kering-872023-005-A", "reasonCode": "other", "reason": null, "acknowledged": false, "createdAt": "2023-09-21T06:40:17.932Z", "updatedAt": "2023-11-08T13:42:05.912Z", "returnLines": [ { "identifiers": { "sku": "805693581", "upc": "3615090040163" }, "orderedQuantity": 1, "returnedQuantity": 1 }, { "identifiers": { "sku": "805693582", "upc": "3615090040170" }, "orderedQuantity": 1, "returnedQuantity": 1 } ] }, { "returnId": 1773, "salesOrderNumber": "kering-872023-005", "cymbioOrderId": 39617, "orderIdInSource": null, "orderPo": "kering-872023-005-A", "reasonCode": "other", "reason": null, "acknowledged": false, "createdAt": "2023-09-21T06:40:17.955Z", "updatedAt": "2023-11-09T07:31:02.000Z", "returnLines": [ { "identifiers": { "sku": "806337752", "upc": "3615090355113" }, "orderedQuantity": 1, "returnedQuantity": 1 } ] } ]
PUT {{api-host}}/v3/retailers/{{retailer-id}}/return/{{return-id}}/acknowledge
(read more)
Request:
PUT /v3/retailers/10241/returns/1772
Response:{ "success": true }
For help – please reach out to support@cym.bio.
We are beyond excited to share this insider angle today, perfectly manifesting our commitment to Marketplacing™ the hottest brands on leading marketplaces such […]
Retail sales data reveal several intriguing trends that emerged over the past spring and summer. Explore the Marketplace Trends in this article and get the full report now.
Partnering with Saks offers unique advantages, particularly for brands looking to tap into the luxury market across North America. Saks’ multi-vendor marketplace provides […]