Quikturnv1.0
API Endpoints

Logo Lookup

Fetch company logos by domain name

Endpoint

GET /{domain}?token={your_key}

Provide a domain to receive a 302 redirect to the stored logo asset. Browsers and most HTTP clients follow the redirect automatically. Optional transforms (size, greyscale, theme) are applied at the edge.

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
themestringlight or dark for background variants

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

Response

Success (302 Found)

302Found
HTTP/1.1 302 Found
Location: https://cdn.quikturn.io/cdn-cgi/image/width=128/https://cdn.quikturn.io/logos/apple.com.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"

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

# With size and greyscale options
curl -L "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); // follows the 302 automatically
  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)  # follows the 302
    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. Let browsers follow redirects<img> tags and most HTTP clients handle 302 automatically.
  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