> ## Documentation Index
> Fetch the complete documentation index at: https://docs.9pic.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Import Photos

> Trigger photo import from configured sources for an event

## Overview

Triggers a photo import from the sources configured in the dashboard for the given event. This is pipeline step 1 — it pulls images from Google Drive, Dropbox, or other connected sources into 9Pic.

The job is asynchronous: this endpoint only queues work. The response returns `status: "processing"`; track completion with [Pipeline Status](/api-reference/pipeline/photos/status) via `stages.import.status` (`processed` or `failed`).

<Note>
  Photo sources must be configured in the 9Pic dashboard before calling this endpoint. The API does not accept source configuration.
</Note>

## Endpoint

```
POST /api/v1/ext/{org_id}/event/{event_id}/pipeline/photos/import
```

## Path Parameters

| Parameter  | Type   | Required | Description                     |
| ---------- | ------ | -------- | ------------------------------- |
| `org_id`   | number | Yes      | Your organisation ID.           |
| `event_id` | number | Yes      | The event to import photos for. |

## Example Request

<CodeGroup>
  ```bash cURL theme={null}
  curl -i -X POST \
    -H "X-API-Key: <your_9pic_api_key>" \
    "https://api.9pic.ai/api/v1/ext/903/event/456/pipeline/photos/import"
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      "https://api.9pic.ai/api/v1/ext/903/event/456/pipeline/photos/import",
      headers={"X-API-Key": "<your_9pic_api_key>"},
  )
  print(response.status_code, response.json())
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    "https://api.9pic.ai/api/v1/ext/903/event/456/pipeline/photos/import",
    {
      method: "POST",
      headers: { "X-API-Key": "<your_9pic_api_key>" },
    }
  );
  console.log(await response.json());
  ```
</CodeGroup>

## Example Response

```json theme={null}
{
  "responseType": "success",
  "message": "Import started",
  "data": {
    "event_id": 456,
    "media": "photos",
    "stage": "import",
    "status": "processing"
  }
}
```

## Error Responses

| Status | Meaning                                                          |
| ------ | ---------------------------------------------------------------- |
| `401`  | API key is missing.                                              |
| `403`  | API key is invalid, inactive, or token/event ownership mismatch. |
| `404`  | Event configuration not found.                                   |
| `409`  | Import is already processing. Wait for it to complete.           |
| `429`  | Rate limit exceeded. Back off and retry.                         |
| `500`  | Internal failure — the import job could not be queued.           |

See [Errors](/api-reference/errors) for canonical descriptions and retry guidance.
