Quikturnv1.0
API Endpoints

Logo Lookup

Fetch company logos by domain name

Endpoint

GET /{domain}?token={your_key}

Provide a domain to receive image bytes directly. Optional transforms (size, greyscale, theme) are applied at the edge via Cloudflare Image Resizing.

Parameter Reference

Path Parameters

ParameterTypeRequiredDescription
domainstringYesCompany domain (e.g., apple.com)

Query Parameters

ParameterTypeDefaultDescription
tokenstringrequiredYour publishable API key (pk_*)
sizenumber128Pixel width (1-800); aspect ratio preserved
greyscalebooleanfalseSet to true/1/yes for B&W
themestring—light or dark for background variants

If no options are provided, the worker serves a 128px-wide version via Cloudflare Image Resizing.

Response

Success (200 OK)

200OK
HTTP/1.1 200 OK
Content-Type: image/png
Cache-Control: public, max-age=86400
X-RateLimit-Remaining: 499999
X-RateLimit-Reset: 1706745600

Error Responses

400Bad Request
Error Message
Invalid domain format
Solution

Ensure the domain is valid (e.g., 'apple.com') without protocol or path

401Unauthorized
Error Message
Missing or invalid token
Solution

Include a valid publishable key starting with 'pk_' as the token parameter

404Not Found
Error Message
Logo not found
Solution

Check domain spelling or try the parent domain (e.g., 'google.com' instead of 'mail.google.com')

429Too Many Requests
Error Message
Rate limit exceeded
Solution

Wait for the Retry-After duration or upgrade your plan for higher limits

The response includes Retry-After and X-RateLimit-Reset headers.

Request Examples

# Inspect headers without downloading
curl -I "https://logos.getquikturn.io/apple.com?token=pk_your_key"

# Download and save the logo
curl "https://logos.getquikturn.io/apple.com?token=pk_your_key" -o apple-logo.png

# With size and greyscale options
curl "https://logos.getquikturn.io/apple.com?token=pk_your_key&size=256&greyscale=true" -o apple-gray.png
const LOGO_API_KEY = 'pk_your_key';
const LOGO_BASE_URL = 'https://logos.getquikturn.io';

async function fetchLogo(domain, opts = {}) {
  const params = new URLSearchParams({ token: LOGO_API_KEY, ...opts });
  const url = `${LOGO_BASE_URL}/${domain}?${params.toString()}`;

  const response = await fetch(url);
  if (!response.ok) throw new Error(`Failed: ${response.status}`);
  return await response.blob();
}

// Usage
const logo = await fetchLogo('apple.com', { size: 256, greyscale: true });
const logoUrl = URL.createObjectURL(logo);
document.getElementById('logo-img').src = logoUrl;
import requests
import os

LOGO_API_KEY = os.getenv('LOGO_API_KEY')
LOGO_BASE_URL = 'https://logos.getquikturn.io'

def fetch_logo(domain: str, size: int = 128, greyscale: bool = False) -> bytes:
    params = {'token': LOGO_API_KEY, 'size': size}
    if greyscale:
        params['greyscale'] = 'true'

    url = f'{LOGO_BASE_URL}/{domain}'
    response = requests.get(url, params=params)
    response.raise_for_status()
    return response.content

# Usage
logo = fetch_logo('apple.com', size=256)
with open('apple-logo.png', 'wb') as f:
    f.write(logo)
<!-- Basic usage -->
<img
  src="https://logos.getquikturn.io/apple.com?token=pk_your_key"
  alt="Apple"
  loading="lazy"
/>

<!-- With size option -->
<img
  src="https://logos.getquikturn.io/google.com?token=pk_your_key&size=256"
  alt="Google"
  loading="lazy"
/>

<!-- Greyscale variant -->
<img
  src="https://logos.getquikturn.io/microsoft.com?token=pk_your_key&greyscale=true"
  alt="Microsoft"
  loading="lazy"
/>

Best Practices

  1. Use <img> tags directly — The endpoint returns image bytes, so <img src="..."> just works.
  2. Handle 404s gracefully — Set a fallback image when a logo is missing.
  3. Respect rate limits — Back off on 429 using the Retry-After header.
  4. Use lazy loading — Add loading="lazy" for below-the-fold images.
  5. Cache appropriately — Logos are cached for 24 hours; respect Cache-Control.

Next Steps

On this page