Chizumulu API
Chizumulu API는 북부 지역 축구협회(NRFA, 말라위)가 공개하는 축구 소식을, 바로 가져다 쓸 수 있는 JSON으로 바꿔 줍니다.
모든 게시물은 관찰한 그대로 보관됩니다. 골, 스코어, 일정, 대표팀 소집 같은 구조화 데이터는 그 게시물에서 파생되어 원문 옆에 놓입니다. 게시물에 적혀 있지 않은 내용은 API도 말하지 않습니다. 그 값은 null입니다.
Base URL
섹션 제목: “Base URL”https://api.chizumulu.net모든 공개 경로는 GET이며 JSON을 반환합니다. 인증이 없습니다. API 키도, 가입도, 토큰도 필요 없이 요청만 보내면 됩니다.
첫 요청
섹션 제목: “첫 요청”최신 메시지 두 개를 구조화 데이터와 함께 가져옵니다.
curl "https://api.chizumulu.net/v1/structured?limit=2"응답
{ "items": [ { "rawUpdateId": 5, "source": "whatsapp", "sourceMessageId": "3EB0A1F2C4D5E6F70005", "sourceServerId": null, "sourceTimestamp": "2026-09-19T15:24:20.000Z", "observationCount": 1, "latestObservation": { "id": 5, "observationId": "8f1c6a52-3b7e-4c1a-9d20-0a1b2c3d4e05", "receivedAt": "2026-09-19T15:24:22.805Z", "text": "Fulltime \n\nMafu Stars FC 3–1 Luviri FC \n\n#CINRFALeagueOne\n#NRFATransformingTheGame" }, "processing": { "state": "done", "method": "ai", "model": "deepseek/deepseek-v4-flash-0731", "postType": "result", "translationState": "done", "reusedFromObservationId": null, "error": null }, "structured": { "schemaVersion": 2, "postType": "result", "competition": { "code": "nrfa_league_one", "conflict": false, "evidence": [ { "code": "nrfa_league_one", "signal": "#CINRFALeagueOne", "kind": "hashtag" } ] }, "matches": [ { "index": 0, "homeTeam": "Mafu Stars FC", "awayTeam": "Luviri FC", "homeScore": 3, "awayScore": 1, "status": "full_time", "competition": null, "competitionCode": "nrfa_league_one", "competitionBasis": "post-signal", "venue": null, "dateText": null, "timeText": null, "roundText": null, "minuteText": null, "competitionGroupText": null, "evidence": { "text": true, "attachments": [] }, "events": [ { "index": 0, "type": "full_time", "minuteText": null, "team": null, "homeScore": null, "awayScore": null, "players": [] } ] } ], "facts": [] }, "korean": { "text": "풀타임\n\n마푸 스타즈 FC 3–1 루비리 FC\n\n#CINRFALeagueOne\n#NRFATransformingTheGame", "model": "deepseek/deepseek-v4-flash-0731" } }, { "rawUpdateId": 4, "source": "whatsapp", "sourceMessageId": "3EB0A1F2C4D5E6F70004", "sourceServerId": null, "sourceTimestamp": "2026-09-19T15:20:52.000Z", "observationCount": 2, "latestObservation": { "id": 6, "observationId": "8f1c6a52-3b7e-4c1a-9d20-0a1b2c3d4e06", "receivedAt": "2026-09-19T15:26:31.207Z", "text": "88' GOAL! \n\nNorman Ndlovu completes his brace as Mafu Stars extend their lead! \n\nMafu Stars FC 3–1 Luviri FC \n\n#CINRFALeagueOne\n#NRFATransformingTheGame" }, "processing": { "state": "done", "method": "ai", "model": "deepseek/deepseek-v4-flash-0731", "postType": "live_update", "translationState": "done", "reusedFromObservationId": null, "error": null }, "structured": { "schemaVersion": 2, "postType": "live_update", "competition": { "code": "nrfa_league_one", "conflict": false, "evidence": [ { "code": "nrfa_league_one", "signal": "#CINRFALeagueOne", "kind": "hashtag" } ] }, "matches": [ { "index": 0, "homeTeam": "Mafu Stars FC", "awayTeam": "Luviri FC", "homeScore": 3, "awayScore": 1, "status": "live", "competition": null, "competitionCode": "nrfa_league_one", "competitionBasis": "post-signal", "venue": null, "dateText": null, "timeText": null, "roundText": null, "minuteText": "88'", "competitionGroupText": null, "evidence": { "text": true, "attachments": [] }, "events": [ { "index": 0, "type": "goal", "minuteText": "88'", "team": "Mafu Stars FC", "homeScore": null, "awayScore": null, "players": [ { "name": "Norman Ndlovu", "role": "scorer" } ] } ] } ], "facts": [] }, "korean": { "text": "88' 골!\n\n노먼 은들로부가 멀티골을 완성하며 마푸 스타즈가 리드를 넓힙니다!\n\n마푸 스타즈 FC 3–1 루비리 FC\n\n#CINRFALeagueOne\n#NRFATransformingTheGame", "model": "deepseek/deepseek-v4-flash-0731" } } ], "nextCursor": "MjAyNi0wOS0xOVQxNToyMDo1Mi4wMDBafDQ="}위에서 아래로 읽어 보세요.
rawUpdateId는 원본 메시지의 식별자입니다.latestObservation.text는 손대지 않은 원문입니다.processing.state는 게시물이 처리되었는지 알려 줍니다.done일 때만structured가 채워집니다. 처리 상태를 참고하세요.structured.matches[]는 게시물에서 찾은 경기이고, 각 경기에events[]가 있습니다. 게시물에 없는 값은null입니다. 구조화 모델을 참고하세요.korean은 게시물을 한국어로 옮긴 파생 번역이며, 없으면null입니다.nextCursor로 다음 페이지를 가져옵니다. 페이지네이션을 참고하세요.
어떤 경로를 쓸까요?
섹션 제목: “어떤 경로를 쓸까요?”| 하고 싶은 일 | 사용할 경로 |
|---|---|
| 현재의 구조화된 축구 데이터를 보여주기 | /v1/structured |
| 한 게시물의 수정 이력을 모두 보기 | /v1/structured/{rawUpdateId}/history |
| 하나도 놓치지 않고 내 사본을 동기화하기 | /v1/feed |
| 원본 게시물을 둘러보거나 거르기 | /v1/updates, /v1/latest |
| 서비스가 정상인지 확인하기 | /v1/status |
엔드포인트모든 경로와 파라미터, 반환값.
Raw와 Structured관찰, 수정, 이력, 처리 상태.
구조화 모델경기, 이벤트, 팩트, 알 수 없는 값의 처리.
보장하지 않는 것API가 추론하지 않고 약속하지 않는 것.
기계 판독용
섹션 제목: “기계 판독용”- OpenAPI 3.1 (영어):
https://api.chizumulu.net/openapi.json - 에이전트용:
https://api.chizumulu.net/llms.txt