Skip to main content

Orders

Overview

Orders represent ticket registrations for organizing events. Use these endpoints to list orders, create orders on behalf of attendees, and approve or reject pending orders. Subscription: Pro plan required. Upgrade at https://app.animo.co/admin/settings/billing.

Order fields vs attached form

orders/create has two layers of attendee data:
LayerFieldsPurpose
Order bodyfirst_name, last_name, email, country, is_business, etc.Core registration and billing — always required
Form payload (form)Answers for fields on the ticket type’s attached formAdditional custom questions only
Do not duplicate first_name, last_name, or email as form fields — those come from the order body. The attached form is for extra questions (job title, dietary requirements, etc.). For paid ticket types, orders/create creates the order but does not charge the attendee. OrderResource does not currently include a payment URL field. Send the attendee to the Mollie checkout page:
https://app.animo.co/{company-slug}/event/{event-slug}/o/{order-id}/checkout
Lifecycle stepAPI signal
Order createdpaid_at is null
Mollie payment succeeds (async webhook)paid_at is set
Requires a connected Mollie account on the company — see Ticket types — Paid tickets and Mollie.

Endpoints

List orders

  • Method: GET
  • Path: /api/v1/{company}/event/{organizingEvent}/orders
  • Scope: orders:read (route group also requires events:read)
  • Subscription: Pro plan (USE_API)

Path parameters

NameTypeDescription
companystringCompany sqid
organizingEventstringOrganizing event slug

Query parameters

NameTypeDescription
include_submissionbooleanEmbeds submission (with answers) and lead
pageintegerPage number

Response 200

{
  "data": [
    {
      "id": "o7Xm3",
      "first_name": "Jordan",
      "last_name": "Lee",
      "email": "[email protected]",
      "unit_amount": 2500,
      "currency": "EUR",
      "vat_percentage": "21",
      "exemption_status": "none",
      "created_at": "2026-04-10T14:30:00.4040+00:00",
      "paid_at": "2026-04-10T14:31:00.011+00:00",
      "authorized_at": null,
      "approved_at": null,
      "rejected_at": null,
      "cancelled_at": null,
      "country": {
        "name": "Netherlands",
        "alpha2Code": "NL",
        "alpha3Code": "NLD"
      }
    }
  ],
  "links": { "...": "..." },
  "meta": { "...": "..." }
}

Response fields

FieldTypeDescription
idstringOrder sqid
first_namestringAttendee first name
last_namestringAttendee last name
emailstringAttendee email
unit_amountintegerTotal amount in minor units (cents)
currencystringCurrency code
vat_percentagestringApplied VAT rate
exemption_statusstringVAT exemption status
created_atstringOrder creation timestamp
paid_atstring|nullPayment timestamp
authorized_atstring|nullAuthorization timestamp
approved_atstring|nullApproval timestamp
rejected_atstring|nullRejection timestamp
cancelled_atstring|nullCancellation timestamp
submissionobjectPresent with include_submission
leadobjectPresent with include_submission
countryobjectBuyer country

Show order

  • Method: GET
  • Path: /api/v1/{company}/event/{organizingEvent}/orders/{order}
  • Scope: orders:read
  • Subscription: Pro plan (USE_API)

Query parameters

NameTypeDescription
include_submissionbooleanEmbeds submission and lead

Response 200

Single OrderResource in data envelope.

Create order

  • Method: POST
  • Path: /api/v1/{company}/event/{organizingEvent}/orders/create/{ticketType}
  • Scope: orders:create
  • Subscription: Pro plan (USE_API)
Registers tickets on behalf of an attendee.

Path parameters

NameTypeDescription
ticketTypestringTicket type slug

Request body

See the request body table below for field requirements.
{
  "first_name": "Jordan",
  "last_name": "Lee",
  "email": "[email protected]",
  "country": "NL",
  "company_name": "Acme BV",
  "vat_number": "NL123456789B01",
  "city": "Amsterdam",
  "address": "Keizersgracht 1",
  "post_code": "1015",
  "is_business": false,
  "quantity": 1
}
FieldRequiredDescription
first_nameYesAttendee first name
last_nameYesAttendee last name
emailYesValid email address
countryYesISO 3166-1 alpha-2 country code
is_businessYesBoolean
quantityYesInteger within ticket type min/max and availability
company_nameNoCompany name for business orders
vat_numberNoVAT number
cityNoCity
addressNoStreet address
post_codeNoPostal code
formNoAdditional form answers — not fully implemented (see below)

Form answers (form field)

Not yet fully implemented. The form array is accepted by validation but order creation does not yet persist form submissions server-side. Shape is expected to be field sqid → value:
{
  "form": {
    "ff1Ab": "Senior Engineer",
    "ff2Cd": "Vegetarian"
  }
}
Keys are form field sqids from the attached ticket type form. Do not include order-level fields (first_name, last_name, email) here.

Response 200

Returns the created OrderResource. For paid tickets, redirect the attendee to the checkout URL. paid_at remains null until payment completes.

Approve order

  • Method: PATCH
  • Path: /api/v1/{company}/event/{organizingEvent}/orders/{order}/approve
  • Scope: orders:curate
  • Subscription: Pro plan (USE_API)
Approves a pending order that requires curator approval.

Response 200

Returns the updated OrderResource with approved_at set.

Reject order

  • Method: PATCH
  • Path: /api/v1/{company}/event/{organizingEvent}/orders/{order}/reject
  • Scope: orders:curate
  • Subscription: Pro plan (USE_API)
Rejects a pending order.

Response 200

Returns the updated OrderResource with rejected_at set.

Not implemented

  • DELETE /api/v1/{company}/event/{organizingEvent}/orders/{order}/cancel — route is commented out