뉴스룸이 API에서 필요로 하는 것은 두 가지입니다. 이번 주에 발표될 지표 캘린더와, 기사에 쓰이는 시리즈의 가장 최근 발표 수치입니다. 캘린더는 각 발표를 UTC 시각과 함께 보여 줍니다. 국가별 엔드포인트는 최신 수치를 period, released_on과 함께 반환하므로 기사에 올바른 기준 월을 쓸 수 있습니다.
기사에 쓸 최신 수치 가져오기
각 시리즈에는 국가별 엔드포인트가 있습니다. /v1/economics/{country}/inflation, /cpi, /unemployment, /gdp-growth입니다. period 매개변수를 생략하면 가장 최근 기간이 반환됩니다. 이 요청은 미국 인플레이션을 조회합니다.
curl -s -H "Authorization: Bearer $NARWHAL_API_KEY" \
"https://api.narwhalapi.com/v1/economics/USA/inflation"{
"country": "USA",
"period": "2026-09",
"year_over_year": "3.7",
"month_over_month": "0.6",
"year_to_date": "4.0",
"released_on": "2026-10-14"
}이 응답에는 의미가 다른 두 날짜가 있습니다. period는 수치가 측정하는 기준 월로 2026-09, 즉 9월입니다. released_on은 수치가 발표된 날로 2026-10-14입니다. 10월에 송고하는 기사는 물가가 9월까지 1년간 3.7퍼센트 올랐다고 씁니다. 10월 발표일을 따르면 잘못된 달이 됩니다.
세 가지 변화율 필드는 서로 다른 지표입니다. year_over_year는 3.7, month_over_month는 0.6, year_to_date는 4.0이며 모두 퍼센트 단위입니다. 각각 답하는 질문이 다르므로 인용하는 지표를 문장에서 밝혀 주세요.
다른 시리즈에도 같은 호출
| 시계열 | 엔드포인트 | 반환되는 필드 | period | released_on |
|---|---|---|---|---|
| 인플레이션 | /v1/economics/USA/inflation | year_over_year, month_over_month, year_to_date | 2026-09 | 2026-10-14 |
| 소비자물가지수 | /v1/economics/USA/cpi | value 336.940, 기준 index_base 1982-84=100 | 2026-09 | 2026-10-14 |
| 실업률 | /v1/economics/USA/unemployment | rate 4.2 | 2026-09 | 2026-10-02 |
| GDP 성장률 | /v1/economics/USA/gdp-growth | year_over_year 2.1, quarter_over_quarter 0.832 | 2026-Q3 | 2026-10-29 |
GDP 성장률은 period에 분기를 쓰므로 2026-Q3은 3분기를 뜻합니다. 직전 분기 대비 성장을 쓸 때는 quarter_over_quarter를, 1년 전 같은 분기와 비교할 때는 year_over_year를 사용하세요.
새 수치를 이전 수치 옆에 두기
캘린더의 각 발표에는 values[].previous가 있으며, 새 발표와 비교되는 이전 수치입니다. 발표 당일 기사는 캘린더의 previous 값과, 발표 후 국가별 엔드포인트에서 받은 새 값을 함께 인용할 수 있습니다. 두 수치가 같은 종류가 되도록 캘린더 값의 transformation(예: year_over_year)을 확인하세요.
브리핑 만들기: 이번 주 발표와 최신 수치
이 스크립트는 캘린더에서 11월 9일부터 13일까지의 미국 일정을 가져와 각 발표를 뉴욕 시간으로 출력합니다. 그다음 인플레이션, 실업률, GDP 최신 수치를 가져와 기준 기간을 문장으로 풀어 씁니다.
- API 키 받기 가입에서 API 키를 받아
NARWHAL_API_KEY에 보관하세요. - 이번 주 일정 나열하기
GET /v1/economics/calendar는 발표를 시간순으로 반환하지 않습니다. 스크립트는at시각이 있는 항목만 남겨 정렬한 뒤 발표 기관의timezone으로 변환합니다. - 각 최신 수치 가져오기 시리즈마다 한 번씩 호출합니다.
say함수는2026-09를 2026년 9월로,2026-Q3를 2026년 3분기로 바꾸므로 문장에는period가 쓰이고released_on의 달은 쓰이지 않습니다.import os from datetime import datetime from zoneinfo import ZoneInfo import requests API = "https://api.narwhalapi.com" HEADERS = {"Authorization": f"Bearer {os.environ['NARWHAL_API_KEY']}"} MONTHS = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"] QUARTERS = {"Q1": "first", "Q2": "second", "Q3": "third", "Q4": "fourth"} def get(path, **params): r = requests.get(f"{API}/v1/economics/{path}", headers=HEADERS, params=params, timeout=10) r.raise_for_status() return r.json() def say(period): year, part = period.split("-") if part in QUARTERS: return f"the {QUARTERS[part]} quarter of {year}" return f"{MONTHS[int(part) - 1]} {year}" week = get("calendar", countries="USA", start_date="2026-11-09", end_date="2026-11-13", limit=100) for x in sorted((x for x in week["releases"] if "at" in x), key=lambda x: x["at"]): local = datetime.fromisoformat(x["at"].replace("Z", "+00:00")).astimezone(ZoneInfo(x["timezone"])) print(local.strftime("%a %d %b %H:%M"), x["name"], "|", x.get("period", "no period")) for series in ("inflation", "unemployment", "gdp-growth"): d = get(f"USA/{series}") figures = {k: v for k, v in d.items() if k not in ("country", "period", "released_on")} print(series, figures, "for", say(d["period"]), "released", d["released_on"])
Mon 09 Nov 10:00 Wholesale trade | 2026-09
Tue 10 Nov 08:30 Wages and earnings | 2026-10
Tue 10 Nov 08:30 Consumer prices | 2026-10
Thu 12 Nov 08:30 Jobless claims | 2026-11-07
Thu 12 Nov 12:00 Petroleum inventories | no period
Thu 12 Nov 14:00 Public finances | 2026-10
Fri 13 Nov 08:30 Producer prices | 2026-10
inflation {'year_over_year': '3.7', 'month_over_month': '0.6', 'year_to_date': '4.0'} for September 2026 released 2026-10-14
unemployment {'rate': '4.2'} for September 2026 released 2026-10-02
gdp-growth {'year_over_year': '2.1', 'quarter_over_quarter': '0.832'} for the third quarter of 2026 released 2026-10-2911월 10일 화요일의 소비자물가 발표는 2026-10을 다루므로 10월 수치입니다. 발표 전까지 가장 최근 인플레이션 수치는 released_on이 2026-10-14인 9월 수치입니다. 발표 후에는 요청을 바꾸지 않아도 엔드포인트가 새 기간을 반환합니다.
기준 기간을 정확하게 쓰기
| 최신 수치 | period | 표현 방법 |
|---|---|---|
| 인플레이션 3.7퍼센트 | 2026-09 | 물가는 9월까지 1년간 3.7퍼센트 올랐다 |
| 실업률 4.2퍼센트 | 2026-09 | 9월 실업률은 4.2퍼센트였다 |
| GDP 성장률 2.1퍼센트 | 2026-Q3 | 3분기 경제는 전년 동기 대비 2.1퍼센트 성장했다 |
- 월이나 분기는
period에서 가져오고released_on에서는 가져오지 마세요. 인플레이션 수치는 10월에 나왔지만 9월을 설명합니다. - 어떤 비교를 인용하는지 밝혀 주세요.
year_over_year,month_over_month,year_to_date,quarter_over_quarter중 하나이며 필드 이름이 곧 라벨입니다. - 해당 날짜에 발표된 수치라는 식의 문장에는
released_on을 사용하면 독자가 수치가 얼마나 최신인지 알 수 있습니다.
캘린더의 기간이 최신 수치와 다른 이유는 무엇인가요?
캘린더의 period는 해당 발표가 다루게 될 달이고, 최신 수치는 이미 발표된 가장 최근 발표입니다. 브리핑 출력에서 캘린더는 소비자물가를 2026-10으로 나열하지만 인플레이션 엔드포인트는 2026-09를 반환합니다. 어떤 수치가 가장 최신이라고 쓰기 전에 둘 다 확인하세요.
inflation과 cpi 엔드포인트는 어떻게 다른가요?
/inflation은 퍼센트 단위의 변화율을 반환합니다. /cpi는 지수 수준을 value에, 기준을 index_base에 반환합니다. 헤드라인에는 변화율을 인용하고, 지수 수준은 기사가 지수 자체를 다룰 때만 인용하세요.
모든 국가가 같은 종류의 기간으로 실업률을 발표하나요?
아니요. 미국의 실업률은 월 단위인 2026-09로 반환됐지만 독일은 분기 단위인 2026-Q2로 반환됐습니다. 한 문장에서 수치를 비교하기 전에 국가마다 period를 확인하세요.
에 게시되었습니다.