Skip to main content

Events

Overview

Events represent online or offline gatherings for a company. The API supports listing, creating, updating events, and managing cohosts. Organizing events also expose event page and comms template endpoints. Ticket types and orders are nested under organizing events — see Ticket types and Orders. Subscription: Pro plan required. Upgrade at https://app.animo.co/admin/settings/billing.

Public event URL

https://app.animo.co/{company-slug}/event/{event-slug}
Use slug from companies and id from the event resource. Not returned by the API — see Conventions — Public URLs.

Event ID and slug behavior

On create, the event id is derived from name (e.g. "AI Demo Days · HR Edition"ai-demo-days-hr-edition). A slug sent in the request body is ignored. On update, slug can be set explicitly via PATCH. This differs from ticket types, where the supplied slug is honored on create. See Conventions — Slug behavior.

Endpoints

List events

  • Method: GET
  • Path: /api/v1/{company}/events
  • Scope: events:read
  • Subscription: USE_API

Path parameters

NameTypeDescription
companystringCompany sqid

Query parameters

NameTypeDescription
qstringFilter by event name (substring match)
pageintegerPage number

Response 200

{
  "data": [
    {
      "id": "product-launch-2026",
      "name": "Product Launch 2026",
      "date_start": "2026-04-25T09:00:00.000+00:00",
      "date_end": "2026-04-26T18:00:00.000+00:00",
      "created_at": "2026-03-01T12:00:00.000+00:00",
      "attendance_mode": "offline",
      "company_role": "organizing",
      "timezone": "America/Montevideo",
      "privacy_policy": "https://example.com/privacy",
      "locale": "en",
      "requires_ticket_assignment": false,
      "city": {
        "name": "Montevideo",
        "latitude": -34.9011,
        "longitude": -56.1645,
        "google_place_id": "ChIJ..."
      },
      "country": {
        "name": "Uruguay",
        "alpha2Code": "UY",
        "alpha3Code": "URY"
      },
      "venue": {
        "name": "Convention Center",
        "google_place_id": "ChIJ...",
        "url": "https://example.com",
        "maps_url": "https://maps.google.com/...",
        "address": "Main St 1",
        "latitude": -34.9011,
        "longitude": -56.1645
      },
      "cohosts": []
    }
  ],
  "links": { "...": "..." },
  "meta": { "...": "..." }
}

Response fields

FieldTypeDescription
idstringEvent slug
namestringEvent name
date_startstringStart datetime (ISO 8601)
date_endstringEnd datetime (ISO 8601)
created_atstringCreation timestamp
attendance_modestringonline or offline
company_rolestringorganizing or attending
timezonestringIANA timezone identifier
privacy_policystring|nullPrivacy policy URL
localestringSupported locale code
requires_ticket_assignmentbooleanWhether tickets must be assigned to attendees
cityobject|nullCity details (offline events)
countryobject|nullCountry details
venueobject|nullVenue details
cohostsarrayList of cohost objects
pageobjectEvent page content — present on show and update for organizing events only. See Event pages

Errors

StatusWhen
401Missing or invalid token
403Missing scope, subscription, or company access

Create event

  • Method: POST
  • Path: /api/v1/{company}/events/create
  • Scope: events:create (in addition to events:read on the route group)
  • Subscription: USE_API

Request body

See the request body table below for field requirements.
{
  "date_start": "2026-04-25 09:00",
  "date_end": "2026-04-26 18:00",
  "city": "Montevideo",
  "province": "Montevideo",
  "country": "Uruguay",
  "venue": "Convention Center",
  "venue_address": "Main St 1",
  "name": "Product Launch 2026",
  "slug": "product-launch-2026",
  "attendance_mode": "offline",
  "timezone": "America/Montevideo",
  "locale": "en",
  "company_role": "organizing",
  "privacy_policy": "https://example.com/privacy",
  "tax_country": "UY",
  "requires_ticket_assignment": false
}
FieldRequiredDescription
date_startYesFormat Y-m-d H:i
date_endYesFormat Y-m-d H:i, must be >= date_start
nameYesEvent name (max 255 chars)
attendance_modeYesonline or offline
localeYesSupported locale enum value
company_roleYesorganizing or attending
cityIf offlineCity name
provinceIf offlineProvince/region
countryIf offlineCountry name
venueNoVenue name
venue_addressNoVenue street address
slugNoIgnored on create — event id is auto-derived from name. Use PATCH to set slug after creation.
timezoneIf onlineIANA timezone
privacy_policyNoValid URL
tax_countryNoISO 3166-1 alpha-2 country code
requires_ticket_assignmentIf organizingBoolean

Response 201

Returns a single EventResource in the data envelope.

Errors

StatusWhen
422Validation failure
403Missing events:create scope

Show event

  • Method: GET
  • Path: /api/v1/{company}/events/{event}
  • Scope: events:read
  • Subscription: USE_API

Path parameters

NameTypeDescription
companystringCompany sqid
eventstringEvent slug

Response 200

Same shape as a single item from the list response. Organizing events include a nested page object.

Update event

  • Method: PATCH
  • Path: /api/v1/{company}/events/{event}
  • Scope: events:update
  • Subscription: USE_API

Request body

All fields are optional (partial update). See the request body table below for field requirements.
{
  "name": "Updated Event Name",
  "date_start": "2026-05-01 10:00",
  "date_end": "2026-05-01 18:00",
  "google_place_id": "ChIJ...",
  "venue_google_place_id": "ChIJ...",
  "venue": "New Venue",
  "venueAddress": "New Address",
  "slug": "updated-slug",
  "attendance_mode": "online",
  "timezone": "Europe/Amsterdam",
  "locale": "nl",
  "company_role": "organizing",
  "privacy_policy": "https://example.com/privacy",
  "tax_country": "NL",
  "requires_ticket_assignment": true
}

Response 200

Returns the updated EventResource.

Add cohost

  • Method: POST
  • Path: /api/v1/{company}/events/{event}/cohosts
  • Scope: events:update
  • Subscription: USE_API

Request body

{
  "name": "Partner Org",
  "privacy_policy": "https://partner.example.com/privacy",
  "position": 1
}
FieldRequiredDescription
nameYesCohost display name
privacy_policyNoValid URL (max 512 chars)
positionNoSort position (integer, min 1)

Response 200

Returns the parent event with updated cohosts array.

Update cohost

  • Method: PATCH
  • Path: /api/v1/{company}/events/{event}/cohosts/{cohost}
  • Scope: events:update
  • Subscription: USE_API

Request body

Same fields as add cohost; name is optional on update.

Response 200

Returns the parent event with updated cohosts array.

Delete cohost

  • Method: DELETE
  • Path: /api/v1/{company}/events/{event}/cohosts/{cohost}
  • Scope: events:update
  • Subscription: USE_API

Response 200

Returns the parent event with the cohost removed.

Not implemented

  • DELETE /api/v1/{company}/events/{event} — not exposed