Palmoil FFB price API
Get the latest FFB schedule
Endpoint and request
REST endpoint
GET /v1/commodities/oil-palm-ffb-priceContract request
curl --request GET \
--url "https://api.narwhalapi.com/v1/commodities/oil-palm-ffb-price?country=IDN&area=ID-RI&producer_type=smallholder&producer_arrangement=purchase_agreement" \
--header "Authorization: Bearer $NARWHAL_API_KEY"MCP uses commodities_get_oil_palm_ffb_price. REST and MCP share the same schema, account quota, rights check, and problem shape.
Parameters
| Name | Required | Type | Meaning |
|---|---|---|---|
country | Yes | query · ISO 3166-1 alpha-3 | Country that owns the official schedule. The first researched country is IDN. |
area | No | query · ISO 3166-2 or Narwhal area | Area such as ID-RI for Riau. Omit only when one series can be selected honestly. |
producer_type | Yes | query · smallholder | Global producer vocabulary. The first contract accepts smallholder only. |
producer_arrangement | No | query · purchase_agreement or supported_scheme | Producer arrangement when the authority distinguishes it. |
Response
Contract example
{
"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_basis": "official_purchase_schedule",
"currency": "IDR",
"unit": "kilogram",
"effective_from": "2026-08-26",
"effective_to": "2026-09-01",
"released_on": "2026-08-26",
"revision": 1,
"prices": [
{
"tree_age_min_years": 9,
"tree_age_max_years": 9,
"price": "3878.72"
}
]
}| Field | Type | Required | Meaning |
|---|---|---|---|
series_id | string | Yes | Stable physical-series identity. |
commodity / country / area | strings | Yes | OIL-PALM-FFB and its exact geographic scope. |
producer_type / producer_arrangement | strings or null | Yes | The producer scope used by the official schedule. |
price_basis / currency / unit | strings | Yes | Official purchase schedule, IDR, and kilogram in the first researched slice. |
effective_from / effective_to / released_on | dates | Yes | Inclusive schedule dates and official release date. |
revision | integer | Yes | Whole-schedule revision number. |
prices | array | Yes | Complete non-overlapping tree-age bands with decimal-string prices. |
Errors and quota
400 invalid_query— a code, area, date range, limit, or selector is invalid.401 invalid_api_key— the Bearer key is missing or rejected.404 physical_price_not_found— no complete approved data matches the request.409 physical_series_ambiguous— the selector matches more than one series.429 rate_limit_exceededorquota_exhausted— the shared allowance is exhausted.503 physical_price_unavailable— a complete publication cannot safely satisfy the Interface.
Rejected requests and server errors do not consume monthly quota.
Coverage
Riau is the first current Adapter. Other areas keep their own historical or validation status.
Public access is not open yet.