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": [] }
}

에러처리

  • 400 INVALID_PARAM — content_id 형식 오류.
  • 401 UNAUTHORIZED / SESSION_EXPIRED — 세션 인증 실패·만료.
  • 404 NOT_FOUND — 퀴즈 콘텐츠가 아니거나 세션 콘텐츠 불일치.
  • 500 INTERNAL_ERROR — 서버 오류.