Historical Palmoil physical API
Get oldest-first Palmoil observations
端点與請求
REST 端點
GET /v1/commodities/palmoil/physical/{series_id}/observations契約 請求
curl --request GET \
--url "https://api.narwhalapi.com/v1/commodities/palmoil/physical/id-ri-oil-palm-ffb-smallholder-purchase-agreement/observations?start=2026-08-01&end=2026-09-02&limit=100" \
--header "Authorization: Bearer $NARWHAL_API_KEY"MCP 使用 commodities_get_palmoil_physical_observations。REST 和 MCP 使用相同的結構、帳戶額度、權限檢查和問題格式。
參數
| 名稱 | 必填 | 類型 | 含義 |
|---|---|---|---|
series_id | 是 | path · stable Narwhal ID | Series returned by discovery. |
start | 否 | 查詢·YYYY-MM-DD | 包含下限。必須與 end 一起提供。 |
end | 否 | 查詢·YYYY-MM-DD | 不包含的上限,必須晚於 start。 |
limit | 否 | 查詢·整數,1–500 | 最多返回的完整日程數量。預設為 100。 |
cursor | 否 | 查詢·不透明字串 | 綁定到相同序列和日期範圍的續接令牌。 |
回應
契約 示例
{
"series_id": "id-ri-oil-palm-ffb-smallholder-purchase-agreement",
"commodity": "OIL-PALM-FFB",
"country": "IDN",
"area": "ID-RI",
"producer_type": "smallholder",
"producer_arrangement": "purchase_agreement",
"price_type": "official_purchase_schedule",
"observation_type": "age_schedule",
"period_type": "effective",
"currency": "IDR",
"unit": "kilogram",
"observations": [
{
"period_start": "2026-08-26",
"period_end": "2026-09-01",
"published_on": "2026-08-26",
"revision": 1,
"prices": [
{
"tree_age_min_years": 3,
"tree_age_max_years": 3,
"price": "2998.31"
},
{
"tree_age_min_years": 4,
"tree_age_max_years": 4,
"price": "3347.20"
},
{
"tree_age_min_years": 5,
"tree_age_max_years": 5,
"price": "3595.38"
},
{
"tree_age_min_years": 6,
"tree_age_max_years": 6,
"price": "3734.94"
},
{
"tree_age_min_years": 7,
"tree_age_max_years": 7,
"price": "3818.86"
},
{
"tree_age_min_years": 8,
"tree_age_max_years": 8,
"price": "3865.46"
},
{
"tree_age_min_years": 9,
"tree_age_max_years": 9,
"price": "3878.72"
},
{
"tree_age_min_years": 10,
"tree_age_max_years": 20,
"price": "3836.93"
},
{
"tree_age_min_years": 21,
"tree_age_max_years": 21,
"price": "3770.94"
},
{
"tree_age_min_years": 22,
"tree_age_max_years": 22,
"price": "3695.31"
},
{
"tree_age_min_years": 23,
"tree_age_max_years": 23,
"price": "3609.33"
},
{
"tree_age_min_years": 24,
"tree_age_max_years": 24,
"price": "3544.29"
},
{
"tree_age_min_years": 25,
"tree_age_max_years": 25,
"price": "3490.84"
},
{
"tree_age_min_years": 26,
"tree_age_max_years": 26,
"price": "3471.62"
},
{
"tree_age_min_years": 27,
"tree_age_max_years": 27,
"price": "3441.82"
},
{
"tree_age_min_years": 28,
"tree_age_max_years": 28,
"price": "3385.41"
},
{
"tree_age_min_years": 29,
"tree_age_max_years": 29,
"price": "3344.02"
},
{
"tree_age_min_years": 30,
"tree_age_max_years": 30,
"price": "3249.41"
}
]
}
],
"next_cursor": null
}| 欄位 | 類型 | 必填 | 含義 |
|---|---|---|---|
series_id / commodity / country / area | 字串 | 是 | 穩定的身份和實物市場範圍。 |
producer_type / producer_arrangement | 字串或 null | 是 | 生產者範圍 由每個返回的時間表共享. |
price_type / observation_type / period_type | 字串 | 是 | Shared typed value meaning and period convention. |
observations | 陣列 | 是 | Scalar or complete schedules ordered oldest first. |
next_cursor | 字串或 null | 是 | 不透明的延續令牌,結束時為 null。 |
錯誤與配額
400 invalid_query— 代碼、區域、日期範圍、限制或選擇器無效。400 invalid_cursor— 游標無效,或與序列及範圍不匹配。401 invalid_api_key— Bearer 密鑰缺失或被拒絕。404 palmoil_series_not_found— 沒有完整的已批准數據符合請求。429 rate_limit_exceeded或quota_exhausted— 共享額度已耗盡。503 physical_price_unavailable— 完整發布版本無法安全滿足該介面。
被拒絕的請求和服務器錯誤不會消耗月度配額。
覆蓋範圍
History includes accepted revisions only and makes no promise for Malaysia or every Indonesian area.
使用 Narwhal API 密鑰即可獲得。