← 문서 목록

앱 어트리뷰션 헤더

HTTP-Referer / X-EveryAIS-Title / X-EveryAIS-Category 로 앱을 공개 순위에 등재하는 방법과 프라이버시 규칙.

everyais 로 만든 앱을 공개 앱 순위(https://everyais.com/apps)와 각 모델 상세의 "이 모델을 쓰는 앱" 섹션에 등재할 수 있습니다. 요청에 헤더 세 개를 붙이면 되고, 신청이나 승인 절차는 없습니다.

응답·과금·레이트리밋은 전혀 달라지지 않습니다. 이 헤더는 라우팅에도, 인증에도, 가격에도 쓰이지 않습니다 — 집계에만 쓰입니다.

⚠️ 이 값들은 검증되지 않은 자가 신고입니다. 주소의 소유권을 확인하지 않으므로, 목록의 이름과 주소는 "그 앱이 그렇게 신고했다" 는 뜻이지 everyais 가 보증하는 사실이 아닙니다.

헤더

헤더필수
HTTP-Referer앱의 공개 https 주소. 이 헤더가 없으면 어트리뷰션 자체가 성립하지 않습니다
X-EveryAIS-Title아니오목록에 표시할 이름 (최대 64자)
X-EveryAIS-Category아니오아래 고정 목록 중 하나
curl https://api.everyais.com/v1/chat/completions \
  -H "Authorization: Bearer $EVERYAIS_API_KEY" \
  -H "Content-Type: application/json" \
  -H "HTTP-Referer: https://your-app.com" \
  -H "X-EveryAIS-Title: Your App" \
  -H "X-EveryAIS-Category: cli-agent" \
  -d '{"model": "everyais/claude-opus-5", "messages": [{"role": "user", "content": "hi"}]}'

OpenAI SDK 를 쓴다면 클라이언트 기본 헤더에 한 번만 넣으면 됩니다.

from openai import OpenAI

client = OpenAI(
    api_key="everyais_...",
    base_url="https://api.everyais.com/v1",
    default_headers={
        "HTTP-Referer": "https://your-app.com",
        "X-EveryAIS-Title": "Your App",
        "X-EveryAIS-Category": "cli-agent",
    },
)

지원 경로는 /v1/chat/completions · /v1/messages · /v1/responses 이며 스트리밍 여부와 무관합니다. 다만 아래는 아직 집계되지 않습니다.

  • 이미지·비디오 요청(/v1/images/*, /v1/videos/*)
  • /v1/responsesbackground: true 작업 — 즉시 반환 후 별도 경로로 처리됩니다

집계는 최선 노력(best-effort) 입니다. 헤더를 올바르게 붙여도 일부 요청이 순위에 반영되지 않을 수 있으며, 그 차이로 과금이나 응답이 달라지지는 않습니다.

카테고리 목록

cli-agent · ide · chat · writing · image-gen · agent-platform · other

목록 밖 값은 무시합니다(요청이 거부되지는 않습니다). 대소문자와 앞뒤 공백은 정규화합니다.

HTTP-Referer 가 어떻게 저장되는가

보낸 값을 그대로 저장하지 않고 origin 으로 접습니다. https://your-app.com:8443/chat?id=42https://your-app.com 이 됩니다 — 포트·경로·쿼리·프래그먼트는 저장 전에 버립니다. 호스트는 소문자로, 국제화 도메인은 punycode 로, 후행 점은 전부 제거해 정규화합니다.

아래에 해당하면 집계하지 않습니다(요청은 정상 처리됩니다).

  • https 가 아닌 주소. javascript: · data: · file: 은 물론 평문 http 도 거부합니다 — 둘 다 받으면 http://your-app.comhttps://your-app.com 이 별개 항목이 되는데 화면에는 같은 주소로 보여, 남의 앱과 구별되지 않는 항목을 만들 수 있기 때문입니다
  • URL 로 파싱되지 않는 값
  • IP 주소로 된 호스트 — 공인 IP 도 포함합니다. 앱이 아니라 서버 주소이기 때문입니다
  • localhost 처럼 점이 없는 호스트, .local · .localhost · .internal · .home.arpa 로 끝나는 주소
  • .your-app.com 처럼 빈 라벨이 있는 주소
  • 접은 origin 이 64자를 넘는 경우 — 자르면 존재하지 않는 주소가 되므로 버립니다

표시 이름은 제어문자와 <, > 를 제거하고 연속 공백을 한 칸으로 접은 뒤 64자로 자릅니다. 이메일 형태의 문자열이 섞이면 표시 이름을 통째로 버립니다.

⚠️ 브라우저가 자동으로 붙이는 표준 Referer 헤더는 읽지 않습니다. 어트리뷰션은 HTTP-Referer 를 직접 붙였을 때만 성립합니다 — 방문자가 모르는 사이에 등재되지 않도록.

프라이버시

집계에 남는 것은 (날짜, 앱 origin, 모델) 조합과 그 조합의 요청 수·토큰 수뿐입니다.

  • 어떤 사용자가 보냈는지(사용자 ID·API 키·조직)는 이 집계와 결합하지 않습니다.
  • 요청 본문(프롬프트·응답)은 이 집계에 들어가지 않습니다.
  • 경로·쿼리스트링은 저장 전에 잘립니다 — 주소에 담긴 식별자가 남지 않습니다.
  • 헤더를 붙이지 않으면 앱 관련 정보가 아무것도 남지 않습니다.

집계는 날짜 단위(UTC)이며 공개 조회 창은 최근 30일입니다.

GET /models/apps

한 모델을 쓰는 앱 목록입니다. 인증이 필요 없고 /v1 접두사도 없습니다. IP 당 60 req/min 이며 응답에는 Cache-Control: public, max-age=60, s-maxage=300, stale-while-revalidate=300 이 붙습니다.

레이트리밋 60 req/min 은 IP 당이면서 경로 묶음이 함께 쓰는 예산입니다. /models/estimate, /models/stats, /models/benchmarks, /models/benchmarks/overview, /models/rankings, /models/apps, /models/apps/top, /models/changes, /models/feed.xml 가 한 버킷을 공유하므로, 한 화면에서 여러 개를 연달아 부르면 그만큼 예산이 빨리 줄어듭니다. /models/catalog별도 버킷이라 상세 조회가 예산을 다 써도 카탈로그 조회는 계속됩니다.

승인·활성 모델만 조회할 수 있고, 그 밖의 slug 는 404 model_not_found 입니다. 모델 slug 는 슬래시를 포함하므로 경로가 아니라 쿼리 파라미터로 보냅니다. limit 은 기본 20, 범위는 1~50 이며 벗어난 값은 400 이 아니라 접습니다.

curl "https://api.everyais.com/models/apps?model=everyais/claude-opus-5"
{
  "model": "everyais/claude-opus-5",
  "window_days": 30,
  "apps": [
    {
      "app_id": "https://your-app.com",
      "title": "Your App",
      "category": "cli-agent",
      "tokens": 128400,
      "requests": 312
    }
  ]
}
필드설명
app_id정규화된 origin. 표시 이름이 없을 때 화면이 이 값을 그대로 보여줍니다
title관측된 표시 이름. 한 번도 신고되지 않았으면 null 입니다
category고정 목록 중 하나. 신고되지 않았으면 null 입니다
tokens창 안의 입력 + 출력 토큰 합
requests창 안의 요청 수
  • 정렬은 토큰 → 요청 → app_id 순입니다.
  • 앱이 하나도 없으면 404 가 아니라 빈 배열입니다. 헤더를 붙인 앱이 없는 모델이 대부분이라 "앱 없음" 과 "모델 없음" 은 구별돼야 합니다.

GET /models/apps/top

같은 데이터를 앱 기준으로 뒤집은 전역 순위입니다(everyais.com/apps 가 씁니다). 모델 파라미터가 없고, 인증·레이트리밋·캐시·limit 규약은 위와 같습니다.

curl "https://api.everyais.com/models/apps/top?limit=20"

total_tokenslimit 으로 자르기 전체 토큰이라, 목록에 표시된 값의 합보다 클 수 있습니다. 어트리뷰션이 붙은 트래픽만 세므로 everyais 전체 사용량이 아닙니다.

공개 카탈로그에 없는 모델(비활성·미승인·가격 미확정)의 트래픽은 이 응답의 순위에도 합계에도 포함되지 않습니다.