UCPA Public API

    Read-only REST + feeds ovenpå UCPA's rejsedatabase. Ingen autentificering. Rate limit 60 req/min/IP. Cache 15 min.

    Endpoints

    GET/api/public/ucpa/health

    Status og source-info.

    GET/api/public/ucpa/destinations

    Alle destinationer med trip-count. Params: activity, season, country, q, limit, offset.

    GET/api/public/ucpa/trips

    Søg rejser. Params: destination, transport, transport_from, activity, season, from_date, to_date, min_price, max_price, min_days, max_days, skidage, age_group, level, q, sort (price_asc|price_desc|date_asc|date_desc|destination_asc), limit (max 250), offset.

    GET/api/public/ucpa/trips/cheapest

    Kortere svar sorteret price_asc. Samme params som /trips.

    GET/api/public/ucpa/trips/{trip_id}

    Én rejse ud fra rejse_id.

    GET/api/public/ucpa/ai/search

    AI-venligt kort format med summary-linje. Max limit 50.

    GET/api/public/feeds/ucpa/trips.json

    Fuldt JSON-feed. Understøtter ETag / If-None-Match.

    GET/api/public/feeds/ucpa/trips.xml

    Fuldt XML-feed. Understøtter ETag / If-None-Match.

    Response-eksempel

    {
      "meta": {
        "count": 1,
        "limit": 50,
        "offset": 0,
        "generated_at": "2026-07-05T10:00:00Z",
        "source": "ucpa_mcp_database"
      },
      "results": [
        {
          "trip_id": "ABC123",
          "destination": "Val Thorens",
          "country": "France",
          "season": "winter",
          "departure_date": "2027-04-03",
          "days": 8,
          "ski_days": 7,
          "transport": "Kør selv",
          "transport_from": null,
          "accommodation": "Résidence 3*",
          "room_type": "4-personers",
          "price": 4899,
          "currency": "DKK",
          "course_name": "Val Thorens — Happy Winter",
          "activity": "Ski",
          "age_group": "18-35",
          "level": null,
          "url": "https://ucpa.dk/kursus/val-thorens-happy-abc123",
          "iresa_id": "ABC123",
          "product_code": "VTH-HW"
        }
      ]
    }

    Error codes

    • INVALID_QUERY — 400. Ugyldig eller ukendt query parameter.
    • NOT_FOUND — 404. Ressource findes ikke.
    • RATE_LIMITED — 429. Retry-After header angiver ventetid.
    • API_DISABLED — 503. Endpoint slået fra af admin.
    • INTERNAL_ERROR — 500. Server-fejl.

    Tilladt brug

    Rejsesøgning, prissammenligning, destination discovery, AI-retrieval. Ingen persondata, ingen bookingdata på kundeniveau.