Partner integration · v1.1 · compatible with v1 clients
Use portal data in your own platform
Query public evidence, country analyses and agency updates without re-entering information. Every result keeps its sources, dates and qualifications. Read-only access supports queries and filtering; it cannot change portal records.
Connect in three steps
- Ask the portal administrator for an organization key. No portal admin account is needed for your integration.
- Store the key on your backend and send it in the
Authorization: Bearerheader. Do not put it in browser code, URLs or public repositories. - Choose a collection and filters below. Keep source citations, dates, review labels and qualifications visible when displaying the results.
Default limits are 60 authorized requests per minute and 5,000 per UTC day, configurable by the super admin. Keys expire and can be revoked. The API is designed for server-to-server use; it does not enable cross-origin browser calls. Automated natural-language Ask queries are outside v1.
Expert review and repository scope
Many portal interpretations still require expert review. Approved reviewers can inspect assigned countries and sectors, flag insufficient evidence and propose corrections; administrators control publication. An approved account does not mean every analysis is reviewed. Source grades describe provenance and authority, not a guarantee of correctness. The repository does not independently validate every underlying source dataset, but remains responsible for accurate quotation, clear qualifications and corrections to its own interpretations.
Compatibility across portal releases
A website release number is separate from the API version. Existing /api/v1/ paths, keys, record IDs and fields are preserved; new fields are optional. The release build compares the published contract against the v1.1 baseline, and integration tests validate new responses against the previous schemas and eight-collection sync flow. Any future incompatible contract needs a separate major API version and a documented transition. Clients should ignore unknown optional fields and use revisions and snapshots to detect ordinary content changes.
v151 changes and remaining coverage · Source-passage coverage
Current data without repeated reconfiguration
API v1.1 reads the current public portal dataset and approved public records. The API version describes the interface, not the age of its data. The optional all-collection Python example discovers every collection returned by the bulk export, preserves new optional fields, checks the final manifest, and replaces the local mirror only after a complete consistent transfer. It also removes records absent from the new complete snapshot. Existing eight-collection clients remain supported. A partner must still decide once how new types of information should appear in its own dashboard; data synchronization cannot redesign that dashboard.
Build a query
Choose a dataset and filters. Run the example on your server with your key stored in an environment variable.
curl --fail-with-body \
-H "Authorization: Bearer $ELNINO_API_KEY" \
'https://elnino.drr.sh/api/v1/analyses?country=fiji&limit=100'Available collections
| GET /api/v1/… | Contents |
|---|---|
| countries | Country IDs, ISO codes and profile links. |
| analyses | Country interpretations and recommended actions, with citations and current human-review status. |
| evidence | Published source records and approved contributions, including reliability and analytical confidence. |
| actions | Published agency plans, progress and support needs. |
| institutions | Published coordination/declaration records and privacy-reviewed survey self-reports. |
| resources | Publicly documented funding and technical support mechanisms; not confirmed country allocations. |
| media | Photo and video references, attribution, rights conditions and original source links. No media delivery. |
| changes | Editorial publication history. Use the manifest for a complete synchronization. |
| manifest | Original eight collection inventories, plus a separate optional extensions inventory. |
Filters and response fields
country takes a country ID or ISO3 (for example fiji or FJI), sector a sector ID, organization a case-insensitive name fragment, and q a text fragment. id selects one record. since accepts a date or UTC timestamp and includes that time. human_reviewed=true selects only interpretations with a current published human review.
Results include records, total, next, snapshot and metadata. Use limit (1–200) and follow next for further pages. Each record has a stable ID, content revision, update timestamp, source trust, analytical confidence and review status. Sector matches use contributor selections where available and explicitly labelled portal keyword matching elsewhere. A country filter matches recorded scope; it does not establish local eligibility for a regional resource.
Optional structured data and history
The original eight collections are unchanged. These extensions have separate inventories under manifest.extensions; older sync clients can continue using manifest.collections.
impacts: six initial source-mapped records in Fiji, PNG, Vanuatu and Palau. Reported observations and anticipated pathways are distinguished; missing dates and unverified geographic codes are null or empty, never inferred.declarations: one current PNG National Humanitarian Crisis report is structured from a dated SPREP account of named government remarks. The declaration instrument, exact date, issuing authority, duration and legal powers were not linked, so its legal status is explicitlynot_confirmedat instrument level. Coverage is incomplete; an absent record does not mean no declaration exists. Survey self-reports remain ininstitutions; watches and drought-monitor categories are not emergency declarations.locations: 79 verified admin-1 name-to-COD P-code mappings across Fiji, FSM, Kiribati, Marshall Islands, PNG, Solomon Islands, Tonga and Vanuatu, with a separate source, edition and licence for each country. The other 16 countries remain available at national level; their COD crosswalk has not been verified. Existing map polygons are not relabelled as COD. Village and island impacts have not been extrapolated across divisions.classifications: current portal seasonal rainfall classifications, validity periods and evidence links; these are not observations or disaster-risk ratings.classification-historyandreleases: available archived dataset states. Use?country=FJI&as_of=2026-09-29for classification history, or select a specificreleaseID. The date means the latest available embedded dataset timestamp through the end of that UTC day, not verified website publication time. Ambiguous archive times return 409; an earlier date without an archive returns 404. Browse the public archive index.
Coverage is incomplete. Archives do not constitute a complete daily record or a history of dynamic contributions. From v154, an immutable software release register records the bundled data checksum and changes; administrators also have a separate transactional publication-event log for subsequent contribution, action, analysis and stocktake decisions. Earlier gaps remain explicit. Historical results never mix in today’s agency submissions. Original archived files remain available through their download URLs and checksums. From v151, each prepared bundled dataset is archived automatically before build; changing it without a new data_version fails the build. This records prepared dataset states, not every publication time or dynamic contribution edit.
Software release history · Country-by-country COD coverage and required follow-up
One-request JSON or CSV export
GET /api/v1/bulk?format=json or ?format=csv returns all current core and extension records in one consistent response. Supply the manifest’s snapshot to guard against a concurrent update. JSON includes metadata and a complete record manifest. CSV retains nested data, source links and qualifications as JSON within cells. One response counts as one daily data request; 304 is exempt. Save completed exports if you need an operational history. No historical archive of dynamic records is claimed.
Public tracker JSON, assessments CSV and evidence CSV remain available. They are different projections from the partner bulk export.
Read dates and evidence correctly
assessment_date remains the legacy profile date for compatibility. It is not the last date of every observation or source. Countries now expose its ISO form, explicit date basis and the latest indexed source publication date. Analyses expose source publication dates and a separate forecast_reviewed_at, which is null unless a current human forecast review is published. Do not manufacture a new assessment date from a funding update or a dataset release.
Evidence includes claim_text_type, a controlled verification_code, and supporting_passage. Portal summaries are not quotations. Only explicitly verified source text is supplied as verbatim_quote; other records return a marked region or locator, with missing text left null. Wrong-issue captures are withheld. These anchors do not independently verify the complete claim. Where supplied, alternative_source is separately reviewed supporting material, not recovery of the original cited document. Preserve that distinction.
Current source coverage and original-edition follow-up
Action records additionally expose reported triggers, decision authority, coverage, approval and funding status. Missing approval and funding default to unknown. Publication review does not establish official approval, funding availability or successful implementation.
Controlled labels, without changing legacy fields
Use source_trust_code and review_status_code for machine filtering; the original text fields are retained. The value list and collection-specific OpenAPI schemas enumerate codes and types. Unrecognized legacy text maps to other rather than gaining an invented verification status.
- A: primary official or authoritative technical source; A−: authoritative with a recorded limitation.
- B: established institutional, academic or secondary material. B+ is retained as a legacy grade; its separate numerical meaning was not defined and should not be assumed.
- C: use with caution. D: contribution without a verifiable public original; unrated and not_assessed do not mean verified.
- source_checked means the legacy record describes a source check. It does not verify every downstream claim. Publication approval, a current human analysis review and analytical confidence are separate.
Reuse and attribution
Portal-authored content may be reused free of charge with attribution in reports, analysis and freely accessible dashboards. It must not be sold or placed behind paid access. Read the scope, attribution requirements and limitations. These are portal-specific terms, not CC BY or a blanket licence for the complete feed.
Third-party documents, quotations, data, images and contributed material retain their own rights. Some sources permit reuse under a stated licence; others require permission. An API key does not change those terms. Metadata retains blanket_license: NOASSERTION for the mixed feed and separately describes the permission for portal_authored content. Source errors and portal interpretations are subject to the limitations on the terms page.
Keep updates and withdrawals in sync
- Fetch the unfiltered
/api/v1/manifest. Compare its IDs and revisions with your last successful manifest. - Fetch changed collections or records, using that manifest’s
snapshotvalue on every page. A409means the data changed during the download: restart. - Recheck the manifest before committing. Once the full sync succeeds, remove locally stored IDs missing from the new manifest and replace changed records.
Do not treat a failed request, empty filtered result or incomplete page as a withdrawal. The supplied Python example saves a complete mirror only after a successful sync. The editorial change log and since filter are conveniences, not exhaustive deletion feeds. For bundled records, updated_at is the dataset release timestamp; dynamic records use their recorded publication/review time. Use content revisions to detect all changes.
Preserve meaning and privacy
- Source trust and analytical confidence are separate. A high-trust source does not validate every interpretation.
- Published survey responses and agency submissions remain self-reports. Publication approval does not make them official country positions or independently verified outcomes.
- A human-review label applies to the current analysis and source version only. When either changes, the label no longer applies until a new review is published.
- Pending submissions, contact emails, internal review notes, credentials and restricted files are excluded.
- Media is provided as source references and metadata only. API access does not grant rights to reproduce third-party images or documents.
- Credit the Pacific El Niño Risk and Action Tracker and the original source. Retain dates and limitations. Portal information does not replace national warnings.
Errors and availability
400: invalid query. 401: missing, expired or revoked key. 404: unknown collection. 405: write method rejected. 409: snapshot changed. 429: rate limit; follow Retry-After. 503: source unavailable; keep the last successful copy. No partial manifest is returned. A matching conditional request returns 304 and consumes no daily data allowance, including when that allowance is exhausted. Every authorized attempt still counts towards the per-minute request limit. Other authorized responses consume the daily allowance. Read X-Quota-Charged and the rate-limit headers.
API v1 keeps existing paths, key authentication, IDs and field meanings. v1.1 adds optional fields and opt-in collections. Clients should ignore unknown fields and use record revisions. Breaking changes require a new major API version; portal version numbers do not change the API version. Current dataset: 2026-10-29.2; climate evidence cutoff: 28 October 2026.