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.

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

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 Requests array is missing, empty, or contains more than 500 entries.
  • An entry in Requests, Sessions or a Prices array is null.
  • TemplateCode is missing, no template with that code exists, more than one template shares that code, or the matching template is archived.
  • 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.
  • 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 IsOptional to true without the event setting SessionChoiceEnabled to true.
  • A session of a multi-session event supplies Prices without the event setting SessionChoiceEnabled to true, or with that session's IsOptional set to false.
  • Both top-level Prices and session Prices are supplied for an event with a single session.
  • Name uses a placeholder other than [TemplateName].
  • RegistrationMethod is supplied with a value that is not recognised.
  • The registration count range is invalid: RegistrationLimit is less than 1, RegistrationMinimum is negative, or RegistrationLimit is less than RegistrationMinimum.
  • MinimumRegistrationAlert is supplied with DaysBefore or RecipientIds populated, but is missing RecipientIds, has no RegistrationMinimum greater than zero, or has a DaysBefore outside the range 1999.
  • MinimumRegistrationAlert.RecipientIds is supplied without MinimumRegistrationAlert.DaysBefore.
  • MaximumRegistrationAlert is supplied with RecipientIds populated but without RegistrationLimit.
  • A registration alert recipient does not exist or is not an administrator.
  • A session's PresenterIds contains the same identifier more than once.
  • A session's GuestUrl or AdministratorUrl exceeds 256 characters.
  • A session's GuestInstructions or AdministratorInstructions supplies Content without a ContentType, or names a ContentType other than text/plain or application/xhtml.
  • A price entry is missing RegionCode or Price, or its Price is negative.
  • A Prices array names the same RegionCode more than once.
  • A price entry's RegionCode is not one of the regions the event is advertised in.
  • A supplied Prices array — on the event or on a session — does not contain an entry for every region the event is advertised in.
  • RegionCodes lists a region that the template does not price, where no Prices entry 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.
  • IsTaxInclusive is true but TaxRateId is missing or null.
  • A Tags array contains an empty entry or more than 64 entries.
  • A text field such as Name, LocationName, SpecialNote, a session Description or 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, or RegionCode does not refer to an existing resource.
  • A supplied VenueRoomId refers to a room that does not belong to the session's VenueId.
  • A price entry's TaxRateId is not associated with the region identified by its RegionCode.

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 MessageTooManyEventImportRequests 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"
}