← Back to Home
Developer Docs
Integrate the DataAlign API across extensions. Use the WooCommerce plugin or call the API directly.
Overview
All extensions call the same REST API. The output JSON is consistent for tags, attributes and SEO.
{
"tags": ["string"],
"attributes": {"key": "value"},
"seo": {"title": "string", "meta_description": "string"}
}
Authentication
Send your API key as X-DataAlign-Key. Do not expose keys publicly.
curl -X POST "$BASE/api/v1/enrich-product" \
-H "X-DataAlign-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"product_id": "123",
"title": "Sample",
"description": "...",
"existing_tags": ["electronics","camera"],
"target_total_tags": 5,
"max_new_tags": 3,
"categories": ["Security"],
"images": ["https://example.com/img.jpg"],
"seo_plugin": "rank_math",
"seo_plugin_name": "Rank Math",
"seo_limits": { "title_max": 60, "description_max": 160 }
}'
await fetch(`${BASE}/api/v1/enrich-product`, {
method: 'POST',
headers: { 'X-DataAlign-Key': API_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({
product_id: '123',
title: 'Sample',
description: '...',
existing_tags: ['electronics','camera'],
target_total_tags: 5,
max_new_tags: 3,
categories: ['Security'],
images: ['https://example.com/img.jpg'],
seo_plugin: 'rank_math',
seo_plugin_name: 'Rank Math',
seo_limits: { title_max: 60, description_max: 160 }
})
});
$res = wp_remote_post("$BASE/api/v1/enrich-product", [
'headers' => [ 'X-DataAlign-Key' => $api_key, 'Content-Type' => 'application/json' ],
'body' => wp_json_encode([
'product_id' => '123',
'title' => 'Sample',
'description' => '...',
'existing_tags' => ['electronics','camera'],
'target_total_tags' => 5,
'max_new_tags' => 3,
'categories' => ['Security'],
'images' => ['https://example.com/img.jpg'],
'seo_plugin' => 'rank_math',
'seo_plugin_name' => 'Rank Math',
'seo_limits' => [ 'title_max' => 60, 'description_max' => 160 ]
])
]);
Endpoints
POST /api/v1/enrich-product Single product enrichment
Request body:
{
"product_id": "string",
"title": "string",
"description": "string",
"existing_tags": ["string"],
"target_total_tags": 5,
"max_new_tags": 3,
"categories": ["string"],
"images": ["string"],
"seo_plugin": "string|null",
"seo_plugin_name": "string|null",
"seo_limits": { "title_max": 60, "description_max": 160 }
}
Response (200):
{
"success": true,
"data": {
"job_id": 123,
"tags": ["string"],
"attributes": { "key": "value" },
"seo": { "title": "string", "meta_description": "string" }
}
}
POST /api/v1/enrich-products-bulk Bulk enrichment
Request body:
{
"products": [
{
"product_id": "string",
"title": "string",
"description": "string",
"existing_tags": ["string"],
"target_total_tags": 5,
"max_new_tags": 3,
"seo_plugin": "string|null",
"seo_plugin_name": "string|null",
"seo_limits": { "title_max": 60, "description_max": 160 }
}
]
}
Response (200):
{
"success": true,
"data": { "job_ids": [123, 124] }
}
GET /api/v1/job/{id} Get single job status/result
Path params:
id: integer
Response (200):
{
"success": true,
"data": { "id": 123, "status": "completed", "result": { "tags":[], "attributes":{}, "seo":{} } }
}
GET /api/v1/jobs Get multiple jobs by ID
Query params:
ids=1,2,3
Response (200):
{
"success": true,
"data": { "jobs": [ { "id":1, "status":"pending", "result": null }, { "id":2, "status":"completed", "result": {"tags":[],"attributes":{},"seo":{}} } ] }
}
POST /api/v1/register-site Register site for API key
Request body:
{
"store_name": "string",
"store_url": "https://example.com",
"platform": "wordpress"
}
Response (200):
{
"success": true,
"data": { "site_id": 1, "api_key": "...", "platform": "wordpress", "plan": { "name": "free", "limit": 100 } }
}
GET /api/v1/usage Get current usage
Response (200):
{
"success": true,
"data": { "yearMonth": "2025-01", "productsProcessed": 120, "limit": 2000, "planName": "pro" }
}
Webhooks
Optionally configure a webhook to receive job completion events.
Example payload:
{"job_id":123,"status":"completed","result":{"tags":[],"attributes":{},"seo":{}}}