Score multiple activities at one location
One call, N activities, one shared weather fetch. The natural endpoint for booking-platform "what's good at this spot today?" screens.
When to use
When you need to compare scores for 2–10 activities at the SAME location and window (kitesurfing vs windsurfing vs SUP at Tarifa Saturday morning). Avoids N separate /v1/score calls and the engine de-duplicates the weather fetch — much cheaper than the N equivalent single calls.
For one activity across N locations, batch on the client. For one activity across many timesteps, use the time-series endpoint.
Request
{
"activities": [
"kitesurfing",
"windsurfing",
"sup"
],
"location": { "lat": 36.013, "lng": -5.604 },
"window": {
"from": "2026-06-01T09:00:00Z",
"to": "2026-06-01T18:00:00Z"
}
}window is optional — omitting it scores the next 6 hours. ensemble + members work the same way as on the other scoring endpoints (Pro+ only).
Response
{
"results": {
"kitesurfing": { "score": 82, "verdict": "favorable", … },
"windsurfing": { "score": 74, "verdict": "marginal", … },
"sup": { "score": 41, "verdict": "unfavorable", … }
},
"providerChain": ["openmeteo", "stormglass"]
}Each entry in results mirrors the full single-score response (breakdown, eco, confidenceDetail). The weather fetch + provider chain appears once at the top level — same chain applied to all activities.
Plan limits
Maximum activities per call depends on your plan: Free 2 · Starter 5 · Pro/Scale 10. Past it the API returns 422 MAX_ACTIVITIES_EXCEEDED with detail.maxActivities.
Errors
422 MAX_ACTIVITIES_EXCEEDED — too many slugs for your plan. 404 ACTIVITY_NOT_FOUND — one of the slugs isn't in the catalog (the response lists which one). 402 PAYMENT_REQUIRED — ensemble requested on free/starter.