n8n Integration

Automate affiliate posts with n8n + UseArticle

Connect UseArticle's public REST API to n8n and build workflows that generate, schedule, and publish affiliate content without writing code. 7 ready-to-import workflows, one credential, full control.

Why connect n8n to UseArticle?

UseArticle handles publishing automation natively. n8n adds the cross-tool glue: ingesting from external systems, syncing to analytics, custom approval flows, and integrations with your existing stack.

End-to-end automation

Trigger UseArticle generations from any source - Google Sheets, Airtable, CRMs, calendars - and publish on schedule without touching the dashboard.

Pre-built workflows

Copy ready-to-import JSON for List Sites, Create Site, Add Product, Generate Post, and four more. Paste into n8n and run.

One credential, every workflow

Configure your API key once as an HTTP Header Auth credential in n8n and reuse it across every workflow forever.

API access by plan

API access requires an active subscription. Lapsed accounts return HTTP 402 so your tooling can prompt for resubscription.

PlanActive automation capAPI access
Base2 Yes
Unlimited5 Yes
BYOK5 Yes

Setup in 5 minutes

1

Generate your API key

Open the UseArticle dashboard, go to Automation → API Keys, and create a key. The key looks like ua_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.

2

Add the credential in n8n

In n8n: Credentials → New → HTTP Header Auth. Name: UseArticle API Key. Header Name: Authorization. Header Value: Bearer ua_live_xxx. Save.

3

Import a workflow

Pick any workflow below, copy the JSON, and paste into n8n with Cmd/Ctrl + V on the canvas. Open the HTTP Request node and select the UseArticle API Key credential.

4

Replace placeholders

Workflows reference REPLACE_SITE_ID, REPLACE_PRODUCT_ID, and REPLACE_AUTOMATION_ID. Run the List Sites workflow once to find IDs, then update other workflows.

5

Test and schedule

Click Test workflow to verify the credential and endpoint. Once it works, attach a schedule trigger to any workflow you want to run on a recurring basis.

Ready-to-import workflows

Each workflow is a single HTTP Request node behind a manual trigger, pre-wired to a UseArticle endpoint. Add the credential, paste, and run.

Step 1 - HTTP Header Auth credential
{
  "name": "UseArticle API Key",
  "type": "httpHeaderAuth",
  "data": {
    "name": "Authorization",
    "value": "Bearer ua_live_REPLACE_WITH_YOUR_KEY"
  }
}
GET

List Sites

/api/v1/sites

Fetch all affiliate sites in your account. Useful as the first workflow to confirm credentials and to look up site IDs for downstream flows.

View workflow JSON+
{
  "name": "List Sites",
  "nodes": [
    {
      "parameters": {},
      "id": "trigger",
      "name": "When clicking Test workflow",
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [240, 300]
    },
    {
      "parameters": {
        "method": "GET",
        "url": "https://app.usearticle.com/api/v1/sites",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            { "name": "Content-Type", "value": "application/json" }
          ]
        },
        "options": {}
      },
      "id": "useArticleHttp",
      "name": "UseArticle - List Sites",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [520, 300],
      "credentials": {
        "httpHeaderAuth": {
          "id": "REPLACE_WITH_CREDENTIAL_ID",
          "name": "UseArticle API Key"
        }
      }
    }
  ],
  "connections": {
    "When clicking Test workflow": {
      "main": [[{ "node": "UseArticle - List Sites", "type": "main", "index": 0 }]]
    }
  },
  "pinData": {},
  "settings": { "executionOrder": "v1" },
  "versionId": "",
  "meta": {},
  "tags": []
}
POST

Create Site

/api/v1/sites

Spin up a new affiliate site programmatically. Common for agencies onboarding new clients without touching the dashboard.

View workflow JSON+
{
  "name": "Create Site",
  "nodes": [
    {
      "parameters": {},
      "id": "trigger",
      "name": "When clicking Test workflow",
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [240, 300]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://app.usearticle.com/api/v1/sites",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            { "name": "Content-Type", "value": "application/json" }
          ]
        },
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "{\n  \"name\": \"My n8n Affiliate Site\",\n  \"subdomain\": \"my-n8n-site\",\n  \"siteType\": \"affiliate\"\n}",
        "options": {}
      },
      "id": "useArticleHttp",
      "name": "UseArticle - Create Site",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [520, 300],
      "credentials": {
        "httpHeaderAuth": {
          "id": "REPLACE_WITH_CREDENTIAL_ID",
          "name": "UseArticle API Key"
        }
      }
    }
  ],
  "connections": {
    "When clicking Test workflow": {
      "main": [[{ "node": "UseArticle - Create Site", "type": "main", "index": 0 }]]
    }
  },
  "pinData": {},
  "settings": { "executionOrder": "v1" },
  "versionId": "",
  "meta": {},
  "tags": []
}
GET

List Products

/api/v1/sites/{siteId}/products

List products linked to a specific site. Use as a lookup step in larger orchestrations.

View workflow JSON+
{
  "name": "List Products",
  "nodes": [
    {
      "parameters": {},
      "id": "trigger",
      "name": "When clicking Test workflow",
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [240, 300]
    },
    {
      "parameters": {
        "method": "GET",
        "url": "https://app.usearticle.com/api/v1/sites/REPLACE_SITE_ID/products",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            { "name": "Content-Type", "value": "application/json" }
          ]
        },
        "options": {}
      },
      "id": "useArticleHttp",
      "name": "UseArticle - List Products",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [520, 300],
      "credentials": {
        "httpHeaderAuth": {
          "id": "REPLACE_WITH_CREDENTIAL_ID",
          "name": "UseArticle API Key"
        }
      }
    }
  ],
  "connections": {
    "When clicking Test workflow": {
      "main": [[{ "node": "UseArticle - List Products", "type": "main", "index": 0 }]]
    }
  },
  "pinData": {},
  "settings": { "executionOrder": "v1" },
  "versionId": "",
  "meta": {},
  "tags": []
}
POST

Add Product

/api/v1/sites/{siteId}/products

Add a product to a site by URL. UseArticle scrapes name, price, features, and rating automatically.

View workflow JSON+
{
  "name": "Add Product",
  "nodes": [
    {
      "parameters": {},
      "id": "trigger",
      "name": "When clicking Test workflow",
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [240, 300]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://app.usearticle.com/api/v1/sites/REPLACE_SITE_ID/products",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            { "name": "Content-Type", "value": "application/json" }
          ]
        },
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "{\n  \"productUrl\": \"https://www.amazon.com/dp/B0EXAMPLE\",\n  \"affiliateUrl\": \"https://amzn.to/REPLACE\"\n}",
        "options": {}
      },
      "id": "useArticleHttp",
      "name": "UseArticle - Add Product",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [520, 300],
      "credentials": {
        "httpHeaderAuth": {
          "id": "REPLACE_WITH_CREDENTIAL_ID",
          "name": "UseArticle API Key"
        }
      }
    }
  ],
  "connections": {
    "When clicking Test workflow": {
      "main": [[{ "node": "UseArticle - Add Product", "type": "main", "index": 0 }]]
    }
  },
  "pinData": {},
  "settings": { "executionOrder": "v1" },
  "versionId": "",
  "meta": {},
  "tags": []
}
POST

Generate Post

/api/v1/sites/{siteId}/posts

Asynchronously generate an affiliate article. Returns a postId you can poll for status.

View workflow JSON+
{
  "name": "Generate Post",
  "nodes": [
    {
      "parameters": {},
      "id": "trigger",
      "name": "When clicking Test workflow",
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [240, 300]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://app.usearticle.com/api/v1/sites/REPLACE_SITE_ID/posts",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            { "name": "Content-Type", "value": "application/json" }
          ]
        },
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "{\n  \"templateType\": \"HONEST_REVIEW\",\n  \"productIds\": [\"REPLACE_PRODUCT_ID\"],\n  \"tone\": \"professional\",\n  \"wordCount\": 1500,\n  \"language\": \"English\"\n}",
        "options": {}
      },
      "id": "useArticleHttp",
      "name": "UseArticle - Generate Post",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [520, 300],
      "credentials": {
        "httpHeaderAuth": {
          "id": "REPLACE_WITH_CREDENTIAL_ID",
          "name": "UseArticle API Key"
        }
      }
    }
  ],
  "connections": {
    "When clicking Test workflow": {
      "main": [[{ "node": "UseArticle - Generate Post", "type": "main", "index": 0 }]]
    }
  },
  "pinData": {},
  "settings": { "executionOrder": "v1" },
  "versionId": "",
  "meta": {},
  "tags": []
}
POST

Create Automation

/api/v1/automations

Create a UseArticle automation that publishes daily for up to 365 days. Configure template types, products, tone, and schedule.

View workflow JSON+
{
  "name": "Create Automation",
  "nodes": [
    {
      "parameters": {},
      "id": "trigger",
      "name": "When clicking Test workflow",
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [240, 300]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://app.usearticle.com/api/v1/automations",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            { "name": "Content-Type", "value": "application/json" }
          ]
        },
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "{\n  \"siteId\": \"REPLACE_SITE_ID\",\n  \"name\": \"Daily reviews via n8n\",\n  \"durationDays\": 30,\n  \"postsPerDay\": 1,\n  \"templateTypes\": [\"HONEST_REVIEW\"],\n  \"productIds\": [\"REPLACE_PRODUCT_ID\"],\n  \"tone\": \"professional\",\n  \"wordCount\": 1500,\n  \"language\": \"English\"\n}",
        "options": {}
      },
      "id": "useArticleHttp",
      "name": "UseArticle - Create Automation",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [520, 300],
      "credentials": {
        "httpHeaderAuth": {
          "id": "REPLACE_WITH_CREDENTIAL_ID",
          "name": "UseArticle API Key"
        }
      }
    }
  ],
  "connections": {
    "When clicking Test workflow": {
      "main": [[{ "node": "UseArticle - Create Automation", "type": "main", "index": 0 }]]
    }
  },
  "pinData": {},
  "settings": { "executionOrder": "v1" },
  "versionId": "",
  "meta": {},
  "tags": []
}
PATCH

Pause / Resume Automation

/api/v1/automations/{automationId}

Toggle isActive on an automation. Useful for orchestrated pause/resume around sales events or product changes.

View workflow JSON+
{
  "name": "Toggle Automation",
  "nodes": [
    {
      "parameters": {},
      "id": "trigger",
      "name": "When clicking Test workflow",
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [240, 300]
    },
    {
      "parameters": {
        "method": "PATCH",
        "url": "https://app.usearticle.com/api/v1/automations/REPLACE_AUTOMATION_ID",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            { "name": "Content-Type", "value": "application/json" }
          ]
        },
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "{\n  \"isActive\": false\n}",
        "options": {}
      },
      "id": "useArticleHttp",
      "name": "UseArticle - Toggle Automation",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [520, 300],
      "credentials": {
        "httpHeaderAuth": {
          "id": "REPLACE_WITH_CREDENTIAL_ID",
          "name": "UseArticle API Key"
        }
      }
    }
  ],
  "connections": {
    "When clicking Test workflow": {
      "main": [[{ "node": "UseArticle - Toggle Automation", "type": "main", "index": 0 }]]
    }
  },
  "pinData": {},
  "settings": { "executionOrder": "v1" },
  "versionId": "",
  "meta": {},
  "tags": []
}

How to import into n8n

Click Copy JSON on any workflow above, then in n8n open a new workflow and press Cmd / Ctrl + V on the canvas (or use Workflows → Import from clipboard). Open the HTTP Request node, pick the UseArticle API Key credential, and replace anyREPLACE_*placeholders.

Start free trial

How authentication works

# Send the API key as a Bearer token
Authorization: Bearer ua_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
401
Missing or invalid API key
402
Subscription required
403
Feature limit reached

Handle the 402 specifically - it tells your tooling that the user's subscription has lapsed and they should resubscribe to continue using the API. The error body includes a code (subscription_required) you can switch on programmatically.

Frequently asked questions

What can I build with the UseArticle n8n integration?+

Anything you can do in the UseArticle dashboard, you can automate with n8n. Common builds: ingest products from Google Sheets and add them to your site, generate reviews on a daily schedule, post Slack notifications when articles publish, or pause automations during sales events. The integration is built around UseArticle's public REST API, so any n8n flow that can speak HTTP can interact with UseArticle.

Do I need a paid n8n plan?+

No. n8n's self-hosted edition is free and supports unlimited workflows. n8n Cloud starts at $20/month with execution caps that suit most affiliate workflows. Either path works with the UseArticle API.

Which UseArticle plan supports API access?+

Base ($23/month yearly), Unlimited ($39/month yearly), and BYOK ($250 lifetime) all include API access. Active automation caps differ by plan: Base allows 2 active automations, Unlimited and BYOK allow 5.

How do I authenticate?+

Send your API key as a Bearer token in the Authorization header: Authorization: Bearer ua_live_xxx. Generate the key in the UseArticle dashboard under Automation → API Keys, then add it once to n8n as an HTTP Header Auth credential and reuse across every workflow.

What happens if my subscription lapses?+

API requests return HTTP 402 Payment Required so your tooling can prompt the user to resubscribe. The error body includes a clear message and a code (subscription_required) you can switch on programmatically.

Can I use the same API key across multiple n8n workflows?+

Yes. Configure the key once as an HTTP Header Auth credential in n8n and reference that credential from every HTTP Request node. When you rotate the key, you update one credential and every workflow automatically uses the new value.

Ready To Build Your
Affiliate Empire?

Browse 100+ affiliate programs or paste any product URL. AI builds your complete affiliate website with product homepage, blog posts, SEO, and all.
No writing. No coding. No design skills needed.