EUrouter

App Attribution

Get your app featured in EUrouter rankings and analytics.


App attribution allows developers to associate their API usage with their application, enabling visibility in EUrouter's public rankings and detailed analytics. By including simple headers in your requests, your app can appear in our leaderboards and gain insights into your model usage patterns.


Benefits of App Attribution

Attributed apps receive:

  • Public App Rankings -- Your app appears in EUrouter's public rankings with daily, weekly, and monthly leaderboards
  • Model Page Features -- Your app is shown on individual model pages, displaying usage statistics
  • Comprehensive Analytics -- Track your model usage, token consumption, and cost trends over time
  • Community Visibility -- Gain exposure among the EUrouter developer community

Attribution Headers

Include these optional HTTP headers in your API requests to enable attribution:

HTTP-Referer

Identifies your app's URL and is used as the primary identifier for rankings.

DetailValue
HeaderHTTP-Referer
RequiredOptional (recommended)
FormatValid URL (e.g. https://myapp.com)

X-EUrouter-Title

Sets or modifies your app's display name in rankings and analytics.

DetailValue
HeaderX-EUrouter-Title
RequiredOptional
FormatPlain text (e.g. My AI App)

X-EUrouter-Categories

Assigns your app to one or more marketplace categories.

DetailValue
HeaderX-EUrouter-Categories
RequiredOptional
FormatComma-separated, lowercase, hyphen-separated, max 30 characters each

Categories

Categories are organized into four groups:

Coding

CategoryDescription
cli-agentCommand-line AI agents
ide-extensionIDE plugins and extensions
cloud-agentCloud-hosted coding agents
programming-appGeneral programming tools
native-app-builderNative application builders

Creative

CategoryDescription
creative-writingWriting and storytelling
video-genVideo generation tools
image-genImage generation tools

Productivity

CategoryDescription
writing-assistantWriting and editing tools
general-chatGeneral-purpose chat apps
personal-agentPersonal AI assistants

Entertainment

CategoryDescription
roleplayRoleplay experiences
gameAI-powered games

Implementation Examples

All three headers are optional, but including them enables all attribution features. Apps using localhost URLs must include a title to be tracked.

TypeScript (OpenAI SDK)

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.eurouter.ai/api/v1",
  apiKey: process.env.EUROUTER_API_KEY,
  defaultHeaders: {
    "HTTP-Referer": "https://myapp.com",
    "X-EUrouter-Title": "My AI App",
    "X-EUrouter-Categories": "general-chat,productivity",
  },
});

const response = await client.chat.completions.create({
  model: "gpt-5.1",
  messages: [{ role: "user", content: "Hello!" }],
});

Python (OpenAI SDK)

import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.eurouter.ai/api/v1",
    api_key=os.environ["EUROUTER_API_KEY"],
    default_headers={
        "HTTP-Referer": "https://myapp.com",
        "X-EUrouter-Title": "My AI App",
        "X-EUrouter-Categories": "general-chat,productivity",
    },
)

response = client.chat.completions.create(
    model="gpt-5.1",
    messages=[{"role": "user", "content": "Hello!"}],
)

Python (Direct API)

import os
import requests

response = requests.post(
    "https://api.eurouter.ai/api/v1/chat/completions",
    headers={
        "Authorization": f"Bearer {os.environ['EUROUTER_API_KEY']}",
        "Content-Type": "application/json",
        "HTTP-Referer": "https://myapp.com",
        "X-EUrouter-Title": "My AI App",
        "X-EUrouter-Categories": "general-chat,productivity",
    },
    json={
        "model": "gpt-5.1",
        "messages": [{"role": "user", "content": "Hello!"}],
    },
)

TypeScript (fetch)

const response = await fetch(
  "https://api.eurouter.ai/api/v1/chat/completions",
  {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.EUROUTER_API_KEY}`,
      "Content-Type": "application/json",
      "HTTP-Referer": "https://myapp.com",
      "X-EUrouter-Title": "My AI App",
      "X-EUrouter-Categories": "general-chat,productivity",
    },
    body: JSON.stringify({
      model: "gpt-5.1",
      messages: [{ role: "user", content: "Hello!" }],
    }),
  }
);

cURL

curl https://api.eurouter.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $EUROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -H "HTTP-Referer: https://myapp.com" \
  -H "X-EUrouter-Title: My AI App" \
  -H "X-EUrouter-Categories: general-chat,productivity" \
  -d '{
    "model": "gpt-5.1",
    "messages": [{"role": "user", "content": "Hello!"}]
  }'

Where Your App Appears

App Rankings

Your app is listed on the Rankings page with daily, weekly, and monthly leaderboards. Rankings are based on the percentage share of total token volume and update hourly.

Model Apps Tabs

Individual model pages show which apps are using that model, giving your app additional exposure to developers browsing the model catalog.

Individual App Analytics

View detailed analytics for your app including model usage trends, token breakdowns, and historical patterns.


Best Practices

URL Requirements

  • Use a consistent, publicly accessible URL for HTTP-Referer
  • Avoid query parameters or fragments that change between requests
  • For localhost development, always include a title header

Title Guidelines

  • Keep titles concise and descriptive (under 50 characters)
  • Avoid special characters or excessive formatting
  • The title can be updated at any time by sending a new X-EUrouter-Title header

Privacy Considerations

  • The HTTP-Referer URL and app title are publicly visible in rankings
  • Usage statistics are aggregated and do not expose individual request details
  • You can stop appearing in rankings by removing the attribution headers

On this page

Claim €15 free credits·300 left
Sign up free →