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 가 말한다. 아래는 지금 이 서비스가 실제로 돌려주는 본문이다.
{
"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-analysis 나 openrouter 같은 값이며, 출처를 말하지 않는 항목은 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 /models 의 pricing 을 보라 — 그쪽은 KRW 다.
total_tasksnumber | null평가에 쓰인 과제 수.
pricingobject | null원본이 함께 준 단가 객체. 형식은 출처마다 다르고, 이 값도 KRW 가 아니다.
last_run_timestampstring | null그 벤치마크가 마지막으로 측정된 시각(ISO 8601). 필드명은 openrouter 를 따랐다(우리 열 이름은 last_run_at 이다). synced_at 과 다르다 — 측정 시점이지 우리가 받아 온 시점이 아니다.
synced_atstring우리 쪽 마지막 갱신 시각(ISO 8601 UTC).
{
"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 | 언제 |
|---|---|---|
| 400 | invalid_request | max_results 가 1~1000 정수가 아님 |
| 401 | invalid_api_key | 헤더 없음. 우리 접두사가 아닌 토큰. 없거나 꺼졌거나 폐기된 키 |
| 401 | expired_api_key | 키가 만료됨 |
| 402 | insufficient_credits | 키가 suspended_no_credit 상태 |
| 403 | key_suspended | 관리자가 정지한 키 |
| 500 | server | 그 밖의 서버 오류 |
데이터가 없는 것은 오류가 아니다. {"data": []} 를 200 으로 돌려준다.
관련 문서
- GET /datasets/rankings-daily — 일별 모델 사용량
- GET /datasets/app-rankings — 앱 랭킹
- GET /models — 모델 카탈로그와 KRW 단가
- 오류와 디버깅 —
error_type전체 표
마지막 수정 2026. 9. 5.