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.
Fields that are not supplied are inherited from the EventTemplate identified by TemplateCode wherever the template defines a default.
Omitting a field and passing null are equivalent. Passing an empty value — an empty string, an empty array, or an object with no populated fields — is rejected; see Empty values.
Some fields depend on optional platform features — see Platform feature requirements.
Common tasks
- Understand the import request structure
- Understand how empty values are treated
- Check platform feature requirements
- Submit an import request
- Interpret a rejected batch
- Import a venue event
- Import an online event
- Import a multi-session event with session choice
- Import an event with registration alerts
- 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",
"SessionChoiceEnabled": true,
"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],
"Description": "Core management principles and team communication.",
"Tags": ["foundations"],
"Prices": [
{
"RegionCode": "au",
"Price": 230.00,
"IsTaxInclusive": true,
"TaxRateId": 1
},
{
"RegionCode": "nz",
"Price": 250.00,
"IsTaxInclusive": true,
"TaxRateId": 2
}
],
"RegistrationSettings": {
"WebsiteRegistrationEnabled": true,
"IsOptional": true
},
"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],
"Description": "Delegation, performance conversations and coaching.",
"Tags": ["advanced"],
"Prices": [
{
"RegionCode": "au",
"Price": 270.00,
"IsTaxInclusive": true,
"TaxRateId": 1
},
{
"RegionCode": "nz",
"Price": 290.00,
"IsTaxInclusive": true,
"TaxRateId": 2
}
],
"RegistrationSettings": {
"WebsiteRegistrationEnabled": true,
"IsOptional": true
},
"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,
"WebsiteRegistrationEnabled": true,
"MinimumRegistrationAlert": {
"DaysBefore": 7,
"RecipientIds": [3]
},
"MaximumRegistrationAlert": {
"RecipientIds": [3]
}
},
"PublicationSettings": {
"AllowPublication": true,
"AllowPublicationInLists": true
},
"CommunicationSettings": {
"NotificationsEnabled": true
},
"AccountCode": "ACC-200",
"SpecialNote": "Please bring a laptop to both days.",
"Tags": ["management", "leadership"]
}
]
}
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, and that template must not be archived. |
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. |
SessionChoiceEnabled |
Optional |
Boolean. When true, registrants choose which sessions they attend; when false, they register once for the whole event.
Applies to multi-session events only. When omitted, the event inherits the default registration scope of the template.
Must be explicitly true for a session to set IsOptional to true.
|
Name |
Optional |
Event-specific display name, up to 128 characters. When omitted, the event inherits its name from the template.
May use [TemplateName], which resolves to the template's name; no other placeholder is supported and any other [token] causes the entire batch to be rejected.
|
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 omitted, the advertised regions are inferred from the regions named in Prices; if Prices is also omitted, the region assignment is inherited from the template.
Every code supplied here and in Prices must match an existing region, otherwise the entire batch is rejected.
When this is supplied, every RegionCode used in Prices must also appear here, and every region listed here must be priced — by Prices where supplied, otherwise by the template.
|
Prices |
Optional | Array of Price objects providing per-region pricing for the event. When omitted, pricing is inherited from the template. When supplied, it replaces template pricing rather than overriding it region by region — see Prices. Prices may also be set per session. |
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. |
CommunicationSettings |
Optional | A CommunicationSettings object controlling whether event communications are sent. When omitted, communications are enabled. |
AccountCode |
Optional | Account code applied to the created event. |
SpecialNote |
Optional | Plain-text note shown with the course on the website. HTML markup is not permitted. Requires the special note field to be enabled on the platform — see Platform feature requirements. |
Tags |
Optional | Array of Tag values applied to the event. A maximum of 64 tags may be supplied and no entry may be empty. Tags that do not already exist on the platform are created. Sessions may carry their own Tags. |
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.
Every session of a multi-session event must supply VenueDetails; only a single-session event may omit both, in which case it is treated as a venue session with no specific location details.
Online sessions are only supported for single-session events — if an event supplies more than one session, none of them may include OnlineDetails.
The Name field corresponds to the Description property on the EventSession resource in the Auth API.
The Description field holds the longer advertised description shown for the session on the website.
| 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). Restated in the session's resolved TimeZoneId on import. |
EndDateTime |
Required | End date and time as an ISO 8601 value with a UTC offset. Must be after StartDateTime. Restated in the session's resolved TimeZoneId on import. |
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. An empty array is accepted and assigns no presenters. Any invalid ID, or the same ID more than once, causes the entire batch to be rejected. |
Description |
Optional | Plain-text description shown for the session on the website. HTML markup is not permitted. |
Prices |
Optional |
Array of Price objects providing per-region pricing for this session.
In a multi-session event this may only be supplied for an optional session — the event's SessionChoiceEnabled must be explicitly true and the session's IsOptional must not be false.
Requires per-session pricing to be enabled on the platform — see Platform feature requirements.
|
RegistrationSettings |
Optional | A SessionRegistrationSettings object overriding registration behaviour for this session. |
Tags |
Optional | Array of Tag values applied to this session. A maximum of 64 tags may be supplied and no entry may be empty. |
VenueDetails |
Conditional | A VenueDetails object specifying the venue and room for a venue-based session. Must not be combined with OnlineDetails on the same session. Required on every session of a multi-session event. |
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. The room must belong to the venue identified by VenueId. An invalid ID, or a room from a different venue, 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.
|
SessionRegistrationSettings
Per-session overrides of the event's registration behaviour. Both fields are optional; each falls back to the event-level value when omitted.
| Field | Description |
|---|---|
WebsiteRegistrationEnabled |
Boolean. Whether registrations for this session can be accepted on the website. When omitted, the session uses the event-level WebsiteRegistrationEnabled value. |
IsOptional |
Boolean. Whether registrants can choose whether to attend this session.
Setting this to true requires the event's SessionChoiceEnabled to be explicitly true, otherwise the entire batch is rejected.
When omitted, the session follows the event's SessionChoiceEnabled setting — optional when session choice is enabled, otherwise required.
|
RegistrationSettings
Registration method, attendee limits and registration alerts for the event. Corresponds to the EventRegistrationSettings sub-resource.
| Field | Required | Description |
|---|---|---|
RegistrationMethod |
Optional |
An EventRegistrationMethod value (case-insensitive) specifying how registrations are handled.
When omitted, the event inherits the registration method from the template, except for private events (see PrivateEventSettings) which default to QuickRegistrationProcess.
This lets the other fields here be overridden on their own. An unrecognised or empty value causes the entire batch to be rejected.
|
RegistrationLimit |
Optional | Integer. Maximum number of registrations to accept before the event is marked as full. Must be at least 1 and not less than RegistrationMinimum. |
RegistrationMinimum |
Optional | Integer. Minimum number of registrations. Must not be negative. Used to trigger the minimum registration alert if not reached by a specified date. |
WebsiteRegistrationEnabled |
Optional | Boolean. Whether public website visitors are allowed to register for the event. When omitted, the event inherits the template default. The value applies to the event and all of its sessions; an individual session may override it through SessionRegistrationSettings. |
MinimumRegistrationAlert |
Optional | A MinimumRegistrationAlert object scheduling an alert when the event has not reached RegistrationMinimum. |
MaximumRegistrationAlert |
Optional | A MaximumRegistrationAlert object configuring an alert raised when the event reaches RegistrationLimit. |
MinimumRegistrationAlert
Schedules an alert that is sent a fixed number of days before the event starts if the event has not reached its minimum registration count.
Supplying this object requires RegistrationMinimum to be greater than zero, and requires registration count alerts to be enabled on the platform — see Platform feature requirements.
An object with neither field populated is rejected — omit the object, or pass null, to configure no alert.
| Field | Required | Description |
|---|---|---|
DaysBefore |
Required | Integer between 1 and 999. Number of days before the event start date that the alert is sent. |
RecipientIds |
Required | Array of integer Contact identifiers to receive the alert. At least one must be supplied. Each contact must exist and must hold the administrator role, otherwise the entire batch is rejected. |
MaximumRegistrationAlert
Configures an alert raised when the event reaches its registration limit.
Supplying this object requires RegistrationLimit to be supplied, and requires registration count alerts to be enabled on the platform — see Platform feature requirements.
An object with no RecipientIds is rejected — omit the object, or pass null, to configure no alert.
| Field | Required | Description |
|---|---|---|
RecipientIds |
Required | Array of integer Contact identifiers to receive the alert. At least one must be supplied. Each contact must exist and must hold the administrator role, otherwise the entire batch is rejected. |
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. |
CommunicationSettings
Controls whether the event sends communications such as registration confirmations and reminders.
| Field | Description |
|---|---|
NotificationsEnabled |
Boolean. Whether event communications are sent. Defaults to true. This field has no template default, so it is never inherited. |
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 a Prices array sets the price in a specific region, either for the whole event (top-level Prices) or for an individual session (Session Prices).
Prices are matched against the platform's Regions by RegionCode (case-insensitive).
When no Prices array is supplied, pricing is inherited from the template. Every region listed in RegionCodes must then be priced by the template.
Supplying one replaces that inheritance outright, so it must contain an entry for every region the event is advertised in. An event advertised in a region it has no price for is rejected either way.
To create a free event, supply a price entry with "Price": 0 for each region.
Session-level prices require per-session pricing to be enabled on the platform — see Platform feature requirements.
For an event with a single session the event and the session share the same price entries, so supplying both top-level Prices and session Prices causes the entire batch to be rejected.
For a multi-session event the two are independent: top-level Prices apply to the event and each session's Prices apply to that session.
A session of a multi-session event may only be priced separately if a registrant can decline it, since a required session is never charged apart from the event's own price.
Supplying session Prices therefore requires the event's SessionChoiceEnabled to be explicitly true and that session's IsOptional not to be false; otherwise the entire batch is rejected.
Within a single Prices array each region may appear only once, and the array must name exactly the regions the event is advertised in — every priced region must be advertised, and every advertised region must be priced. This applies to each session's Prices as well as the event's. Any mismatch causes the entire batch to be rejected.
The advertised regions are those listed in RegionCodes, or, when that is omitted, the regions named by the event's own Prices. A session's prices are matched against the same set either way, so a session cannot price a region the event does not sell in, nor leave one of them unpriced.
In a multi-session event, a session that supplies no Prices takes its pricing from the template. The template must then price every advertised region, however that set was arrived at — otherwise that session would be created with no price for a region the event sells in. A single-session event is unaffected, since it carries its own prices and has no separate session records.
| 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. The tax rate must be associated with the region identified by RegionCode. |
Empty values
Omitting an optional field and passing null are equivalent: both inherit the template value, or leave the field unset where no template default exists.
Supplying the field with an empty value instead states nothing, so the entire batch is rejected with a 400 Bad Request response rather than the value being silently ignored.
| Value | Result |
|---|---|
Field omitted, or null |
Accepted — inherited or left unset. |
Empty or whitespace-only string, e.g. "" |
Rejected. Applies to Name, LocationName, AccountCode, SpecialNote, RegistrationMethod and a session's Description. |
Empty array, e.g. [] |
Rejected. Applies to RegionCodes, Prices, Tags and a session's Prices and Tags. |
Empty PresenterIds array |
Accepted — states that the session has no presenters. |
| Empty entry within an array | Rejected. Applies to RegionCodes and Tags entries. |
Object with no populated fields, e.g. {} |
Rejected for MinimumRegistrationAlert and MaximumRegistrationAlert. |
Platform feature requirements
Some request fields depend on optional platform features. If a field is supplied while the corresponding feature is disabled, the entire batch is rejected with a 400 Bad Request response.
Omit these fields, or pass null, on platforms where the feature is not in use.
| Field | Required platform feature |
|---|---|
SpecialNote |
The special note field must be enabled for the platform. |
Session Prices |
Per-session pricing must be enabled for the platform. |
MinimumRegistrationAlert, MaximumRegistrationAlert |
Registration count alerts must be enabled for the platform. |
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. - An entry in
Requests,Sessionsor aPricesarray isnull. TemplateCodeis missing, no template with that code exists, more than one template shares that code, or the matching template is archived.Sessionsis missing or empty.- A session is missing
Name,StartDateTime, orEndDateTime. - A session's
EndDateTimeis not after itsStartDateTime. - A session includes both
VenueDetailsandOnlineDetails. - An event supplies more than one session and any of them omits
VenueDetails. - An event supplies more than one session and any of them includes
OnlineDetails. - A session sets
IsOptionaltotruewithout the event settingSessionChoiceEnabledtotrue. - A session of a multi-session event supplies
Priceswithout the event settingSessionChoiceEnabledtotrue, or with that session'sIsOptionalset tofalse. - Both top-level
Pricesand sessionPricesare supplied for an event with a single session. Nameuses a placeholder other than[TemplateName].RegistrationMethodis supplied with a value that is not recognised.- The registration count range is invalid:
RegistrationLimitis less than1,RegistrationMinimumis negative, orRegistrationLimitis less thanRegistrationMinimum. MinimumRegistrationAlertis supplied withDaysBeforeorRecipientIdspopulated, but is missingRecipientIds, has noRegistrationMinimumgreater than zero, or has aDaysBeforeoutside the range1–999.MinimumRegistrationAlert.RecipientIdsis supplied withoutMinimumRegistrationAlert.DaysBefore.MaximumRegistrationAlertis supplied withRecipientIdspopulated but withoutRegistrationLimit.- A registration alert recipient does not exist or is not an administrator.
- A session's
PresenterIdscontains the same identifier more than once. - A session's
GuestUrlorAdministratorUrlexceeds 256 characters. - A session's
GuestInstructionsorAdministratorInstructionssuppliesContentwithout aContentType, or names aContentTypeother thantext/plainorapplication/xhtml. - A price entry is missing
RegionCodeorPrice, or itsPriceis negative. - A
Pricesarray names the sameRegionCodemore than once. - A price entry's
RegionCodeis not one of the regions the event is advertised in. - A supplied
Pricesarray — on the event or on a session — does not contain an entry for every region the event is advertised in. RegionCodeslists a region that the template does not price, where noPricesentry supplies one. This also applies to a multi-session event whose advertised regions are inferred from its course prices, when a session supplies no prices of its own and so falls back to the template.IsTaxInclusiveistruebutTaxRateIdis missing ornull.- A
Tagsarray contains an empty entry or more than 64 entries. - A text field such as
Name,LocationName,SpecialNote, a sessionDescriptionor a tag contains markup that is not permitted for that field. - An optional field is supplied with an empty value — an empty or whitespace-only string, an empty array, an empty array entry, or a registration alert object with no populated fields. See Empty values.
- A field is supplied whose platform feature is not enabled.
- A supplied
ClientOrganisationId,KeyContactId, presenter ID,VenueId,VenueRoomId,TimeZoneId,TaxRateId, orRegionCodedoes not refer to an existing resource. - A supplied
VenueRoomIdrefers to a room that does not belong to the session'sVenueId. - A price entry's
TaxRateIdis not associated with the region identified by itsRegionCode.
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 — see Rejection response. |
| 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"
}
Rejection response
A 400 Bad Request reports every problem found across the whole batch in one response, so a client can correct the entire payload in a single pass rather than resubmitting repeatedly.
The top-level ResultCode names the validation stage that failed — StructureValidationFailed, ReferenceValidationFailed, or AssociationValidationFailed.
Result carries a per-request breakdown using the same shape as the completed async task result: Results[i] corresponds to Requests[i].
Requests that were themselves valid still appear, carrying a single NotProcessed error, because nothing in the batch is created once any request fails.
HTTP/1.1 400 Bad Request
Content-Type: application/json
{
"ResultCode": "StructureValidationFailed",
"Result": {
"SuccessCount": 0,
"ErrorCount": 2,
"Results": [
{
"Success": false,
"Errors": [
{
"Code": "NotProcessed",
"Message": "Item passed validation but was not processed because other items in the batch failed."
}
]
},
{
"Success": false,
"Errors": [
{
"Code": "SessionNameRequired",
"Message": "Session at index 0: Name is required."
},
{
"Code": "PriceRequired",
"Message": "Price at index 1: Price is required."
}
]
}
]
}
}
A batch that is empty or larger than the maximum is rejected before validation begins, so there is nothing to report per request.
It returns the standard API error envelope instead, carrying a Code and Message — TooManyEventImportRequests when the maximum is exceeded.
A 409 Conflict uses the same envelope but carries only ResultCode and ResultMessage, with no per-request breakdown — the batch was never validated.
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 multi-session event with session choice
Submit a multi-session event where registrants choose the sessions they attend.
SessionChoiceEnabled is true, the second session is optional and priced separately, and each session carries its own description, tags and venue.
The first session is required, so it takes its price from the event and must not supply Prices of its own.
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",
"SessionChoiceEnabled": true,
"Sessions": [
{
"Name": "Day 1 - Foundations",
"StartDateTime": "2026-09-14T09:00:00+12:00",
"EndDateTime": "2026-09-14T17:00:00+12:00",
"Description": "Core management principles and team communication.",
"Tags": ["foundations"],
"RegistrationSettings": {
"IsOptional": false
},
"VenueDetails": {
"VenueId": 14
}
},
{
"Name": "Day 2 - Advanced Topics",
"StartDateTime": "2026-09-15T09:00:00+12:00",
"EndDateTime": "2026-09-15T17:00:00+12:00",
"Description": "Delegation, performance conversations and coaching.",
"Tags": ["advanced"],
"Prices": [
{ "RegionCode": "nz", "Price": 290.00, "IsTaxInclusive": true, "TaxRateId": 2 }
],
"RegistrationSettings": {
"IsOptional": true,
"WebsiteRegistrationEnabled": false
},
"VenueDetails": {
"VenueId": 14
}
}
],
"RegionCodes": ["nz"],
"Prices": [
{ "RegionCode": "nz", "Price": 250.00, "IsTaxInclusive": true, "TaxRateId": 2 }
],
"PublicationSettings": {
"AllowPublication": true,
"AllowPublicationInLists": true
},
"Tags": ["management"]
}
]
}
HTTP/1.1 202 Accepted
Content-Type: application/json
{
"AsyncTaskID": "e5f6a7b8-c9d0-1234-efab-345678901234"
}
Import an event with registration alerts
Submit an event that alerts administrators when the registration limit is reached, and again seven days before the start date if the minimum has not been met.
MinimumRegistrationAlert requires a RegistrationMinimum greater than zero, and MaximumRegistrationAlert requires a RegistrationLimit.
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 - October",
"StartDateTime": "2026-10-06T09:00:00+13:00",
"EndDateTime": "2026-10-06T17:00:00+13:00",
"VenueDetails": {
"VenueId": 14
}
}
],
"RegistrationSettings": {
"RegistrationMethod": "OrderProcess",
"RegistrationLimit": 20,
"RegistrationMinimum": 5,
"WebsiteRegistrationEnabled": true,
"MinimumRegistrationAlert": {
"DaysBefore": 7,
"RecipientIds": [3, 8]
},
"MaximumRegistrationAlert": {
"RecipientIds": [3]
}
},
"PublicationSettings": {
"AllowPublication": true,
"AllowPublicationInLists": true
}
}
]
}
HTTP/1.1 202 Accepted
Content-Type: application/json
{
"AsyncTaskID": "f6a7b8c9-d0e1-2345-fabc-456789012345"
}
Import a private event with all options
Submit a private event with two sessions, registration settings, publication and communication settings, region pricing, tags, a special note, 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",
"SessionChoiceEnabled": false,
"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],
"Description": "Core management principles and team communication.",
"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],
"Description": "Delegation, performance conversations and coaching.",
"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,
"WebsiteRegistrationEnabled": false,
"MinimumRegistrationAlert": {
"DaysBefore": 14,
"RecipientIds": [3]
}
},
"PublicationSettings": {
"AllowPublication": false
},
"CommunicationSettings": {
"NotificationsEnabled": false
},
"AccountCode": "ACC-200",
"SpecialNote": "Please bring a laptop to both days.",
"Tags": ["management", "leadership"]
}
]
}
HTTP/1.1 202 Accepted
Content-Type: application/json
{
"AsyncTaskID": "c3d4e5f6-a7b8-9012-cdef-123456789012"
}
