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. Send POST /v1/linkedin-article with the required field topic and pay $1.10 per call over x402 with USDC on an EVM chain. It returns a JSON object with report, title, article, post, images and 3 more.
Optional byline, angle, audience, tone and CTA. Nothing from memory; nothing posted on your behalf. One payment, one package. Not cached. Takes up to 3 minutes to answer: keep the connection open for at least 210 seconds, because a client that disconnects first loses the answer, or send the paid call with "Prefer: respond-async" to get a job link at once and collect the answer from it (payment still settles only on a delivered result).
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
topic | string | yes | What the article is about (up to 600 chars). The research runs on this. |
angle | string | no | Optional: the take or thesis to argue. |
audience | string | no | Optional: who it is for, e.g. CFOs at mid-market SaaS. |
tone | string | no | Optional voice, default: professional, first-person, direct. |
author | object | no | Optional byline the article is written as. |
cta | string | no | Optional closing call to action. |
length | string (one of: short, standard, long) | no | ~600 / ~1,000 / ~1,500 words (default standard). |
images | object | no | |
hashtags | number | no | Hashtags on the companion post, 0-5 (default 4). |
Example request
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"}'
Without payment this returns HTTP 402 Payment Required with the exact price for linkedin-article; any x402 v2 or MPP client pays it and retries.
Example response
{
"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"
}
}
| Field | Type | Always present | In the example |
|---|---|---|---|
report | string | yes | # Why agent payments settle on chain *One line of context* ... ## Sources 1... |
title | string | yes | Why agent payments settle on chain |
article | object | yes | 6 fields: headline, headlines, subtitle, body_markdown, key_takeaways, word_c... |
post | object | yes | 3 fields: caption, hashtags, chars |
images | array of objects | yes | 1 item in the example |
sources | array of objects | yes | 1 item in the example |
tables | array | yes | 0 items in the example |
meta | object | yes | 8 fields: tier, words, images, image_files, post_chars, sources_listed |
From an MCP client
catalog.call {
"slug": "linkedin-article",
"params": {
"topic": "Why AI agents will pay for APIs with stablecoins",
"audience": "fintech product leaders",
"length": "standard"
}
}
The hosted connector at https://agent402.tools/mcp needs a payment for linkedin-article; the stdio package pays it from a wallet or from AGENT402_CREDITS_KEY. Local install: npx -y agent402-mcp.
Errors and behavior
topicis required. An input the tool rejects returns an HTTP 4xx whose body carrieserror,tool,expected,requiredandexample, so the caller can correct it.- A paid call that ends in any status of 400 or above is not charged over x402, MPP or a prepaid credits key: settlement is cancelled when the tool fails.
- Wallet-only: this tool runs a model, so it has no proof-of-work tier. A prepaid card-credits key issued earlier (
Authorization: Bearer a402_...) also pays it. - Model-backed: the answer is generated by a model, so the same input can produce different wording.
- Long-running: payment settles after the work finishes, so only EVM exact payments are offered.
- Takes up to 180 seconds. Keep the connection open that long, or send the paid call with
Prefer: respond-asyncto get202and a job link at once, then collect the answer fromGET /api/jobs/{id}; payment still settles only when the answer is ready. - A
GETorHEADto /v1/linkedin-article returns the same 402 quote, so the price can be read without a body. - An
Idempotency-Keyheader makes a retried paid call replay the first 200 instead of charging again (an answer larger than 1 MB and a streamed response are not replayed).
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();
client.setSpendControls?.(false); // keep your own spending ceiling in code
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
SEC filing report (what the company just filed)
POST /v1/filing-reportName a US ticker and get one cited report on what the company just filed with the SEC: every filing in EDGAR's index for…
Insider flow report (Form 4 transactions)
POST /v1/insider-reportName a US ticker and get one cited insider-flow report: every Form 4 against the company in the window with the actual t…
FDA recall report (drug, food, device)
POST /v1/recall-reportName a drug, food, ingredient, brand or medical device and get one cited FDA recall report: every matching enforcement r…
Solana token due-diligence brief
POST /v1/token-briefHand over a Solana SPL mint address and get one cited due-diligence brief: what the token is, whether the mint and freez…
IPO pipeline digest (S-1 + 424B4)
POST /v1/ipo-reportA deterministic digest of the IPO pipeline for a window: every 424B4 final prospectus and every S-1/F-1 registration fro…
Ticker pack: dossier, insider flow and institutional holders
POST /v1/ticker-packOne ticker, one purchase, the full picture. Runs the company due-diligence dossier (SEC filings, XBRL financials, ground…