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
- Understand the import request structure
- Submit an import request
- Import a venue event
- Import an online event
- Import a private event with all options
- Processing and results
- Poll for results and handle errors
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
Requestsarray is missing, empty, or contains more than 500 entries. TemplateCodeis missing, or no template with that code exists.Sessionsis missing or empty.- A session is missing
Name,StartDateTime, orEndDateTime. - A session's
EndDateTimeis not after itsStartDateTime. - A session includes both
VenueDetailsandOnlineDetails. RegistrationSettingsis present butRegistrationMethodis missing or not a recognised value.RegionCodesis present but empty.Pricesis present but empty.Pricesincludes aRegionCodethat is not present inRegionCodes(when both are supplied).IsTaxInclusiveistruebutTaxRateIdis missing ornull.- A supplied
ClientOrganisationId,KeyContactId, presenter ID,VenueId,VenueRoomId, orTimeZoneIddoes 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"
}
