Skip to main content

API Documentation

The Faslet API gives you direct access to provide data, without having to go through third party services.

tip

Access to our APIs is available to customers on certain tiers. If you're in doubt, please reach out to your Faslet representative.

API Base Url

The base url for the API is

https://api.faslet.net/public/v1

If you'd like sandbox/staging environment to test against, please reach out to support, so we can create a test store.

Authorization

Include the custom header faslet-shopid set to your Faslet Shop ID. Your API token can be found in the Faslet Partner Portal. This needs to be included as a Bearer token with the authorization header.

Endpoints

All formats, request and response are JSON. Be sure to include the application/json content header.

Example headers:
"Content-Type" "application/json",
"faslet-shopid": "MY_SHOP_ID",
"authorization": "Bearer MY_API_TOKEN"

POST /returns

https://api.faslet.net/public/v1/returns

Request Body

An Array of Product Info

Product Info
FieldRequiredTypeDescription
orderIdYESstringThe identifier of the order
productIdYESstringThe identifier of the product. This should match the product id send to Faslet with the orders and the button
skuYESstringThe variant SKU
returnDateYESstringISO8601 Date Time
returnReasonYESstringThe return reason value as described below
returnReasonMessageNOstringA message for the return reason. This can be the message sent by the customer
externalIdNOstringThe ID of the return in your system
Example Request
[{
"orderId": "1234",
"productId": "1234",
"sku": "1234",
"returnReason": "1",
"returnDate": "2022-02-05T18:40:00.000Z",
"externalId": "o-123"
}, {
"orderId": "3456",
"productId": "3456",
"sku": "3456",
"returnReason": "3",
"returnDate": "2022-09-05T18:40:00.000Z",
"externalId": "o-345"
}]
Return reasons
ReasonValue
Too big1
Too small2
Product is damaged3
Product isn’t as expected4
Wrong article/ size5
Color isn’t as expected6
Quality isn’t as expected7
Other reason8
Multiple sizes ordered9

Response

StatusCodes
StatusDescription
202The request was accepted.
Body
FieldRequiredType
errorsYESArray of Return Error
Return Error
FieldTypeDescription
messagestringThe error message
Example Response
{
"errors": [
{
"message": "returnDate is invalid for order 1234"
}
]
}

POST /size-specs

https://api.faslet.net/public/v1/size-specs/MY_BRAND

Request Parameters

FieldRequiredTypeDescription
brandYESstringThen name of the brand for this size specification

Request Body

An Array of Product Size Descriptors

Product Size Descriptor
FieldRequiredTypeDescription
productNameYESstringThe name or title of the product.
productIdYESstringThe identifier of the product. This should match the product id send to Faslet with the orders and the button
genderYESstringThe gender of the product. Must be male, female or unisex
productUrlYESstringThe url of the product as found on the store
sizeChartSpecificationsYESstringAn array of size specifications
Size Chart Specification
FieldRequiredTypeDescription
sizeLabelYESstringThe size label of the variant.
useDefaultsNObooleanWhether this variant should use default size charts as provided by Faslet.
waistNOnumberThe minimum measurement of the waist for this size label.
hipsNOnumberThe minimum measurement of the hips for this size label.
chestNOnumberThe minimum measurement of the chest for this size label.
innerLegNOnumberThe minimum measurement of the innerLeg for this size label.
lengthNOnumberThe minimum measurement of the length for this size label.
sleeveNOnumberThe minimum measurement of the sleeve for this size label.
thighNOnumberThe minimum measurement of the thigh for this size label.
shoulderNOnumberThe minimum measurement of the shoulder for this size label.
waistStretchedNOnumberThe maximum measurement of the waist for this size label.
hipsStretchedNOnumberThe maximum measurement of the hips for this size label.
chestStretchedNOnumberThe maximum measurement of the chest for this size label.

If you choose not to use defaults, please provide as much of this information as possible in order to get the most accurate size charts. Our algorithms will process these and optimize them based on how much information is given.

Example Request
[{
"productName": "Jacket",
"productId": "11",
"gender": "male",
"productUrl": "https://mywebstore.com/en/jacket.html",
"sizeChartSpecifications": [{
"useDefaults": false,
"waist": 60,
"waistStretched": 70,
"hips": 50,
"hipsStretched": 56,
"chest": 65,
"sizeLabel": "S"
}, {
"waist": 63,
"hips": 53,
"chest": 68,
"sizeLabel": "M"
}, {
"waist": 68,
"hips": 58,
"chest": 73,
"sizeLabel": "XL",
"useDefaults": false
}]
}]

Response

StatusCodes
StatusDescription
201New size specifications were created.
200Existing size specifications were updated.
Body
FieldRequiredType
errorsNOArray of Return Error. In the case of a 2xx response, with some (or all) size specifications skipped, a list of errors will be provided
errorNOA Return Error. In the case of a 4xx response, a single error will be returned and nothing will be processed
Return Error
FieldTypeDescription
messagestringThe error message
Example Response
{
"errors": [
{
"message": "[Item 42] No Product URL, ignoring"
},
{
"message": "[Item 76] No Product ID, ignoring"
}
]
}
info

Errors in individual Size Chart Specifications will not prevent everything from processing. The error will list the index of the descriptor that failed. These will return a 2xx status code and can be safely retried after fixing the errors.

Errors in the Product Size Descriptors will prevent processing and will return a 4xx status code.

POST /assistant/state/

🚧Preview
Note that this API is currently in preview. While we don't expect anything to change, please contact us before using it. We will work together to ensure a smooth transition to the final version.
https://api.faslet.net/public/v1/assistant/state/MY_BRAND

Request Parameters

FieldRequiredTypeDescription
brandYESstringThen name of the brand for this size specification

Query String Parameters

FieldRequiredTypeDescription
disableTrackingNobooleanSet this to true if you want to disable all analytics. This will prevent any data from going into the Faslet Partner Portal, and will stop the system from being able to adjust automatically.

Request Body

FieldRequiredTypeDescription
productIdYESstringThe unique identifier for the product
variantsYESArray of VariantList of product variants
productNameNOstringThe name of the product
productUrlNOstringThe URL of the product
productImageNOstringThe URL of the product image
userId1NOstringThe unique identifier for the user
widgetVersion1NOstringThe version of the widget being used
seenExperiments1NOstringThe experiments the user has seen
experimentVariants1NOstringThe variants of the experiments the user has been exposed to
profile1NOProfileThe profile of the user
1obtained from the Faslet Javascript onDataChanged callback

Variant

FieldRequiredTypeDescription
sizeLabelYESstringThe label of the size for this variant
availableYESbooleanIndicates if the variant is available for purchase/in stock
variantIdYESstringThe unique identifier for this variant
Example Requests

An initial request before getting user data from the assistant may look like this:

{
"productId": "11",
"variants": [{
"sizeLabel": "S",
"available": true,
"variantId": "1234"
}, {
"sizeLabel": "M",
"available": true,
"variantId": "5678"
}]
}

Subsequent requests after getting user data from the assistant may look like this:

{
"productId": "11",
"variants": [{
"sizeLabel": "S",
"available": true,
"variantId": "1234"
}, {
"sizeLabel": "M",
"available": true,
"variantId": "5678"
}],
"userId": "1234",
"widgetVersion": "v35.0.3",
"seenExperiments": "exp1,exp2",
"experimentVariants": "exp1_variant1,exp2_variant2",
"profile": {
"gender": "male",
"height": 180,
"weight": 85,
"age": 29
...
}
}

Response

StatusCodes
StatusDescription
200The endpoint returned a state result
Body
FieldRequiredTypeDescription
stateYESstringThe state of the assistant. Can be hidden, default or result
dataYESobjectWhen the state is result, the data contains the recommened size label as a field called result. This also contains a userId which should be used in the widget initialization
Example Response

When a product is not available:

{
"state": "hidden",
"data": {
"userId" "123-456-789"
}
}

When a product is available:

{
"state": "default",
"data": {
"userId" "123-456-789"
}
}

When a product is available and a result is available:

{
"state": "result",
"data": {
"result": "M",
"userId" "123-456-789"
}
}

Help

In case of any questions, please don’t hesitate to contact us on support@faslet.me