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.
| Plan | Active automation cap | API access |
|---|---|---|
| Base | 2 | Yes |
| Unlimited | 5 | Yes |
| BYOK | 5 | Yes |
Setup in 5 minutes
Generate your API key
Open the UseArticle dashboard, go to Automation → API Keys, and create a key. The key looks like ua_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
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.
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.
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.
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.
{
"name": "UseArticle API Key",
"type": "httpHeaderAuth",
"data": {
"name": "Authorization",
"value": "Bearer ua_live_REPLACE_WITH_YOUR_KEY"
}
}List Sites
/api/v1/sitesFetch 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": []
}Create Site
/api/v1/sitesSpin 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": []
}List Products
/api/v1/sites/{siteId}/productsList 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": []
}Add Product
/api/v1/sites/{siteId}/productsAdd 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": []
}Generate Post
/api/v1/sites/{siteId}/postsAsynchronously 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": []
}Create Automation
/api/v1/automationsCreate 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": []
}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.
How authentication works
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.