Charge logos from your own code.
A REST API over your Logo Mojo account. Create a logo, poll it to ready, pull every asset — or drop the embeddable widget on any page.
Quickstart
1. Create an API key (below, or on your account page). 2. POST a brief to api/v1/logos. 3. Poll GET api/v1/logos/<id> until status is ready. 4. Pull assets.
curl -X POST https://logomojo.app/api/v1/logos \
-H "Authorization: Bearer lm_live_your_key" \
-H "Content-Type: application/json" \
-d '{"company":"Northpeak Freight","kind":"abstract","industry":"Logistics","brief":"precise, reliable, unflashy"}'
Authentication
Send your key as a bearer token on every call: Authorization: Bearer lm_live_… for a secret key, or lm_pub_… for a publishable key (widget-safe: create + read only, 5 req/min). Logo Mojo stores only a hash of your key and cannot show it to you again after creation — copy it the moment you create it.
Endpoints
api/v1/logosCreate a logo. Body: company (required), kind, tagline, industry, brief, style, colours, fonts. A publishable key may only send company/kind/tagline/industry/brief/style. Returns 201 with the logo object, status queued.
api/v1/logos/<id>Fetch one logo. status: queued → running → finishing → ready | failed. When ready, assets links every file (svg, icon_svg, png, animated_svg, lottie, mp4, glb, guidelines_pdf, zip).
api/v1/logosList the last 100 logos made with this key.
api/v1/logos/<id>/assetsList every asset file for a ready logo, with its path and size.
api/v1/logos/<id>/assets/<path>Fetch one asset file directly (binary). Pass the path exactly as listed above, e.g. motion/animated.mp4.
api/v1/logos/<id>/zipDownload the full brand kit ZIP for a ready logo.
api/v1/usageThis key's rate limit, monthly quota and calls used in the last 30 days.
Statuses & errors
A logo moves through queued → running → finishing → ready (or failed, with error set). Building takes several minutes — poll, don't hammer. Errors come back as {"error":{"type":"…","message":"…"}} with an HTTP status: 401 bad or revoked key, 429 rate limit (see Retry-After, X-RateLimit-Limit headers), 404 unknown logo or endpoint, 400 bad request (e.g. asking for assets before the logo is ready).
Rate limits
30 requests/minute for a secret key, 5 requests/minute for a publishable key (create + read only). Monthly call quota depends on plan (10,000/mo on the Developer API plan). Both are visible via GET api/v1/usage and in the live console below.
Webhooks
Set a webhook URL on your key (account page, or below) and Logo Mojo POSTs once a logo finishes: {"type":"logo.ready"|"logo.failed","logo":{…}}, signed with header X-LogoMojo-Signature: t=<unix>,v1=<hex hmac-sha256(webhook_secret, "<t>." + raw body)>. Three delivery attempts with back-off. Verify it like this:
const crypto = require("crypto");
function verify(rawBody, header, secret) {
const parts = Object.fromEntries(header.split(",").map(p => p.split("=")));
const expected = crypto.createHmac("sha256", secret).update(parts.t + "." + rawBody).digest("hex");
return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(parts.v1));
}
// verify(rawBody, req.headers["x-logomojo-signature"], webhookSecret)
Embeddable widget
Drop this on any page with a publishable key — it injects a "Make my logo" button that opens Logo Mojo in a modal:
<script src="https://logomojo.app/widget.js" data-key="lm_pub_your_publishable_key"></script>
Try it live
calls your real accountTest keys are created on your account and left for you to revoke when you're done (account page → API keys).