Skip to main content
Every product you register with Numeral needs a product category, and the list is long. The classify endpoint suggests a category for each product from its name and description, so you can categorize a catalog in batches instead of by hand. It runs on AI provider keys you store in the dashboard, and it can create the products for you in the same call.
Product classification is in limited availability. Accounts that are not enabled receive 404 ENDPOINT_NOT_FOUND from the endpoint. Contact your Numeral representative to enable it for your account.

Prerequisites

1

Use API version 2026-01-01 or later

Send X-API-Version: 2026-01-01 or newer. Older versions reject the endpoint with a message naming the required version. See versioning.
2

Store your AI provider keys

In the dashboard, open Developers > Product Classification AI API Keys and Settings and save a key for each environment you’ll call from. The test and production environments keep separate keys: a request made with a sk_test_... API key uses the test-environment keys, and a production key uses the production ones.Classification has two steps, embeddings and category selection, and each provider covers one or both:One OpenAI key is enough on its own. If you store Gemini and Anthropic keys as well, that pair is used instead of OpenAI. Keys are checked against the provider when you save them.
3

Confirm the endpoint is enabled

Call the endpoint with a test key. A 404 ENDPOINT_NOT_FOUND means your account is not enabled yet.
Product names and descriptions are sent to your AI provider under your own account, so your provider’s usage and data terms apply, and usage is billed to you by the provider.

Step 1: Classify a batch

Send up to 20 products per request. Leave create_products off while you review results.
Response
Results come back in request order, one per product, matched by reference_product_id.
A short description makes a real difference for names that could mean several things. “Monthly analytics subscription” alone could be software, a newsletter or a service; “hosted dashboard, no download” settles it.

Step 2: Read the results

Each result has a status: product_category is always a code from the product categories list, so you can pass it to POST /tax/products or as a line item product_category without translation. Pick a confidence threshold that fits your review capacity. Scores are the classifier’s own estimate, not a guarantee, so a review pass on anything below your threshold is worth the time: the category sets the tax rate on every sale of that product.

Step 3: Create the products

Once you trust the results, either register the reviewed categories yourself with POST /tax/products, or let the classify call do it by setting create_products to true.
With create_products on, product_creation_status tells you what happened to each record: Two rules apply when creating: reference_product_id must be unique within the batch, and only classified products are created. Fallback products are never registered as GENERAL_MERCHANDISE automatically.

Batching, concurrency and retries

  • 20 products per request. Split larger catalogs into batches and send them one after another.
  • One request at a time per account. A second request while one is in flight returns 429 PRODUCT_CLASSIFICATION_CAPACITY_EXCEEDED with a Retry-After header. Wait that many seconds and resend.
  • Allow time. A full batch can take tens of seconds. Set your HTTP client timeout to at least 60 seconds.
  • Retry on 429 and 503 with the Retry-After value when present, and exponential backoff otherwise. 429 PRODUCT_CLASSIFICATION_PROVIDER_QUOTA means your AI provider throttled the request, so slow down rather than retry immediately.
  • Partial results are normal. A batch where some products are failed still returns 200. Only a batch where every product failed returns 503.

Errors

Validation errors such as MISSING_FIELD and UNRECOGNIZED_FIELD apply as on every endpoint. See Error Codes.

Learn more

Classify Products endpoint Managing Product Categories Product Categories