Arlo home

REST Auth API: EventImportResults

After submitting a batch of events via EventImportRequests, the endpoint returns an AsyncTaskID. This page describes how to poll for progress, interpret the completed result, and handle errors.

Import tasks are managed through the existing AsyncTasks resource. The task Type is EventImportTask and the result is returned in the TaskData element once the task reaches Completed status.

Workflow overview

  1. Submit an import request and receive an AsyncTaskID.
  2. Poll the task until the status is terminal (Completed, Cancelled, or Faulted).
  3. Read the result from TaskData to find created events and any per-event errors.

Polling for task status

Retrieve the task by issuing an HTTP GET to the AsyncTasks instance resource using the AsyncTaskID returned when the import was submitted.

GET /api/2012-02-01/auth/resources/asynctasks/{AsyncTaskID}/

The response is application/xml and includes the task's current Status. Poll until Status reaches a terminal value.

Task statuses

Status Terminal Description
Waiting No The task is queued but has not started processing.
Running No The task is actively creating events.
Suspended No The task is currently suspended.
Completed Yes Processing finished. TaskData contains the import result.
Cancelled Yes The task was cancelled before completion. Partial results may exist in TaskData.
Faulted Yes The task encountered an unrecoverable infrastructure error. No events were created.

Recommended polling strategy

Start polling after a short initial delay (e.g. 2 seconds), then poll at regular intervals. A 5-second interval is appropriate for most batch sizes. For large batches (200+ events), consider increasing the interval to 10 seconds after the first minute.

Do not poll more frequently than once per second. The task status endpoint is rate-limited like all other API endpoints.

Example — Task still running

GET https://demo.arlo.co/api/2012-02-01/auth/resources/asynctasks/a1b2c3d4-e5f6-7890-abcd-ef1234567890/ HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/xml

<?xml version="1.0" encoding="utf-8"?>
<AsyncTaskRequest>
    <AsyncTaskID>a1b2c3d4-e5f6-7890-abcd-ef1234567890</AsyncTaskID>
    <CreatedDateTime>2026-06-18T09:00:00.000+12:00</CreatedDateTime>
    <Status>Running</Status>
    <Type>EventImportTask</Type>
</AsyncTaskRequest>

The TaskData element is absent while the task is in progress. Continue polling until Status is a terminal value.

Import result structure

When the task reaches Completed status, the TaskData element contains the import result as a JSON string. Unlike other async task types that use XML sub-elements, EventImportTask tasks store a single JSON object in TaskData.

The Results array is dense — it always contains exactly one entry per submitted request, in the same order as the original Requests array. Results[i] corresponds to Requests[i]. Each entry has a Success boolean that determines its shape.

Canonical structure

{
  "SuccessCount": 1,
  "ErrorCount": 1,
  "Results": [
    {
      "Success": false,
      "Errors": [
        {
          "Code": "EventCreationFailed",
          "Message": "An unexpected error occurred while processing the import request."
        }
      ]
    },
    {
      "Success": true,
      "EventId": 9021
    }
  ]
}

Top-level fields

Field Description
SuccessCount Integer. Number of events successfully created.
ErrorCount Integer. Number of requests that failed during background processing.
Results Array of result objects, one per submitted request, in the same order as the original Requests array. Each entry is either a success or a failure, determined by the Success field.

Success result

When Success is true, the entry contains the identifier of the created event. The Errors field is absent.

Field Description
Success Boolean. Always true.
EventId Integer. Identifier of the created Event.

Failure result

When Success is false, the entry contains an array of errors describing why the request failed. The EventId field is normally absent. It is present only when the event was created but a subsequent configuration step failed (error Code PostCreateFailed) — in that case a partially-configured event exists under the returned identifier and should be reviewed or removed.

Field Description
Success Boolean. Always false.
EventId Integer. Present only when the event was created before a later step failed (Code PostCreateFailed). Otherwise absent.
Errors Array of error objects describing the failure.

Error fields

Each object in the Errors array describes a reason the event could not be created.

Field Description
Code Machine-readable code identifying the category of failure. See Error codes for the values that can appear in a completed result.
Message Human-readable description of the error. For failures raised while creating the event (CreateRequestFailed, EventCreationFailed, PostCreateFailed) this is a generic message — the specific underlying cause is logged server-side and is not exposed through the API.

Error codes

The following Code values can appear on failure entries in a completed task result. Codes are stable and safe to branch on.

Code Meaning
CreateRequestFailed The request could not be translated into an event to create.
EventCreationFailed The event could not be created.
PostCreateFailed The event was created but a follow-up configuration step (name, account code, private-event, minimum registrations, or region pricing) failed. The entry includes the created EventId.
InvalidRequest The request entry was missing or empty.
InvalidTemplate No template could be resolved for the supplied TemplateCode.
NoSessions The request contained no sessions.
InvalidSession A session entry was missing required data.
InvalidDeliveryType The delivery type (venue or online) could not be determined for the request.
Cancelled The task was cancelled before this request was processed.

TaskData availability by status

The presence and content of TaskData depends on the task's terminal status.

Status TaskData Notes
Completed Present Contains the full import result. Results array length equals the number of submitted requests.
Cancelled May be present If present, Results may be shorter than the submitted batch — only requests processed before cancellation are included. Events already created are not rolled back.
Faulted Absent An unrecoverable infrastructure error occurred. No events were created. Retry the entire batch.

Examples

Example 1 — All events created successfully

A batch of two events was submitted and both were created successfully.

GET https://demo.arlo.co/api/2012-02-01/auth/resources/asynctasks/a1b2c3d4-e5f6-7890-abcd-ef1234567890/ HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/xml

<?xml version="1.0" encoding="utf-8"?>
<AsyncTaskRequest>
    <AsyncTaskID>a1b2c3d4-e5f6-7890-abcd-ef1234567890</AsyncTaskID>
    <CreatedDateTime>2026-06-18T09:00:00.000+12:00</CreatedDateTime>
    <Status>Completed</Status>
    <Type>EventImportTask</Type>
    <TaskData>{
  "SuccessCount": 2,
  "ErrorCount": 0,
  "Results": [
    {
      "Success": true,
      "EventId": 9021
    },
    {
      "Success": true,
      "EventId": 9022
    }
  ]
}</TaskData>
</AsyncTaskRequest>

Example 2 — Partial failure

A batch of three events was submitted. The first failed during event creation; the second event was created but a follow-up configuration step failed; the third was created successfully.

HTTP/1.1 200 OK
Content-Type: application/xml

<?xml version="1.0" encoding="utf-8"?>
<AsyncTaskRequest>
    <AsyncTaskID>d4e5f6a7-b8c9-0123-defa-234567890123</AsyncTaskID>
    <CreatedDateTime>2026-06-18T10:30:00.000+12:00</CreatedDateTime>
    <Status>Completed</Status>
    <Type>EventImportTask</Type>
    <TaskData>{
  "SuccessCount": 1,
  "ErrorCount": 2,
  "Results": [
    {
      "Success": false,
      "Errors": [
        {
          "Code": "EventCreationFailed",
          "Message": "An unexpected error occurred while processing the import request."
        }
      ]
    },
    {
      "Success": false,
      "EventId": 9032,
      "Errors": [
        {
          "Code": "PostCreateFailed",
          "Message": "An unexpected error occurred while processing the import request."
        }
      ]
    },
    {
      "Success": true,
      "EventId": 9033
    }
  ]
}</TaskData>
</AsyncTaskRequest>

Results[0] failed during event creation and carries no EventId. Results[1] is a partial failure — the event was created (EventId present) but a follow-up configuration step failed, so its Code is PostCreateFailed. The event exists but is only partially configured; review or remove it as appropriate. This is the only case where a failure entry carries an EventId. Results[2] was created successfully. Failures here do not roll back successful creations or stop import execution.

Example 3 — All events failed

A batch of two events was submitted and both failed during background processing.

HTTP/1.1 200 OK
Content-Type: application/xml

<?xml version="1.0" encoding="utf-8"?>
<AsyncTaskRequest>
    <AsyncTaskID>e5f6a7b8-c9d0-1234-efab-345678901234</AsyncTaskID>
    <CreatedDateTime>2026-06-18T11:00:00.000+12:00</CreatedDateTime>
    <Status>Completed</Status>
    <Type>EventImportTask</Type>
    <TaskData>{
  "SuccessCount": 0,
  "ErrorCount": 2,
  "Results": [
    {
      "Success": false,
      "Errors": [
        {
          "Code": "CreateRequestFailed",
          "Message": "An unexpected error occurred while processing the import request."
        }
      ]
    },
    {
      "Success": false,
      "Errors": [
        {
          "Code": "EventCreationFailed",
          "Message": "An unexpected error occurred while processing the import request."
        }
      ]
    }
  ]
}</TaskData>
</AsyncTaskRequest>

Cancelling an import task

If the task is still in Waiting or Running status, it can be cancelled by POSTing to the cancel endpoint. Events already created before cancellation are not rolled back.

POST /api/2012-02-01/auth/resources/asynctasks/{AsyncTaskID}/cancelrequests/

Returns 202 Accepted with an empty body if the cancellation is accepted. The task will transition to Cancelled status. See AsyncTasks cancellation for full details.