image

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. Use description_token from 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

How to Read TikTok Video Comments Using SteadyAPI Oct 05, 2026

How to Read TikTok Video Comments Using SteadyAPI

Read TikTok comments 20 at a time. Video 7106594312292453675 has 1269 comments. The next cursor is the string 20.

How to Search Rental Listings Using SteadyAPI Oct 14, 2026

How to Search Rental Listings Using SteadyAPI

Search rental listings by location. Show price.display, and move to the next page with offset.

How to Get an NHL Roster Using SteadyAPI Oct 12, 2026

How to Get an NHL Roster Using SteadyAPI

Load forwards, defensemen, and goalies for one NHL abbreviation. Player names are objects with a default field.

How to Get an AliExpress Description Using SteadyAPI Oct 12, 2026

How to Get an AliExpress Description Using SteadyAPI

Turn a product-detail description token into ordered text modules. The product id alone is not enough.