Agent402 / tools / linkedin-article

LinkedIn article, ready to publish (research + copy + sized images)

$1.10 per call · USDC via x402 · POST /v1/linkedin-article

Hand 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.

TRY IN PLAYGROUND →

Input

FieldTypeDescription
topic *stringWhat the article is about (up to 600 chars). The research runs on this.
anglestringOptional: the take or thesis to argue.
audiencestringOptional: who it is for, e.g. CFOs at mid-market SaaS.
tonestringOptional voice, default: professional, first-person, direct.
authorobjectOptional byline the article is written as.
ctastringOptional closing call to action.
lengthstring~600 / ~1,000 / ~1,500 words (default standard).
imagesobject
hashtagsnumberHashtags 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"
  }),
});
Wallet-only. This tool reaches the network/browser/storage, so it is paid in USDC via x402 (no proof-of-work tier).

Related tools

Chat completions - metered (pay what the call costs)

$0.001 · POST /v1/metered/chat/completions

OpenAI-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

$0.003 · POST /v1/nano/chat/completions

OpenAI-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)

$0.01 · POST /v1/auto/chat/completions

OpenAI-compatible chat completions with server-side model choice: omit "model" (or send "auto") and the gateway routes t…

try in playground →