API Reference · 영어 퀴즈
오늘의 퀴즈 조회
오늘(KST) 6개 슬롯의 상태, 지금 풀 수 있는 슬롯의 문항, 다음 슬롯 시작 시각, 이번 달 출석 현황을 서버 시각 기준으로 반환합니다. 퀴즈 홈 진입·복귀·슬롯 경계 시각마다 호출하세요.
GET
/api/v1/contents/{content_id}/quiz/today요청 파라미터
content_id(path, uuid, required) — 퀴즈 콘텐츠 ID. 세션 토큰의 콘텐츠와 같아야 합니다.
요청예시
shell
curl -H "Authorization: Bearer sess_prod_0193a1b2-3c4d-7e6f-8890-abcdef012345" \
"https://added.blomics.net/api/v1/contents/0193a1b2-3c4d-5e6f-7890-abcdef012345/quiz/today"응답 필드
server_time(ISO 8601) — 서버 현재 시각. 타이머는 이 값 기준으로 계산합니다.serve_date(YYYY-MM-DD) — 오늘 서빙일(KST).available(boolean) — 오늘 문제 편성 여부.false면 퀴즈 데이터 준비 전이므로 안내 화면을 보여주세요.slots(array, 6개) — 슬롯 상태.slot_key(string) — 슬롯 식별자YYYYMMDD-N.slot(int 1~6),serve_date(YYYY-MM-DD)start_at·end_at(ISO 8601) — 슬롯 시간 [start, end).answer_deadline(ISO 8601) — 시작한 슬롯을 완료할 수 있는 마지막 시각(종료 + 10분).status—upcoming(시작 전) /open(지금 시작 가능) /in_progress(시작함, 미완료) /completed(완료) /missed(놓침).solved_count(int 0~3),item_count(int, 3)reward(object, nullable) — 완료한 슬롯의 보상 판정 요약 {outcome,point}.outcome:granted/rejected/error/none(보상 이벤트 미등록). 미완료 슬롯은null.claim_status(string, 지연 지급 슬롯에만) —unclaimed(미수령) /claimed(수령함). 즉시 지급했거나 지급할 것이 없는 슬롯에는 필드가 없습니다.
current_slot(object, nullable) — 지금 풀 수 있는 슬롯. 진행 중인 슬롯이 있으면 그것(전날 21–24 슬롯의 자정 유예 포함), 없으면 새로 열린 슬롯. 풀 슬롯이 없으면null.slots항목 필드에 더해:items(array, 3개) —item_id(uuid),position(1~3),word(영어 단어),question(헤드라인),answers(보기 배열 — 표시 순서 고정),source_url(원문 링크, nullable),solved(이미 맞힘).
next_slot_start_at(ISO 8601) — 다음에 열리는 슬롯의 시작 시각.attendance—month(YYYY-MM),attended_days(이번 달 출석일),tiers(보너스 단계 배열):days(int) — 기준 출석 일수.granted(boolean) — 이 단계가 판정됐는지(지급 또는 거절). 실제 지급 여부는outcome으로 보세요.granted_at(ISO 8601, nullable) — 판정 시각.outcome(string, nullable) —granted/rejected/error. 미판정이면null.point(int, nullable) — 지급된 포인트 합(거절·오류면 0, 미판정이면 null).reward(object, nullable) —summary·legs(답안 제출의reward와 같은 형식).claim_status(string, 지연 지급 단계에만) —unclaimed/claimed. 슬롯의claim_status와 같은 규칙입니다.
unclaimed— 지연 지급(답안 제출의claim: "deferred")으로 판정만 되고 아직 받지 않은 보상 전체. 서빙일·월과 관계없이 오래된 순, 종류별 최대 20건이며 수령 기한은 없습니다.
응답예시
json
{
"server_time": "2026-10-01T01:12:30.000Z",
"serve_date": "2026-10-01",
"available": true,
"slots": [
{ "slot_key": "20261001-1", "serve_date": "2026-10-01", "slot": 1,
"start_at": "2026-09-30T21:00:00.000Z", "end_at": "2026-10-01T00:00:00.000Z",
"answer_deadline": "2026-10-01T00:10:00.000Z", "status": "completed", "solved_count": 3, "item_count": 3,
"reward": { "outcome": "granted", "point": 10 } },
{ "slot_key": "20261001-2", "serve_date": "2026-10-01", "slot": 2,
"start_at": "2026-10-01T00:00:00.000Z", "end_at": "2026-10-01T03:00:00.000Z",
"answer_deadline": "2026-10-01T03:10:00.000Z", "status": "open", "solved_count": 0, "item_count": 3,
"reward": null }
// … slot 3 ~ 6 (upcoming)
],
"current_slot": {
"slot_key": "20261001-2", "serve_date": "2026-10-01", "slot": 2,
"start_at": "2026-10-01T00:00:00.000Z", "end_at": "2026-10-01T03:00:00.000Z",
"answer_deadline": "2026-10-01T03:10:00.000Z", "status": "open", "solved_count": 0, "item_count": 3,
"reward": null,
"items": [
{ "item_id": "01a0f522-0000-7000-8000-000000000004", "position": 1, "word": "surge",
"question": "여행 수요 surge…연휴 항공권 매진 행렬", "answers": ["급증", "감소", "정체"],
"source_url": "https://news.example.com/articles/1", "solved": false }
// … position 2, 3
]
},
"next_slot_start_at": "2026-10-01T03:00:00.000Z",
"attendance": {
"month": "2026-10", "attended_days": 1,
"tiers": [{ "days": 20, "granted": false, "granted_at": null, "outcome": null, "point": null, "reward": null }]
},
"unclaimed": { "slots": [], "attendance": [] }
}에러처리
400INVALID_PARAM—content_id형식 오류.401UNAUTHORIZED/SESSION_EXPIRED— 세션 인증 실패·만료.404NOT_FOUND— 퀴즈 콘텐츠가 아니거나 세션 콘텐츠 불일치.500INTERNAL_ERROR— 서버 오류.