콘텐츠로 이동

Chizumulu API

Chizumulu API는 북부 지역 축구협회(NRFA, 말라위)가 공개하는 축구 소식을, 바로 가져다 쓸 수 있는 JSON으로 바꿔 줍니다.

모든 게시물은 관찰한 그대로 보관됩니다. 골, 스코어, 일정, 대표팀 소집 같은 구조화 데이터는 그 게시물에서 파생되어 원문 옆에 놓입니다. 게시물에 적혀 있지 않은 내용은 API도 말하지 않습니다. 그 값은 null입니다.

https://api.chizumulu.net

모든 공개 경로는 GET이며 JSON을 반환합니다. 인증이 없습니다. API 키도, 가입도, 토큰도 필요 없이 요청만 보내면 됩니다.

최신 메시지 두 개를 구조화 데이터와 함께 가져옵니다.

Terminal window
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