Skip to main content

Content API Quickstart

By the end of this guide, you'll have made your first call to the Content API and received the full list of valid product categories from the catalog.

Prerequisites

Make your first call

ListCategories (POST /content/v1/categories/list) returns every valid category code in the catalog. It requires no prior setup and no request body, making it the right starting point. Every subsequent Content API call — ListCategoryAttributes, UpsertProduct — needs a category code from this list.

# get_authenticated_session() is provided in docs/snippets/auth.mdx — see Authenticating Your Requests
session = get_authenticated_session()

response = session.post(
"https://noon-api-gateway.noon.partners/content/v1/categories/list",
json={},
headers={"User-Agent": "MyCatalogApp/1.0.0"},
timeout=30,
)
response.raise_for_status()
categories = response.json()["categories"]

Response:

{
"categories": [
"apparel-shoes-sneakers",
"electronics-mobiles-smartphones",
"home-furniture-sofas"
]
}

What you got back

categories is a flat list of strings — each one is a complete family-product_type-product_subtype path. There are no nested levels to expand; every entry is already the full code you'll pass to other endpoints.

Find the code that matches your products and store it. You'll pass it to ListCategoryAttributes to get the attribute contract for that category, and again to UpsertProduct when you submit listings. A code not in this list will be rejected by both endpoints.

Checking for errors

ListCategories returns no item-level errors — it either succeeds with the full list or fails at the HTTP level. If you receive a non-2xx response, check the rpcStatus body: status_code and message describe the failure (authentication error, missing X-Project header, or a gateway-level problem).

Where to go next