SuperLogo API v1
Resolve any company name to its logo bytes. $0.04 / logo, single JSON call, no rate limits beyond your credit balance.
Overview
Send names, get logos. Each request drains from your credit pool (subscriber bonus first, then free trial, then paid balance). Keys never expire — the balance is the only limit.
- Every logo returned is a transparent PNG with an alpha channel.
- Small favicon-grade sources are Lanczos-upscaled and clamped to remove ringing halos.
sizeis a single integer (logos are square) — 32–1024 pixels, default 512.- Response headers include your remaining balance across all three pools.
Authentication
Every authenticated endpoint takes an Authorization: Bearer sl_live_... header. Create a key on the dashboard. Paid-tier subscribers get 125 free logos as a one-time bonus.
curl https://superlogo.ai/v1/account \
-H "Authorization: Bearer sl_live_YOURKEY"
Pricing & credits
Flat per-logo pricing, no tiers, no minimums. Buy any amount from $1–$500 or one of the preset packs.
Credit pools drain in this order:
- Subscriber bonus — 100 logos, one-time, for paying tier accounts
- Free trial — legacy pool from an earlier signup promo, drains before paid balance if you have any
- Paid balance — every top-up you buy, never expires
Endpoints
Resolve one or more company names to their logo bytes. Costs $0.04 per logo delivered — missing logos are free.
Request body
| Field | Type | Notes |
|---|---|---|
namesreq | array<string> | Up to 700 entries. |
size | integer | Pixel size of the shortest edge. 32–1024, default 512. |
format | "base64" | "url" | Default base64. url currently embeds a data URI too. |
curl -X POST https://superlogo.ai/v1/resolve \
-H "Authorization: Bearer sl_live_YOURKEY" \
-H "Content-Type: application/json" \
-d '{"names":["Apple","Google","Netflix"],"size":512}'
import requests
r = requests.post(
"https://superlogo.ai/v1/resolve",
headers={"Authorization": "Bearer sl_live_YOURKEY"},
json={"names": ["Apple", "Google", "Netflix"], "size": 512},
timeout=30,
)
data = r.json()
for logo in data["logos"]:
print(logo["name"], logo["domain"], "found" if logo["found"] else "not found")
print("balance:", r.headers["X-SuperLogo-Total-Available-Cents"], "cents")
const res = await fetch("https://superlogo.ai/v1/resolve", {
method: "POST",
headers: {
"Authorization": "Bearer sl_live_YOURKEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
names: ["Apple", "Google", "Netflix"],
size: 512,
}),
});
const data = await res.json();
console.log(data.stats);
console.log("remaining:", res.headers.get("X-SuperLogo-Logos-Remaining"));
{
"request_id": "b2d8e385-5374-4b7c-bedb-33dde3dc0b3b",
"logos": [
{
"name": "Apple",
"domain": "apple.com",
"found": true,
"logo_base64": "iVBORw0KGgoAAAANSUhEUgAAAgAAAAI...",
"logo_data_uri": "data:image/png;base64,iVBORw0KGgo..."
}
],
"stats": {
"requested": 3,
"delivered": 3,
"cost_cents": 12,
"balance_cents": 68,
"monthly_free_cents": 0,
"free_trial_cents": 388,
"total_available_cents": 456
}
}
Snapshot of your account — balance across all three pools + pricing.
curl https://superlogo.ai/v1/account \
-H "Authorization: Bearer sl_live_YOURKEY"
{
"email": "you@company.com",
"balance_cents": 68,
"free_trial_cents": 400,
"monthly_free_cents": 0,
"total_available_cents": 468,
"monthly_free_quota": 0,
"free_logos_granted": 100,
"price_per_logo_cents": 4
}
Rolled-up usage for the last N days (default 30, max 365).
| Query param | Type | Notes |
|---|---|---|
days | integer | 1–365, default 30. |
curl "https://superlogo.ai/v1/usage?days=7" \
-H "Authorization: Bearer sl_live_YOURKEY"
{
"logos": 8,
"cents": 32,
"days": 7
}
This document, as JSON — machine-readable schema of every endpoint, response header, error code, and current pricing. Meant to be curl-friendly for SDK bootstrap.
curl https://superlogo.ai/v1/docs | jq .
Response headers
Every successful /v1/resolve response emits these headers so a client can keep a running balance without a second API call:
| Header | Meaning |
|---|---|
X-RateLimit-Remaining | Logos remaining across all three pools. |
X-RateLimit-Resource | Always logos — SuperLogo bills per logo, not per request. |
X-SuperLogo-Balance-Cents | Cents remaining in your paid pool. |
X-SuperLogo-Free-Trial-Cents | Cents remaining in your free-trial pool. |
X-SuperLogo-Monthly-Free-Cents | Cents remaining in your subscriber-bonus pool. |
X-SuperLogo-Total-Available-Cents | Sum of all three pools. |
X-SuperLogo-Logos-Remaining | Same as X-RateLimit-Remaining. |
X-SuperLogo-Price-Per-Logo-Cents | Machine-readable per-logo price. |
X-SuperLogo-Request-Id | Same UUID as body.request_id. |
Errors
| HTTP | Meaning |
|---|---|
400 | Bad request — missing/invalid body, bad size, bad format. |
401 | Missing / invalid / revoked API key. |
402 | Payment required — credit pool empty AND autotopup unavailable or off. |
413 | Too many names — max 700 per request. |
429 | Rate limited — retry after a short delay. |
500 | Logo pipeline error — retry idempotent on request_id. |
Something wrong or unclear? Ping the raw JSON version at /v1/docs or hit the dashboard.