Enriching your first feed
Send your first product set through the enrichment pipeline, read the result, and scale up.
This guide walks through your first enrichment run: what to prepare, how to call the API, how to read the result, and how to scale up.
What enrichment does
You send existing product data (titles, descriptions, images, categories) and Rezolve Ai:
- Derives contextual rules for the category, so output is grounded rather than generic. See Contextual Enrichment Engine.
- Generates the content types you ask for: descriptions, meta tags, JSON-LD schema, IRL scenario cards, internal links.
- Produces channel-ready field sets for Google Shopping, Agentic Commerce, Microsoft Shopping, Shopify, and WooCommerce.
Cost: on a test key, one unit of the free monthly quota per product per content type. On a live key, credits metered on the content written. Check first with GET /api/v1/usage. See Credits and usage.
What you need
- An API key with
enrichment:write(oradmin). Create one under Settings, Developer console, Keys. Start with anace_test_key: it is free. - A small set of products, two to five to begin with. Each needs at least
idandtitle. The more real fields you send (images, category, brand, price), the better the output.
export ACE_API_KEY=ace_test_your_key_hereStep 1: Prepare a payload
{
"source": {
"type": "inline",
"products": [
{
"id": "prod-1",
"title": "Wireless Bluetooth Headphones",
"description": "Noise cancelling, 20h battery.",
"category": "Audio",
"brand": "Acme",
"price": 129.99
},
{
"id": "prod-2",
"title": "USB-C Charging Cable",
"description": "Fast charge, 2m length.",
"category": "Accessories",
"brand": "Acme",
"price": 14.99
}
]
},
"contentTypes": ["product-description", "meta-tags"]
}Save it as products.json.
Step 2: Run the pipeline
curl -s -X POST https://ace.authoritas.com/api/v1/enrichment/pipeline \
-H "Authorization: Bearer $ACE_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: first-run-1" \
-d @products.jsonpipeline derives the rules and then generates content against them, so it is the right entry point for a first run. The Idempotency-Key means a retry returns this run's job instead of paying for a second one.
With the CLI the same call is rezolve pipeline -f products.json.
Step 3: Read the response
The pipeline always runs as a durable job, so a successful call answers 202 with a job envelope:
{
"data": {
"id": "<job-id>",
"kind": "pipeline",
"status": "pending",
"progress": null,
"estimateMs": null,
"productCount": 2,
"succeededCount": 0,
"failedCount": 0,
"createdAt": "2026-10-09T10:15:00.000Z",
"links": {
"self": "/api/v1/jobs/<job-id>",
"results": "/api/v1/jobs/<job-id>/results"
}
}
}Poll it until status is completed, partial, or failed, or wait for it in one command:
curl https://ace.authoritas.com/api/v1/jobs/<job-id> \
-H "Authorization: Bearer $ACE_API_KEY"
# or, with the CLI
rezolve jobs wait <job-id>Then page through the per-product output:
rezolve jobs results <job-id> --page-size 100 > enriched.jsonOther statuses:
| Status | Meaning |
|---|---|
| 401 | Missing or invalid key. Check the header and that the key is active. |
| 403 | The key lacks enrichment:write, or it is pinned to a different project than the one you named. |
| 402 | Out of credits, or a test key has exhausted its monthly quota. |
| 409 | RUN_ALREADY_ACTIVE: another enrichment run is in progress for the project. Wait for it to finish. Nothing is charged. |
| 429 | Rate limited. Wait for Retry-After. |
Step 4: Scale up
- Bigger batches. Send more products in
source.products. The run is a job either way, so no request sits open for minutes. - Reuse rules. Enriching many batches in one category? Call
/enrichment/rulesonce, keep therulesobject from its response, and pass it asruleson each/enrichment/contentcall, so every batch is grounded identically. See Generating content at scale. - Connected stores. With Shopify or WooCommerce connected, swap the inline source for
{ "type": "store", "storeId": "...", "writeBack": true }and Rezolve Ai reads the products and writes results back. - Stop polling. Subscribe to
enrichment.job.succeededand let Rezolve Ai call you. See Webhooks.
Quick reference
| Step | Action |
|---|---|
| 1 | Create an API key with enrichment:write under Settings, Developer console, Keys. |
| 2 | Check spend: GET /api/v1/usage. |
| 3 | Build a body with source.products and contentTypes. |
| 4 | POST /api/v1/enrichment/pipeline. |
| 5 | Poll GET /api/v1/jobs/{id}, then fetch /results. |
For full schemas see the API Reference and Contextual Enrichment Engine.