Public Safety API

Because dogs’ lives and health matter.

Hazards do not stop at app boundaries. Ruffolio therefore makes active Community danger reports, curated water warnings, and source-evidenced planned fireworks available as public JSON. Other apps, maps, and services can retrieve them without signing in and help people protect their dogs in time. Public access is read-only; new reports still go through Ruffolio’s protected workflows.

GET · JSON · no sign-in

Community danger reports

Short-lived, independently unverified notices about wildlife, dead animals, possible bait or poison, broken glass, suspected blue-green algae, other dangers, and clearly labelled tests. The reporting person is never returned.

GET https://ruffolio.com/api/v1/danger-reports?latitude=52.52&longitude=13.405&radius_m=1500&schema_version=2
latitude / longitude
Centre of the nearby search.
radius_m
An integer from 1 to 10,000 metres.
schema_version=2
Returns every current category, including blue_green_algae, and the optional water-body name. Version 1 remains the default for compatibility when the parameter is omitted.

The response contains schema_version and up to 250 active items with an ID, category, optional note and water-body name, exact marked location, and creation and expiry times — without account, profile, or nickname data.

GET · JSON · no sign-in

Curated water warnings

Current and historical blue-green algae notices, plus current source-evidenced green or filamentous algae reports for BfG-verified rivers and lakes. BfG verifies the water-body identity, not the warning claim; “curated” does not mean “official”.

GET https://ruffolio.com/api/v1/water-warnings?latitude=52.52&longitude=13.405&radius_m=10000&schema_version=2
latitude / longitude
Centre of the nearby search.
radius_m
An integer from 1 to 25,000 metres.
schema_version=2
Adds reported_green_algae for reported green or filamentous algae. It does not assert cyanobacteria, toxicity, or a bathing ban. Version 1 remains the default for compatibility when the parameter is omitted.

Up to 250 results include the warning kind, water-body name and stable source_id, attribution, warning point and radius_m, optional note and evidence source, plus start, creation, and expiry times. There is no pagination; choose a smaller radius when needed. The warning circle applies, not automatically the entire named water body.

GET · JSON · no sign-in

Planned fireworks

Curated, time-limited events backed by a public HTTPS source. The field named estimated_audibility_radius_m for compatibility is an editorial selection radius for notices, not an acoustic forecast or a guarantee that fireworks will take place or be audible.

GET https://ruffolio.com/api/v1/fireworks
No location parameters
Every device downloads the same Germany-wide package covering no more than 48 hours. Matching against the current location can happen entirely on the device; the endpoint accepts no query parameters.
Response envelope
schema_version: 1, generated_at, stale_after, and horizon_ends_at describe the version, generation, recommended next refresh, and end of the package horizon.

Each item contains a stable external_id and server-assigned revision, country_code: "DE", title, venue and locality, point, estimated_audibility_radius_m with radius_basis, notification, start and end times, an optional note, and the required evidence source. Remove an item at ends_at. Replace an older revision of the same external_id with the current one, and always describe audibility as a possibility.

Minimise location data

Request only the area your feature actually needs. Do not send a route, account ID, or dog ID. Location lookups reach Ruffolio/Vercel. Community responses contain the exact marked hazard location, but no information about the reporting person.

Keep sources visible

For water warnings, display water_body.source_attribution unchanged. For fireworks, always show source.label and link source.url; for other notices, do this whenever an evidence source is present. Label Community reports as unverified notices from the Ruffolio Community.

Integrate safely

For nearby-area requests, explicitly request version 2, verify the returned version, and refresh an area no more than once every 30 seconds. Replace a stored area snapshot only after HTTP 200 and remove its entries at expires_at. For the fireworks endpoint, likewise replace the stored snapshot only after HTTP 200, refresh it by stale_after, and remove entries at ends_at. The APIs are not permanent archives. Correct HTTP 400; retry HTTP 429 or 503 with increasing backoff. Errors use error.code and error.message, and x-request-id helps with support.

An empty response is not an all-clear. Ruffolio does not independently verify Community reports. Fireworks schedules can change or be cancelled at short notice; neither audibility nor notification delivery is guaranteed. Follow posted signs, bathing bans, and notices from responsible authorities; the API is no substitute for police, fire, ambulance, veterinary-control, or veterinary advice.