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
- Submit an import request and receive an
AsyncTaskID. - Poll the task until the status is terminal (
Completed,Cancelled, orFaulted). - Read the result from
TaskDatato 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.
