GET /benchmarks

벤치마크 스냅샷

모델별 벤치마크 점수 스냅샷이다. 지능·코딩·에이전틱 지수, 정확도, 과제당 평균 비용 같은 값을 담는다.

GET https://openrouter.myip.co.kr/api/v1/benchmarks

먼저 알아야 할 것: 지금은 비어 있다

인증

Authorization: Bearer <키>필요하다. 추론 키와 관리 키 둘 다 받는다. 키가 없으면 401 invalid_api_key 다. openrouter 도 이 데이터셋에 키를 요구하므로 같은 규칙을 맞췄고, 추론이 아니므로 크레딧은 쓰지 않는다.

요청 파라미터

sourcestring

점수의 출처로 거른다(artificial-analysis, openrouter 등). 저장된 값과 정확히 일치해야 한다.

task_typestring

과제 유형으로 거른다.

benchmark_typestring

벤치마크 종류로 거른다(gpqa_diamond 등).

max_resultsnumber

돌려줄 최대 행 수. 1~1000 의 정수이며 기본값은 1000 이다.

요청 예시

curl https://openrouter.myip.co.kr/api/v1/benchmarks \
  -H "Authorization: Bearer $MYIP_API_KEY"

빈 응답

데이터가 없을 때의 응답이다. 오류가 아니라 200 과 빈 배열이고, 왜 비었는지를 meta 가 말한다. 아래는 지금 이 서비스가 실제로 돌려주는 본문이다.

json
{
  "data": [],
  "meta": {
    "as_of": null,
    "model_count": 0,
    "source": null,
    "task_type": null,
    "version": "v1",
    "note": "벤치마크 데이터가 없습니다. 동기화에 OPENROUTER_API_KEY 가 필요하고, rankings·apps 와 달리 벤치마크에는 샘플 픽스처를 만들지 않았습니다 — 없는 점수를 지어내면 실측값으로 오인되기 때문입니다. 빈 배열을 0 점으로 표시하지 마세요.",
    "sync": {
      "status": "skipped",
      "trigger": "admin",
      "error": "OPENROUTER_API_KEY 없음 — benchmarks 는 픽스처가 없습니다",
      "finished_at": "2026-09-04T20:13:00.347Z"
    }
  }
}
meta.notestring

결과가 비었을 때만 붙는다. 데이터가 있는 응답에는 이 필드가 없으므로, note 의 유무만으로 빈 상태를 판정해도 된다.

meta.syncobject | null

마지막 벤치마크 동기화 잡의 status·trigger·error·finished_at. 잡이 한 번도 돈 적이 없으면 null 이다. 이것도 비었을 때만 붙는다.

필터가 아무 행과도 맞지 않을 때도 같은 형상이다 — 즉 note 는 "표가 비었다"가 아니라 "이 요청의 결과가 비었다"는 뜻이다.

데이터가 채워졌을 때의 응답

model_permaslugstring

원본이 쓰는 모델 식별자.

model_idstring | null

우리 카탈로그의 모델 id 와 맞춰 본 결과. 맞는 모델이 없으면 null 이다 — 우리가 서빙하지 않는 모델의 점수도 함께 들어올 수 있다는 뜻이다.

display_namestring | null

표시용 이름.

sourcestring

점수의 출처. artificial-analysisopenrouter 같은 값이며, 출처를 말하지 않는 항목은 openrouter 로 둔다. 서로 다른 출처의 점수를 한 축에서 비교하지 마라.

benchmark_typestring | null

벤치마크 종류(gpqa_diamond 등). source·model_permaslug 와 함께 행을 고유하게 만드는 값이다.

task_typestring | null

과제 유형.

categorystring | null

분류.

intelligence_indexnumber | null

종합 지능 지수. coding_index, agentic_index 도 같은 형식의 지수다. 정렬 기본값은 이 값의 내림차순이다.

accuracynumber | null

정확도. accuracy_stddev 는 그 표준편차다.

avg_cost_per_tasknumber | null

과제 하나당 평균 비용. 원본 출처의 통화 그대로이며 원(KRW)이 아니다. 이 데이터셋은 우리가 값을 변환하지 않고 받은 대로 저장하는 유일한 자리다. 우리 요금은 GET /modelspricing 을 보라 — 그쪽은 KRW 다.

total_tasksnumber | null

평가에 쓰인 과제 수.

pricingobject | null

원본이 함께 준 단가 객체. 형식은 출처마다 다르고, 이 값도 KRW 가 아니다.

last_run_timestampstring | null

그 벤치마크가 마지막으로 측정된 시각(ISO 8601). 필드명은 openrouter 를 따랐다(우리 열 이름은 last_run_at 이다). synced_at 과 다르다 — 측정 시점이지 우리가 받아 온 시점이 아니다.

synced_atstring

우리 쪽 마지막 갱신 시각(ISO 8601 UTC).

json
{
  "data": [
    {
      "model_permaslug": "lgai/exaone-4.0-32b",
      "model_id": "lgai/exaone-4.0-32b",
      "display_name": "LG AI: EXAONE 4.0 32B",
      "source": "artificial-analysis",
      "benchmark_type": "gpqa_diamond",
      "task_type": "reasoning",
      "category": "science",
      "intelligence_index": 41.2,
      "coding_index": 38.5,
      "agentic_index": null,
      "accuracy": 0.514,
      "accuracy_stddev": 0.018,
      "avg_cost_per_task": 0.00412,
      "total_tasks": 198,
      "pricing": null,
      "last_run_timestamp": "2026-08-30T00:00:00.000Z",
      "synced_at": "2026-09-04T00:16:02.394Z"
    }
  ],
  "meta": {
    "as_of": "2026-09-04T00:16:02.394Z",
    "model_count": 1,
    "source": null,
    "task_type": null,
    "version": "v1"
  }
}

오류

상태error_type언제
400invalid_requestmax_results 가 1~1000 정수가 아님
401invalid_api_key헤더 없음. 우리 접두사가 아닌 토큰. 없거나 꺼졌거나 폐기된 키
401expired_api_key키가 만료됨
402insufficient_credits키가 suspended_no_credit 상태
403key_suspended관리자가 정지한 키
500server그 밖의 서버 오류

데이터가 없는 것은 오류가 아니다. {"data": []} 를 200 으로 돌려준다.

관련 문서

마지막 수정 2026. 9. 5.