Product detail gives you the price, the rating, and a description_token. The description endpoint turns that token into the long copy: text blocks and other modules. You do not send the product id by itself.
đ To access this endpoint, you must obtain an API key: https://steadyapi.com/register
Authentication
Every call uses a Bearer token from your SteadyAPI dashboard.
Documentation:
https://docs.steadyapi.com/#authenticating-requests
headers = {
'Authorization': 'Bearer YOUR_API_KEY'
}
Where this fits
Call GET /v1/aliexpress/product/detail first and copy description_token into this request as token. Reviews are a separate call, GET /v1/aliexpress/product/reviews, and they use productId, not this token.
Get an AliExpress description
Endpoint: GET /v1/aliexpress/product/description
Documentation:
https://docs.steadyapi.com/#aliexpress-GETapi-v1-aliexpress-product-description
Parameters
tokenâ required. Usedescription_tokenfrom the product detail response
The token is the only parameter. It has to decode to a product id, a key, a token, and a seller id. meta.product_id and meta.seller_id are those decoded values, so you can check that you passed the token for the product you think you did. A token from another product returns that productâs modules. There is no language parameter on this call.
Python
import requests
url = "https://api.steadyapi.com/v1/aliexpress/product/description"
headers = {"Authorization": "Bearer YOUR_API_KEY"}
# description_token from GET /v1/aliexpress/product/detail
response = requests.get(url, headers=headers, params={"token": description_token})
response.raise_for_status()
payload = response.json()
print(payload.get("meta", {}).get("product_id"))
for module in payload.get("body") or []:
if module.get("type") == "text":
print((module.get("data") or {}).get("content"))
Annotated sample
{
"meta": {
"product_id": "1005007592854867",
"seller_id": "6000453737"
},
"body": [
{
"type": "text",
"data": {
"content": "ăRemote Control & 3 Lighting Modesă:Each solar motion sensor light is equipped with wireless remote control."
}
}
]
}
Walk body in order. For a text module, the copy is data.content. The sample also carries style fields such as font size and color. You can ignore those if you only need the words. Other modules are not text. Skip a module that has no data.content instead of assuming every item is a paragraph. The decoded product id in this sample is 1005007592854867.
Practical use
Do not send productId to this path. The parameter name is token. A detail response that has no description_token cannot be expanded here.
Join the text modules with newlines if you want one description string. Keep the module order. The first block in the sample is a feature heading, not the whole description.
meta.url is the item page built from the decoded product id. It is a link back to the product, not a second request you need to make.
đ Get your API key and load a description: https://steadyapi.com/register