Events

List events of an agenda

Changed on

Returns a cursor-paginated list of events for the given agenda. Pass the after cursor returned in pagination.after to fetch the next page, with the same filters.

Only published events are listed. Unknown or malformed filter values answer 400, with per-field context under error.errors. An unrecognized top-level query parameter is ignored.

get/agendas/{agendaUid}/events

Request

  • Base URL: https://api.openagenda.com/v3
  • URL: https://api.openagenda.com/v3/agendas/{agendaUid}/events
  • Auth: one of:
    • HTTP bearer
    • HTTP bearer
    • OAuth 2 (authorization code, authorization URL https://openagenda.com/api/auth/oauth2/authorize, token URL https://openagenda.com/api/auth/oauth2/token, scopes: events:read)

Path parameters

agendaUidinteger required

Numeric uid of the agenda.

Query parameters

afterstring

Opaque pagination cursor returned in pagination.after of the previous page. Omit it to fetch the first page.

limitinteger

Maximum number of items to return per page. An out-of-range or non-integer value is rejected with 400, never clamped; use the after cursor to page further.

detailedboolean

When true, each item in data is returned in its detailed representation, including the detailed-only fields. When false (the default), items are the lighter summary representation.

fieldsstring[]

Comma-separated list of fields to keep on each data item, to shrink the payload of large pages. When set, it selects the response shape directly over the resource's full field set, so detailed does not apply (it only governs the default shape when fields is omitted) and fields wins if both are given. uid is always returned. Each resource takes the names its own data item declares, and a dotted path descends one segment per level: on an event, location.name or timings.begin. An unknown top-level field is rejected with 400, and so is an unknown sub-field under a closed object (location.zzz); under an open container - an additionalFields custom-field bag, on the resources that carry one, or a localized text map - any sub-key is accepted and yields nothing when absent (additionalFields.myField). Response schemas stay complete, so a generated client still types the omitted fields as present — read them as optional on this path.

[
  "uid",
  "slug"
]
sort'timings.asc' | 'timingsWithFeatured.asc' | 'lastTiming.asc' | 'lastTimingWithFeatured.asc' | 'updatedAt.asc' | 'updatedAt.desc' | 'availabilityUpdatedAt.asc' | 'availabilityUpdatedAt.desc' | 'location.name.asc' | 'location.name.desc' | 'location.city.asc' | 'location.city.desc' | 'score'

Ordering of the results. Defaults to timingsWithFeatured.asc, or to score (relevance) when search is set and no sort is given.

searchstring

Full-text search across title, description, keywords and address. Wrap the value in double quotes for an exact phrase match.

'off' | 'auto'
OR
number

Relevance score floor for search results, used to drop weakly-matching events from the long tail (e.g. a single query term buried in a long description). Ignored when search is not set. off (the default) returns every match. auto derives the floor from the score distribution of the current query: the largest relative drop ("elbow") in the top scores becomes the cutoff, so it adapts to each query. A non-negative number is an absolute minimum score; relevance scores are specific to a query, so a fixed value suits a single tuned query rather than general use - prefer auto. The cutoff applies before counting, so the returned events, their total and the facet counts describe the same trimmed set; pass the same threshold to the facets endpoint to keep its counts aligned with the list.

uidinteger[]

Restrict to these event uids. Repeat the parameter for multiple values.

slugstring[]

Restrict to these event slugs. Repeat the parameter for multiple values.

keystring required
valuestring required

Match an event by an external identifier: extId[key]=<system>&extId[value]=<id>.

keywordstring[]

Restrict to events tagged with these keywords. Repeating the parameter narrows the result set (AND semantics).

languagestring[]

Restrict to events in these languages (ISO 639-1 codes).

accessibilityAccessibilityCode[]

Restrict to events offering these accessibility facilities.

statusEventStatus[]

Restrict to these statuses.

attendanceModeAttendanceMode[]

Restrict to these attendance modes.

featuredboolean

Restrict to featured (true) or non-featured (false) events.

locationUidinteger[]

Restrict to events held at these location uids.

keystring required
valuestring required

Match by a location external identifier: locationExtId[key]=<system>&locationExtId[value]=<id>.

regionstring[]

Restrict to events located in these regions.

departmentstring[]

Restrict to events located in these departments.

citystring[]

Restrict to events located in these cities.

districtstring[]

Restrict to events located in these districts.

adminLevel3string[]

Restrict to events located in these level-3 administrative areas.

adminLevel5string[]

Restrict to events located in these level-5 administrative areas.

countryCodestring[]

Restrict to events located in these countries (ISO 3166-1 alpha-2).

bboxstring

Restrict to events whose location falls within a bounding box, given as west,south,east,north in decimal degrees (WGS84). Example: bbox=2.224,48.815,2.469,48.902.

nearstring

Center of a proximity search, given as latitude,longitude in decimal degrees. Must be combined with radius.

radiusinteger

Proximity radius in metres around near. Requires near to be set.

originAgendaUidinteger[]

Restrict to events originally created in these agendas.

originAgendaOfficialboolean

Restrict to events whose origin agenda is official (true) or not (false).

sourceAgendaUidinteger[]

Restrict to events aggregated from these source agendas.

relativestring[]

Restrict by temporal position relative to now. Combine values (repeat the parameter) to widen the window: passed, upcoming, current.

gtestring date-time
ltestring date-time

Restrict to events having a timing that begins within the range, as RFC 3339 date-times: timings[gte]=…&timings[lte]=…. For now-relative windows, prefer relative. Date-times must carry an explicit offset (e.g. Z); a bare date (YYYY-MM-DD) is read as UTC midnight.

gteinteger
lteinteger

Restrict to events with a timing starting within a daily time window, in minutes from local midnight: localTime[gte]=480 (08:00) and/or localTime[lte]=1200 (20:00).

gtestring date-time
ltestring date-time

Restrict by creation date, as RFC 3339 date-times: createdAt[gte]=…&createdAt[lte]=…. Date-times must carry an explicit offset (e.g. Z); a bare date (YYYY-MM-DD) is read as UTC midnight.

gtestring date-time
ltestring date-time

Restrict by last-update date, as RFC 3339 date-times: updatedAt[gte]=…&updatedAt[lte]=…. Useful for incremental sync. Date-times must carry an explicit offset (e.g. Z); a bare date (YYYY-MM-DD) is read as UTC midnight.

gtestring date-time
ltestring date-time

Restrict by the date OpenAgenda last WROTE inventory on the event — the write clock carried by availabilityUpdatedAt, not the rows' own syncedAt. As RFC 3339 date-times: availabilityUpdatedAt[gte]=…&availabilityUpdatedAt[lte]=…. The inventory counterpart of updatedAt, for a consumer following availability: pair it with sort=availabilityUpdatedAt.asc and a watermark. Events that never received availability carry no stamp and never match — following inventory does not mean paging through the whole corpus. Same date-time rules as updatedAt.

gteinteger
lteinteger

Restrict to events whose intended audience age range overlaps the given bounds, in years: age[gte]=7&age[lte]=12.

additionalFieldsobject

Filter on agenda-specific additional fields, addressed by field name: additionalFields[<fieldName>]=<value>. Available fields and their value types come from the agenda's event form schema (GET /agendas/{agendaUid}/events/schema). For numeric fields, use a range object: additionalFields[<fieldName>][gte]=…&additionalFields[<fieldName>][lte]=….

Response

A page of events.

Example response

{
  "data": [
    {
      "uid": 9876543,
      "slug": "concert-de-jazz-au-parc",
      "title": {
        "fr": "Concert de jazz au parc",
        "en": "Jazz concert in the park"
      },
      "description": {
        "fr": "Une soirée jazz en plein air.",
        "en": "An open-air jazz evening."
      },
      "status": 1,
      "dateRange": {
        "fr": "Le 20 juin 2025 de 18h00 à 22h00",
        "en": "June 20, 2025, 6:00 PM – 10:00 PM"
      },
      "featured": false,
      "image": {
        "width": 1200,
        "height": 800,
        "src": "https://img.openagenda.com/u/1080x0/main/9876543.full.image.jpg",
        "srcTemplate": "https://img.openagenda.com/u/{geo}/main/9876543.full.image.jpg",
        "srcset": [
          {
            "width": 640,
            "url": "https://img.openagenda.com/u/640x0/main/9876543.full.image.jpg"
          },
          {
            "width": 1080,
            "url": "https://img.openagenda.com/u/1080x0/main/9876543.full.image.jpg"
          }
        ]
      },
      "imageCredits": "Ville de Lyon",
      "keywords": {
        "fr": [
          "jazz",
          "concert",
          "plein air"
        ],
        "en": [
          "jazz",
          "concert",
          "open air"
        ]
      },
      "originAgenda": {
        "uid": 12345,
        "title": "Festival des Lumières",
        "slug": "festival-des-lumieres",
        "image": {
          "src": "https://img.openagenda.com/u/400x0/main/a1b2c3d4e5f60718293a4b5c6d7e8f90.full.image.jpg",
          "srcTemplate": "https://img.openagenda.com/u/{geo}/main/a1b2c3d4e5f60718293a4b5c6d7e8f90.full.image.jpg"
        },
        "url": "https://openagenda.com/festival-des-lumieres",
        "official": true
      },
      "rights": {
        "license": {
          "id": "etalab-2.0",
          "name": "Licence Ouverte 2.0",
          "url": "https://www.data.gouv.fr/pages/legal/licences/etalab-2.0/"
        },
        "licensor": {
          "name": "Ville de Lyon",
          "url": "https://www.lyon.fr",
          "agendaUid": 12345
        },
        "publisher": {
          "name": "Ville de Lyon",
          "url": "https://www.lyon.fr",
          "agendaUid": 12345
        }
      },
      "canonicalUrl": "https://www.lyon.fr/evenement/concert-de-jazz-au-parc",
      "timings": [
        {
          "begin": "2025-06-20T18:00:00+02:00",
          "end": "2025-06-20T22:00:00+02:00"
        }
      ],
      "location": {
        "uid": 55512,
        "name": "Parc de la Tête d'Or",
        "address": "Place Général Leclerc",
        "city": "Lyon",
        "region": "Auvergne-Rhône-Alpes",
        "postalCode": "69006",
        "countryCode": "FR",
        "latitude": 45.7772,
        "longitude": 4.8558,
        "district": null,
        "department": "Rhône",
        "adminLevel3": null,
        "adminLevel5": null,
        "country": {
          "fr": "France",
          "en": "France"
        },
        "timezone": "Europe/Paris"
      },
      "timezone": "Europe/Paris",
      "attendanceMode": 1,
      "onlineAccessLink": null,
      "firstTiming": {
        "begin": "2025-06-20T18:00:00+02:00",
        "end": "2025-06-20T22:00:00+02:00"
      },
      "lastTiming": {
        "begin": "2025-06-20T18:00:00+02:00",
        "end": "2025-06-20T22:00:00+02:00"
      },
      "nextTiming": {
        "begin": "2025-06-20T18:00:00+02:00",
        "end": "2025-06-20T22:00:00+02:00"
      },
      "additionalFields": {},
      "longDescription": {
        "fr": "Un concert en plein air avec plusieurs formations de jazz…",
        "en": "An open-air concert featuring several jazz ensembles…"
      },
      "conditions": {
        "fr": "Entrée libre",
        "en": "Free entry"
      },
      "country": {
        "fr": "France",
        "en": "France"
      },
      "registration": [
        {
          "type": "link",
          "value": "https://openagenda.com/festival-des-lumieres/events/concert-de-jazz-au-parc"
        }
      ],
      "createdAt": "2025-03-12T11:30:00+01:00",
      "updatedAt": "2025-05-28T16:45:00+02:00",
      "accessibility": {
        "hi": false,
        "ii": false,
        "vi": true,
        "pi": false,
        "mi": true
      },
      "age": {
        "min": 0,
        "max": null
      },
      "state": 2,
      "links": [
        {
          "link": "https://example.org/jazz-au-parc",
          "data": {}
        }
      ],
      "extIds": [
        {
          "key": "legacy",
          "value": "4421007"
        }
      ],
      "sourceAgendas": []
    }
  ],
  "pagination": {
    "after": "eyJ1aWQiOjIzNDU2fQ",
    "limit": 20,
    "total": 342,
    "totalRelation": "exact"
  }
}

Changes

    • info

      added the optional property /////// to the response with the status

    • info

      added the new optional query request parameter availabilityUpdatedAt

    • info

      added the new enum value availabilityUpdatedAt.asc to the query request parameter sort

    • info

      added the new enum value availabilityUpdatedAt.desc to the query request parameter sort

    • info

      added the optional property ////// to the response with the status