Arlo home

REST Auth API: EventImportRequests

EventImportRequests represent requests to bulk-import Events from an external system. Submitting a request enqueues an async task that creates the events in the background. Up to 500 events may be submitted in a single call.

Preflight validation runs before the task is queued — if any error is detected the entire batch is rejected with a 400 Bad Request response. Per-event creation errors that occur during background processing are reported through the completed async task result.

All imported events are created in Draft status. Use PublicationSettings to control website visibility and listing inclusion.

Common tasks

Import request structure

The request body is application/json containing a top-level Requests array with between 1 and 500 entries. Each entry represents a single event to create. The full structure with all supported fields is shown below.

{
  "Requests": [
    {
      "TemplateCode": "MGMT-101",
      "Name": "Management Essentials - June",
      "LocationName": "Auckland, New Zealand",
      "Sessions": [
        {
          "Name": "Day 1 - Foundations",
          "StartDateTime": "2026-06-25T09:00:00+12:00",
          "EndDateTime": "2026-06-25T17:00:00+12:00",
          "TimeZoneId": 16,
          "PresenterIds": [7],
          "VenueDetails": {
            "VenueId": 14,
            "VenueRoomId": 3
          }
        },
        {
          "Name": "Day 2 - Advanced Topics",
          "StartDateTime": "2026-06-26T09:00:00+12:00",
          "EndDateTime": "2026-06-26T17:00:00+12:00",
          "TimeZoneId": 16,
          "PresenterIds": [7, 11],
          "VenueDetails": {
            "VenueId": 14,
            "VenueRoomId": 3
          }
        }
      ],
      "RegionCodes": ["au", "nz"],
      "Prices": [
        {
          "RegionCode": "au",
          "Price": 450.00,
          "IsTaxInclusive": true,
          "TaxRateId": 1
        },
        {
          "RegionCode": "nz",
          "Price": 490.00,
          "IsTaxInclusive": true,
          "TaxRateId": 2
        }
      ],
      "PrivateEventSettings": {
        "ClientOrganisationId": 5,
        "KeyContactId": 12
      },
      "RegistrationSettings": {
        "RegistrationMethod": "OrderProcess",
        "RegistrationLimit": 20,
        "RegistrationMinimum": 5
      },
      "PublicationSettings": {
        "AllowPublication": true,
        "AllowPublicationInLists": true
      },
      "AccountCode": "ACC-200"
    }
  ]
}

Request fields

Each entry in the Requests array supports the following fields.

Field Required Description
TemplateCode Required The code identifying the EventTemplate the new event will be created under. Must match an existing template's Code property.
Sessions Required Array of one or more Session objects that make up the event. The session type (venue or online) is inferred from whether VenueDetails or OnlineDetails is supplied on each session.
Name Optional Event-specific display name, up to 128 characters. When omitted, the event inherits its name from the template.
LocationName Optional A string describing the location where this event will run, up to 256 characters. When omitted, the location is derived from the venue of the first session. Corresponds to the LocationName property on the Event resource.
RegionCodes Optional Array of Region short names (e.g. "au", "nz") identifying the regions this event is advertised in. Matched case-insensitively against platform region short names. When Prices is also supplied, every RegionCode in Prices must also appear in RegionCodes. When only Prices is supplied, the advertised regions are inferred from the price entries. When both RegionCodes and Prices are omitted, the event inherits its region assignment and pricing from the template. If supplied, must contain at least one entry — an empty array is rejected.
Prices Optional Array of Price objects providing per-region pricing. When omitted, pricing is inherited from the template.
PrivateEventSettings Optional A PrivateEventSettings object. When present, the event is marked as private for the specified client organisation. When omitted, the event is public.
RegistrationSettings Optional A RegistrationSettings object configuring the registration method and attendee limits. Corresponds to the EventRegistrationSettings sub-resource.
PublicationSettings Optional A PublicationSettings object controlling website visibility. Corresponds to the EventPublicationSettings sub-resource. When omitted, defaults to not published.
AccountCode Optional Account code applied to the created event.

Session

Represents a single session within an event. Each event must have at least one session. The session type is determined by the presence of VenueDetails or OnlineDetails. A session with VenueDetails is a venue session; a session with OnlineDetails is an online session. A session must not include both. A session with neither is treated as a venue session with no specific location details.

The Name field corresponds to the Description property on the EventSession resource in the Auth API.

Field Required Description
Name Required Display name of the session, up to 128 characters.
StartDateTime Required Start date and time as an ISO 8601 value with a UTC offset (e.g. 2026-06-25T09:00:00+12:00).
EndDateTime Required End date and time as an ISO 8601 value with a UTC offset. Must be after StartDateTime.
TimeZoneId Optional Integer identifier of the platform time zone to associate with the session (see TimeZones). An invalid value causes the entire batch to be rejected. When omitted, the importer infers a time zone by matching the UTC offset of StartDateTime against the platform's configured time zones, falling back to the platform default.
PresenterIds Optional Array of integer Contact identifiers for presenters assigned to the session. Any invalid ID causes the entire batch to be rejected.
VenueDetails Optional A VenueDetails object specifying the venue and room for a venue-based session. Must not be combined with OnlineDetails on the same session.
OnlineDetails Optional An OnlineDetails object providing web conferencing details for an online session. Must not be combined with VenueDetails on the same session.

VenueDetails

Venue and room details for a session. Corresponds to the EventSessionVenueDetails sub-resource.

Field Required Description
VenueId Required Integer identifier of the Venue. An invalid ID causes the entire batch to be rejected.
VenueRoomId Optional Integer identifier of the VenueRoom within the venue. An invalid ID causes the entire batch to be rejected.

OnlineDetails

Web conferencing details for an online session. Corresponds to the EventSessionOnlineDetails sub-resource. All fields are optional.

Field Description
GuestUrl URL provided to learners to join the session, up to 256 characters.
GuestInstructions Instructions provided to learners for joining the session, as a RichContent object with ContentType and Content fields. Supported content types are text/plain and application/xhtml. When text/plain is specified, the content is HTML-encoded for storage. When application/xhtml is specified, the content is stored as-is.
AdministratorUrl URL provided to presenters and administrators for hosting the session, up to 256 characters.
AdministratorInstructions Instructions provided to presenters and administrators for hosting the session, as a RichContent object with ContentType and Content fields. Supported content types are text/plain and application/xhtml.

RegistrationSettings

Registration method and attendee limits for the event. Corresponds to the EventRegistrationSettings sub-resource.

Field Required Description
RegistrationMethod Required An EventRegistrationMethod value (case-insensitive) specifying how registrations are handled.
RegistrationLimit Optional Integer. Maximum number of registrations to accept before the event is marked as full.
RegistrationMinimum Optional Integer. Minimum number of registrations. Used to trigger the minimum registrant alert if not reached by a specified date.

PublicationSettings

Website visibility settings for the event. Corresponds to the EventPublicationSettings sub-resource. When the PublicationSettings object is omitted from the request, the event defaults to not published.

Field Description
AllowPublication Boolean. When true, the event details are published and accessible to the public. Defaults to false.
AllowPublicationInLists Boolean. When true, the event is included in public lists such as upcoming events and search results. Only applies when AllowPublication is true. Defaults to false.

PrivateEventSettings

When present, marks the event as a private event for a specific client organisation. The presence of this object indicates the event is private; omitting it creates a public event.

Field Required Description
ClientOrganisationId Required Integer identifier of the Organisation this private event is for. An invalid ID causes the entire batch to be rejected.
KeyContactId Optional Integer identifier of the Contact responsible for managing this event within the organisation. An invalid ID causes the entire batch to be rejected.

Prices

Each entry in the Prices array sets the price for the event in a specific region. Prices are matched against the platform's Regions by RegionCode (case-insensitive). When Prices is omitted, pricing is inherited from the template. When Prices is supplied, it must contain at least one entry — an empty array is rejected. To create a free event, supply a price entry with "Price": 0 for each region.

Field Required Description
RegionCode Required Short name of the region (e.g. au, nz, us). Matched case-insensitively against the ShortName property of Region resources.
Price Required Decimal price for the event in this region. A value of 0 marks the event as free in that region.
IsTaxInclusive Optional Whether the Price value includes tax. Defaults to false. When true, a non-null TaxRateId must also be supplied. Must be false or omitted when TaxRateId is null (tax-exempt).
TaxRateId Conditional Integer identifier of the tax rate applied to this price, or null to indicate the price is tax-exempt. Required and must be non-null when IsTaxInclusive is true.

Submitting an import request

Endpoint

POST /api/2012-02-01/auth/resources/events/importrequests/

Submit an HTTP POST with a JSON body conforming to the import request structure described above. The endpoint validates the entire batch synchronously. If validation passes, the batch is enqueued for background processing and the response contains an AsyncTaskID for tracking.

Validation rules

Preflight validation rejects the entire batch if any of the following conditions are detected.

  • The Requests array is missing, empty, or contains more than 500 entries.
  • TemplateCode is missing, or no template with that code exists.
  • Sessions is missing or empty.
  • A session is missing Name, StartDateTime, or EndDateTime.
  • A session's EndDateTime is not after its StartDateTime.
  • A session includes both VenueDetails and OnlineDetails.
  • RegistrationSettings is present but RegistrationMethod is missing or not a recognised value.
  • RegionCodes is present but empty.
  • Prices is present but empty.
  • Prices includes a RegionCode that is not present in RegionCodes (when both are supplied).
  • IsTaxInclusive is true but TaxRateId is missing or null.
  • A supplied ClientOrganisationId, KeyContactId, presenter ID, VenueId, VenueRoomId, or TimeZoneId does not refer to an existing resource.

Response

Status Description
202 Accepted The batch passed validation and has been queued. The response body contains the AsyncTaskID.
400 Bad Request The request failed validation. All errors across the entire batch are reported together. The response body contains a ResultCode identifying the reason for rejection.
404 Not Found The event import API is not enabled on this platform.
409 Conflict Import processing capacity is temporarily unavailable (see throttling). The response body contains a ResultCode indicating the request should be retried later.

Import requests are also subject to capacity throttling. If the platform has too many event import tasks already queued or running, the batch is rejected with a 409 Conflict before it is enqueued, and the response body carries a ResultCode indicating the request should be retried later. This is independent of the standard API rate limiting — retry the whole batch after a short delay rather than immediately.

On success, the response is application/json:

{
  "AsyncTaskID": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}

Processing and results

The import runs asynchronously after submission. The result of the import is not returned immediately and may take several minutes to be available depending on the size of the batch and current system load. You must design your client to be able to handle this asynchronous workflow by separately polling for results after submitting a request.

Use the returned AsyncTaskID to poll the AsyncTasks endpoint for progress. When the task completes, the result contains a list of created events and any per-event errors for requests that failed during background processing.

See EventImportResults for the complete workflow including polling strategy, result interpretation, and error handling.

Examples

Import a venue event

Submit a single venue event with one session, a presenter, and per-region pricing.

POST https://demo.arlo.co/api/2012-02-01/auth/resources/events/importrequests/ HTTP/1.1
Accept: application/json
Accept-Encoding: gzip, deflate
Content-Type: application/json

{
  "Requests": [
    {
      "TemplateCode": "MGMT-101",
      "Sessions": [
        {
          "Name": "Management Essentials - June",
          "StartDateTime": "2026-06-25T09:00:00+12:00",
          "EndDateTime": "2026-06-25T17:00:00+12:00",
          "PresenterIds": [7],
          "VenueDetails": {
            "VenueId": 14,
            "VenueRoomId": 3
          }
        }
      ],
      "Prices": [
        { "RegionCode": "au", "Price": 450.00, "IsTaxInclusive": true, "TaxRateId": 1 },
        { "RegionCode": "nz", "Price": 490.00, "IsTaxInclusive": true, "TaxRateId": 2 },
        { "RegionCode": "us", "Price": 299.00, "TaxRateId": null }
      ],
      "RegistrationSettings": {
        "RegistrationMethod": "OrderProcess",
        "RegistrationLimit": 20
      },
      "PublicationSettings": {
        "AllowPublication": true,
        "AllowPublicationInLists": true
      }
    }
  ]
}
HTTP/1.1 202 Accepted
Content-Type: application/json

{
  "AsyncTaskID": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}

Import an online event

Submit an online event. The presence of OnlineDetails on the session identifies it as an online session.

POST https://demo.arlo.co/api/2012-02-01/auth/resources/events/importrequests/ HTTP/1.1
Accept: application/json
Accept-Encoding: gzip, deflate
Content-Type: application/json

{
  "Requests": [
    {
      "TemplateCode": "WEBINAR-ADV",
      "Sessions": [
        {
          "Name": "Advanced Topics Webinar",
          "StartDateTime": "2026-07-10T13:00:00+10:00",
          "EndDateTime": "2026-07-10T15:00:00+10:00",
          "PresenterIds": [42],
          "OnlineDetails": {
            "GuestUrl": "https://example.com/webinar/join/abc123",
            "GuestInstructions": {
              "ContentType": "text/plain",
              "Content": "Click the link above to join the session."
            },
            "AdministratorUrl": "https://example.com/webinar/host/abc123",
            "AdministratorInstructions": {
              "ContentType": "text/plain",
              "Content": "Log in as host five minutes before the session."
            }
          }
        }
      ],
      "PublicationSettings": {
        "AllowPublication": true,
        "AllowPublicationInLists": true
      }
    }
  ]
}
HTTP/1.1 202 Accepted
Content-Type: application/json

{
  "AsyncTaskID": "b2c3d4e5-f6a7-8901-bcde-f12345678901"
}

Import a private event with all options

Submit a private event with two sessions, registration settings, publication settings, region pricing, and an account code.

POST https://demo.arlo.co/api/2012-02-01/auth/resources/events/importrequests/ HTTP/1.1
Accept: application/json
Accept-Encoding: gzip, deflate
Content-Type: application/json

{
  "Requests": [
    {
      "TemplateCode": "MGMT-101",
      "Name": "Management Essentials - Acme Corp",
      "LocationName": "Auckland, New Zealand",
      "Sessions": [
        {
          "Name": "Day 1 - Foundations",
          "StartDateTime": "2026-08-04T09:00:00+12:00",
          "EndDateTime": "2026-08-04T17:00:00+12:00",
          "TimeZoneId": 16,
          "PresenterIds": [7],
          "VenueDetails": {
            "VenueId": 14,
            "VenueRoomId": 3
          }
        },
        {
          "Name": "Day 2 - Advanced Topics",
          "StartDateTime": "2026-08-05T09:00:00+12:00",
          "EndDateTime": "2026-08-05T17:00:00+12:00",
          "TimeZoneId": 16,
          "PresenterIds": [7, 11],
          "VenueDetails": {
            "VenueId": 14,
            "VenueRoomId": 3
          }
        }
      ],
      "RegionCodes": ["nz"],
      "Prices": [
        { "RegionCode": "nz", "Price": 490.00, "IsTaxInclusive": true, "TaxRateId": 2 }
      ],
      "PrivateEventSettings": {
        "ClientOrganisationId": 5,
        "KeyContactId": 12
      },
      "RegistrationSettings": {
        "RegistrationMethod": "OrderProcess",
        "RegistrationLimit": 20,
        "RegistrationMinimum": 5
      },
      "PublicationSettings": {
        "AllowPublication": false
      },
      "AccountCode": "ACC-200"
    }
  ]
}
HTTP/1.1 202 Accepted
Content-Type: application/json

{
  "AsyncTaskID": "c3d4e5f6-a7b8-9012-cdef-123456789012"
}