← Back to dashboard

SuperLogo API v1

Resolve any company name to its logo bytes. $0.04 / logo, single JSON call, no rate limits beyond your credit balance.

Base URL https://superlogo.ai Per-logo $0.04 Max names / request 700 Auth Bearer sl_live_...

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.

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.

$5 · 125 logos $20 · 500 logos $50 · 1250 logos $200 · 5000 logos

Credit pools drain in this order:

  1. Subscriber bonus — 100 logos, one-time, for paying tier accounts
  2. Free trial — legacy pool from an earlier signup promo, drains before paid balance if you have any
  3. Paid balance — every top-up you buy, never expires

Endpoints

POST /v1/resolve Auth required

Resolve one or more company names to their logo bytes. Costs $0.04 per logo delivered — missing logos are free.

Request body

FieldTypeNotes
namesreqarray<string>Up to 700 entries.
sizeintegerPixel 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
  }
}
GET /v1/account Auth required

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
}
GET /v1/usage Auth required

Rolled-up usage for the last N days (default 30, max 365).

Query paramTypeNotes
daysinteger1–365, default 30.
curl "https://superlogo.ai/v1/usage?days=7" \
  -H "Authorization: Bearer sl_live_YOURKEY"
{
  "logos": 8,
  "cents": 32,
  "days": 7
}
GET /v1/docs Public

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:

HeaderMeaning
X-RateLimit-RemainingLogos remaining across all three pools.
X-RateLimit-ResourceAlways logos — SuperLogo bills per logo, not per request.
X-SuperLogo-Balance-CentsCents remaining in your paid pool.
X-SuperLogo-Free-Trial-CentsCents remaining in your free-trial pool.
X-SuperLogo-Monthly-Free-CentsCents remaining in your subscriber-bonus pool.
X-SuperLogo-Total-Available-CentsSum of all three pools.
X-SuperLogo-Logos-RemainingSame as X-RateLimit-Remaining.
X-SuperLogo-Price-Per-Logo-CentsMachine-readable per-logo price.
X-SuperLogo-Request-IdSame UUID as body.request_id.

Errors

HTTPMeaning
400Bad request — missing/invalid body, bad size, bad format.
401Missing / invalid / revoked API key.
402Payment required — credit pool empty AND autotopup unavailable or off.
413Too many names — max 700 per request.
429Rate limited — retry after a short delay.
500Logo pipeline error — retry idempotent on request_id.

Something wrong or unclear? Ping the raw JSON version at /v1/docs or hit the dashboard.