# ContentReach > Pay-per-post LinkedIn publishing API for AI agents. No dashboard, no subscription. Connect a LinkedIn account once; publish with one authenticated API call or one MCP tool call. ## What this is ContentReach posts finished content to LinkedIn on behalf of an authenticated account. It does not generate, edit, or approve content, and it does not provide a dashboard for browsing past posts — the calling agent or its operator's own platform is the system of record. LinkedIn access is direct (ContentReach's own registered LinkedIn Developer app), not a third-party unified API. ## Auth Bearer API key in the `Authorization` header. A key is scoped to one or more specific Linked Accounts and, optionally, a spend cap. Keys are issued by the account operator (human), not by an agent itself. ## Publish a post — REST ``` POST https://api.contentreach.io/v1/posts Authorization: Bearer cr_live_... Content-Type: application/json { "linked_account": "la_...", "content": "..." } ``` Success: `201` with the LinkedIn post ID/URL and the operator's remaining balance. Insufficient balance: `402 Payment Required`, with both a Stripe top-up path and x402 stablecoin payment instructions in the response body — an agent with its own x402-compatible wallet can pay and retry with no human involved. ## Publish a post — MCP Hosted endpoint: `https://contentreach.io/api/mcp` (Streamable HTTP, stateless). Send the same Bearer API key as REST on every request. Two tools are registered: `publish_post` (`{ linked_account, content }`, equivalent to `POST /v1/posts`) and `check_balance` (no arguments, equivalent to `GET /v1/balance`). Capability-equivalent to REST — nothing is MCP-only or REST-only. ## Pricing Pay-as-you-go per post, no subscription. Prepaid credit packs available at a discount. Exact current rate: see the pricing section at https://contentreach.io/#pricing — this file is not the pricing source of truth, since rates may change without a corresponding update here. ## Errors Every error response is `{ "error": { "code": "...", "message": "...", "retryable": boolean } }`. Codes are stable and namespaced (e.g. `linked_account.session_expired`), never silently repurposed. Identical taxonomy on REST and MCP. ## Scope (v1) LinkedIn only, personal profiles only. Company/organization page posting is not yet available — it requires LinkedIn's own partner approval process, which ContentReach is pursuing separately. No scheduling; posts publish immediately. No other social platforms. ## Full docs Complete spec, all fields, every error code with meaning: https://contentreach.io/llms-full.txt Human-facing walkthrough (for whoever is setting up the account, not the agent itself): https://contentreach.io/docs