LinkedIn article, ready to publish (research + copy + sized images)
POST /v1/linkedin-articleHand over a topic and get a publish-ready LinkedIn article back: grounded web research with cited sources, three headline options, a hook-first body under subheads with facts linked to their sources, key takeaways, a companion post with hashtags, and generated images delivered at LinkedIn's own sizes (article cover 1920x1080, link-share 1200x627, feed square and portrait, in-article 16:9) as inline JPEG under 3 MB. Optional byline, angle, audience, tone and CTA. Nothing from memory; nothing posted on your behalf. One payment, one package. Not cached.
Input
| Field | Type | Description |
|---|---|---|
topic * | string | What the article is about (up to 600 chars). The research runs on this. |
angle | string | Optional: the take or thesis to argue. |
audience | string | Optional: who it is for, e.g. CFOs at mid-market SaaS. |
tone | string | Optional voice, default: professional, first-person, direct. |
author | object | Optional byline the article is written as. |
cta | string | Optional closing call to action. |
length | string | ~600 / ~1,000 / ~1,500 words (default standard). |
images | object | |
hashtags | number | Hashtags on the companion post, 0-5 (default 4). |
Example output
{
"report": "# Why agent payments settle on chain\n*One line of context*\n\n...\n\n## Sources\n1. [Example](https://example.com/...)\n\n---\n## Companion post (paste as a LinkedIn post, 1,120 of 3000 characters)\n...",
"title": "Why agent payments settle on chain",
"article": {
"headline": "Why agent payments settle on chain",
"headlines": [
"Why agent payments settle on chain",
"...",
"..."
],
"subtitle": "One line of context",
"body_markdown": "...",
"key_takeaways": [
"..."
],
"word_count": 980
},
"post": {
"caption": "...\n#AgenticFinance #Payments #AI #Stablecoins",
"hashtags": [
"#AgenticFinance",
"#Payments",
"#AI",
"#Stablecoins"
],
"chars": 1120
},
"images": [
{
"slot": "cover",
"alt": "An abstract network of nodes exchanging tokens",
"prompt": "...",
"source": {
"width": 1024,
"height": 1024,
"model": "black-forest-labs/flux.2-klein-4b"
},
"files": [
{
"name": "article-cover",
"use": "LinkedIn article cover image",
"width": 1920,
"height": 1080,
"format": "jpeg",
"media_type": "image/jpeg",
"bytes": 412000,
"b64": "/9j/4AAQ…"
},
{
"name": "post-link-share",
"use": "LinkedIn post / link-share image (1.91:1)",
"width": 1200,
"height": 627,
"format": "jpeg",
"media_type": "image/jpeg",
"bytes": 180000,
"b64": "/9j/4AAQ…"
}
]
}
],
"sources": [
{
"n": 1,
"title": "Example",
"url": "https://example.com/...",
"snippet": "...",
"fullText": true
}
],
"tables": [],
"meta": {
"tier": "linkedin-article",
"words": 980,
"images": 2,
"image_files": 5,
"post_chars": 1120,
"sources_listed": 12,
"sources_full_text": 4,
"synthesis_model": "anthropic/claude-opus-5"
}
}
Try it - see the 402 challenge (free)
curl -i -X POST https://agent402.tools/v1/linkedin-article \
-H "Content-Type: application/json" \
-d '{"topic":"Why AI agents will pay for APIs with stablecoins","audience":"fintech product leaders","length":"standard"}'
The response is HTTP 402 Payment Required with exact payment requirements. Any x402 v2 client pays automatically and retries:
Paid call (JavaScript agent)
import { wrapFetchWithPayment } from "@x402/fetch";
import { x402Client } from "@x402/core/client";
import { registerExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";
const client = new x402Client();
registerExactEvmScheme(client, { signer: privateKeyToAccount(KEY) });
const payFetch = wrapFetchWithPayment(fetch, client);
const res = await payFetch("https://agent402.tools/v1/linkedin-article", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
"topic": "Why AI agents will pay for APIs with stablecoins",
"audience": "fintech product leaders",
"length": "standard"
}),
});
Related tools
Chat completions - metered (pay what the call costs)
POST /v1/metered/chat/completionsOpenAI-compatible chat completions billed per request from what the call costs: the 402 quotes exact-BPE input plus your…
try in playground →Chat completions - nano tier
POST /v1/nano/chat/completionsOpenAI-compatible chat completions, nano tier: gpt-4.1-nano, gpt-5-nano, gemini flash-lite, small llama/ministral/qwen, …
try in playground →Chat completions - auto tier (eval-ranked routing)
POST /v1/auto/chat/completionsOpenAI-compatible chat completions with server-side model choice: omit "model" (or send "auto") and the gateway routes t…
try in playground →