{"openapi":"3.1.0","info":{"title":"AI Wave API","version":"1.0.0","description":"AI 모델의 변경을 한 피드로 받는다. 벤더 릴리스 노트, Hugging Face 업로드, OpenRouter 카탈로그, GitHub 를 정규화하고 같은 모델의 중복을 합쳤다. 가격과 컨텍스트 자체는 OpenRouter 공개 카탈로그에서 오므로, 그것만 필요하다면 원본을 직접 부르는 편이 낫다.","contact":{"url":"https://aiwave.elopstudio.com/api-docs"},"license":{"name":"Proprietary"}},"servers":[{"url":"https://aiwave.elopstudio.com"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"API 키. https://aiwave.elopstudio.com/member 에서 발급한다."}},"schemas":{"ChangeEvent":{"type":"object","required":["id","eventType","title","detectedAt","model"],"properties":{"id":{"type":"string","format":"uuid"},"eventType":{"type":"string","enum":["new_model","price_change","api_change","open_source_surge","deprecation"]},"title":{"type":"string"},"summary":{"type":["string","null"]},"beforeValue":{"type":["string","null"],"description":"가격 변경 전 값 등"},"afterValue":{"type":["string","null"],"description":"신규 모델이면 카탈로그 ID 또는 Hugging Face 저장소 ID. 발견한 출처에 따라 형태가 다르다."},"sourceUrl":{"type":["string","null"],"format":"uri"},"sourceName":{"type":"string","example":"Hugging Face"},"verificationStatus":{"type":"string","enum":["official","pending","rejected"],"description":"official 은 벤더 자신의 채널에서 확인한 것. pending 은 중개 카탈로그 등 간접 근거라 검수 대기."},"official":{"type":"boolean","description":"verificationStatus 가 official 인지"},"detectedAt":{"type":"string","format":"date-time"},"publishedAt":{"type":["string","null"],"format":"date-time"},"model":{"type":"object","properties":{"slug":{"type":"string","example":"claude"},"name":{"type":"string","example":"Claude"},"company":{"type":"string","example":"Anthropic"},"accentColor":{"type":"string"}}}}},"Model":{"type":"object","properties":{"id":{"type":"string","example":"anthropic/claude-opus-5"},"name":{"type":"string","example":"claude-opus-5"},"displayName":{"type":"string"},"vendor":{"type":"string","example":"Anthropic"},"type":{"type":"string","enum":["commercial","open_source"]},"pricing":{"type":"object","properties":{"inputPerMillion":{"type":["number","null"],"description":"USD / 1M 토큰"},"outputPerMillion":{"type":["number","null"]}}},"contextLength":{"type":["integer","null"]},"listedAt":{"type":["integer","null"],"description":"카탈로그 등록 unix 초"},"huggingfaceId":{"type":["string","null"]},"attention":{"type":"object","description":"품질이 아니라 지금 얼마나 주목받는지. 등록 신규성·소식·의견·벤더 활동을 합쳤다.","properties":{"rank":{"type":"integer"},"score":{"type":"number"},"newsCount":{"type":"integer"},"opinions":{"type":"integer"}}},"url":{"type":"string","format":"uri"}}},"Error":{"type":"object","properties":{"error":{"type":"string"}}}},"headers":{"x-ratelimit-limit":{"schema":{"type":"integer"},"description":"하루 한도"},"x-ratelimit-remaining":{"schema":{"type":"integer"}},"x-aiwave-tier":{"schema":{"type":"string","enum":["free","pro"]}}}},"paths":{"/api/v1/changes":{"get":{"summary":"변경 피드","description":"since 에 지난번 응답의 latest 를 넣으면 그 뒤에 바뀐 것만 오래된 순으로 온다. since 없이 부르면 최신순이다.","operationId":"listChanges","parameters":[{"name":"since","in":"query","schema":{"type":"integer","minimum":0},"description":"unix 초. 0 도 유효하다(처음부터 전부)."},{"name":"before","in":"query","schema":{"type":"integer"},"description":"과거로 넘길 때의 커서"},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"name":"type","in":"query","schema":{"type":"string","enum":["new_model","price_change","api_change","open_source_surge","deprecation"]}},{"name":"model","in":"query","schema":{"type":"string"},"description":"벤더 slug"}],"responses":{"200":{"description":"변경 목록","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ChangeEvent"}},"nextCursor":{"type":["integer","null"]},"latest":{"type":["integer","null"],"description":"다음 요청의 since 로 쓴다. 받은 것이 없으면 null."}}}}}},"401":{"description":"키 없음·잘못됨·폐기됨","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"하루 한도 초과. retry-after 헤더 참고.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/models":{"get":{"summary":"모델 목록","operationId":"listModels","parameters":[{"name":"vendor","in":"query","schema":{"type":"string"},"description":"OpenRouter 네임스페이스. 예: anthropic"},{"name":"maxInputPrice","in":"query","schema":{"type":"number"},"description":"USD / 1M 입력 토큰 상한"},{"name":"minContext","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"주목도 순 모델 목록","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Model"}},"total":{"type":"integer"}}}}}},"401":{"description":"인증 실패"},"429":{"description":"한도 초과"}}}},"/api/v1/models/{slug}/history":{"get":{"summary":"단가 이력","description":"값이 바뀔 때만 한 줄이다. 한 줄은 그 시각부터 다음 줄 전까지 유지된 단가를 뜻한다. 기록은 AI Wave 가 남기기 시작한 시점부터다 — 모델 출시 시점이 아니다.","operationId":"priceHistory","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"description":"모델 ID 의 슬래시를 밑줄로 바꾼 값. 예: anthropic_claude-opus-5"}],"responses":{"200":{"description":"단가 이력","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"currency":{"type":"string","example":"USD"},"unit":{"type":"string","example":"1M tokens"},"since":{"type":["integer","null"],"description":"기록 시작 unix 초"},"points":{"type":"array","items":{"type":"object","properties":{"inputPrice":{"type":["number","null"]},"outputPrice":{"type":["number","null"]},"observedAt":{"type":"integer"}}}}}}}}},"404":{"description":"카탈로그에 없는 모델"}}}},"/api/mcp":{"post":{"summary":"MCP (JSON-RPC over HTTP)","description":"MCP 클라이언트용. initialize / tools/list / tools/call 을 처리한다. 도구: list_model_changes, get_model, search_models.","operationId":"mcp","responses":{"200":{"description":"JSON-RPC 응답"},"401":{"description":"인증 실패"}}}}}}