Message DataAlign

We’ll email you back shortly.

Sent! Thanks — we’ll reply soon.

Have a question? We can help.
API access included — build integrations. View API docs
← 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":{}}}