Dosie Foxie

Logo API for AI agents: production files, not a PNG

An agent does not need a picture of a logo. It needs the files a business can ship, a spec it can re-render, and a price it can pay without a human. That is the contract this page describes.

Agent API (2026-11-09). The contract, the free endpoints and the paid x402 checkout are live. A preview is $1 and a Production Pack $19, in USDC on Base, paid per request — no account, no API key, no card. A request that arrives without payment returns 402 with the exact amount, asset, network and address.

The agent API is a thin machine-callable layer over the same engine that builds the human Production Pack. The engine composes a parametric mark, traces the approved drawing once, runs the six geometry gates, and writes the bundle. The API only changes how the brief arrives and how the pack is paid for and returned.

That matters because the hard part of a logo API is not returning an image. Image APIs already do that. The hard part is returning a file set that survives a printer, an embroiderer, a sign shop and a favicon at 16 pixels — plus a source the agent can edit without another model call.

What the agent sends

The request is a structured brief, not a prompt. Name and trade are required; style, audience, tagline, must-include and avoid are optional but strongly recommended. A thin brief produces a generic mark, which is the failure mode the API is designed to prevent.

{
  "brief": {
    "name": "Salthouse Smokehouse",
    "trade": "wood-smoked fish and charcuterie",
    "audience": "coastal restaurants and delis",
    "style": "woodcut",
    "must_include": ["fish", "smokehouse"],
    "avoid": ["cartoon", "gradients", "text in the mark"],
    "tagline": "Slow smoke, cold water"
  }
}

The brief schema is published in the OpenAPI contract. A request that is missing a trade or a style returns a 422 with the missing fields, not a guessed mark.

What comes back

A completed order returns a manifest with signed URLs, a SHA-256 for every file, the palette, the font licence, the QA gate results and the parametric spec. The agent can hand the zip to its user and the manifest to its own code.

{
  "order_id": "ord_01J...",
  "spec_url": "https://dosiefoxie.com/f/ord_.../spec.json",
  "mark_svg_url": "https://dosiefoxie.com/f/ord_.../mark.svg",
  "files": [
    {"name": "logo-color.svg", "kind": "vector", "use": "master", "bytes": 4184, "sha256": "..."},
    {"name": "logo-mono.svg", "kind": "vector", "use": "one-ink", "bytes": 4102, "sha256": "..."},
    {"name": "favicon.ico", "kind": "icon", "use": "favicon", "bytes": 23086, "sha256": "..."}
  ],
  "qa": {
    "passed": true,
    "gates": ["structure", "nodes", "stroke-floor", "contrast", "small-size", "clear-space"]
  },
  "license": {
    "owner": "customer",
    "fonts": "OFL",
    "terms": "https://dosiefoxie.com/terms.html"
  }
}

The manifest is the contract. An agent should not have to guess which file is the master, which one is one ink, or whether the pack passed QA. If the gates fail, the pack is regenerated; if it still fails, the pack fee is refunded.

The payment is part of the request

The paid endpoints use x402. The first request returns HTTP 402 with a PAYMENT-REQUIRED header. The agent pays the advertised amount in USDC on Base and retries the same request with a PAYMENT-SIGNATURE header. There is no account, no API key and no checkout page.

HTTP/1.1 402 Payment Required
PAYMENT-REQUIRED: eyJ4NDAyVmVyc2lvbiI6MiwuLi4=

{
  "x402Version": 2,
  "resource": {"url": "https://dosiefoxie.com/api/v1/orders"},
  "accepts": [{
    "scheme": "exact",
    "network": "eip155:8453",
    "amount": "19000000",
    "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "payTo": "0x...",
    "maxTimeoutSeconds": 300,
    "extra": {"name": "USD Coin", "version": "2"}
  }]
}

The amount is in atomic USDC units: 19000000 is $19.00. The agent should verify the network, asset, payTo and amount before signing. The full flow, including idempotency and refunds, is in the x402 guide.

Why the spec matters more than the SVG

An SVG is a drawing. The spec is the drawing's parameters: the mark family, the font, tracking, layout, scale, gap, palette and tagline. Colour, spacing, layout and tagline changes re-render from the spec without a model call, which is why the API can offer a cheap re-render and why an agent can keep a brand consistent across a site, an app icon and a deck.

If the agent only receives a PNG, every change is a new generation. If it receives the spec, the expensive part is already done.

Status, latency and the guarantee

The agent API is live: the contract, the free endpoints, the sample pack and the paid x402 checkout. A preview is $1 and a pack $19 in USDC on Base; the payment is verified and settled by a facilitator and the app never holds a key. A draft takes roughly two minutes because three directions are drawn and judged; the pack compiles in about four seconds after approval. The API is asynchronous: it returns 202 with a status URL and an estimated time; poll the status URL (webhooks are not available yet).

The guarantee is pack-or-refund: if the engine cannot produce a pack that passes the six gates, the pack fee is marked for a refund to the paying wallet and [email protected] confirms it. The preview fee is credited toward a retry, not refunded in cash. There is no human support on the agent SKU; [email protected] is the escalation path for a stuck order.

Questions

Is the API live?

Yes. The contract, the free endpoints, the sample pack and the paid x402 checkout are live. A request that arrives without payment gets 402 with the exact amount, asset, network and address; pay it and retry with PAYMENT-SIGNATURE to get 202 and a status URL.

Do I need an account or an API key?

No. x402 needs nothing but a wallet with USDC on Base. If you would rather be invoiced than hold a wallet, we issue a key on a prepaid balance instead: email [email protected] with how many packs you expect a month and we set it up. The key is a bearer token, the balance is debited per call at the same prices, and a failed job goes straight back on the balance.

What happens if the pack fails QA?

The engine retries within the order budget. If it still cannot produce a passing pack, the pack fee is queued for refund to the paying wallet and the order is closed. The refund is a USDC transfer the operator signs, so it is not instant: GET /api/v1/orders/{id} answers refund.pending until it is sent, then refund.sent with the transaction hash, which verifies it on Base.

Can the output be used commercially?

Yes. The pack includes a licence sheet and the fonts are OFL, outlined in the files. The pack is not a trademark clearance; the buyer is responsible for checking the name and mark.

If the file is the problem, the pack is the fix.

The Production Pack is $149, one time: true vector masters, six lockups, a print PDF and EPS, one ink per file and unlimited parametric edits.

See the production pack Audit my current file

Free tools: vector check · 12-file audit · 16px legibility · CMYK shift · stitch estimate

For agents

The same pack is available to a machine: a structured brief, a JSON manifest, x402 in USDC on Base, and an MCP tool contract.

Agent access · OpenAPI · llms.txt · MCP

Agent API: the contract, the free endpoints and the paid x402 checkout are live. USDC on Base, no account, no API key.

Related guides