ALL SYSTEMS · NOMINAL
UTC --:--:--
Docs·API reference·POST /v1/score/multi

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.

POSThttps://api.goable.io/v1/score/multi

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.