---
title: "Import photos from a Google Drive folder"
method: POST
path: "/events/{id}/drive_imports"
tags: ["Drive imports"]
---

# Import photos from a Google Drive folder

`POST /events/{id}/drive_imports`

## Request

- Base URL: `https://findme.photo/api/v1`
- URL: `https://findme.photo/api/v1/events/{id}/drive_imports`
- Auth: HTTP bearer

Starts a background import of the images in a Google Drive folder into the album, and returns an `import_id` to poll with `getDriveImport` (also given as `poll_url`). Requirements: the plan includes Google Drive imports (`403 tier_not_eligible` otherwise) and Google Drive is connected on the FindMe account (`428 drive_not_connected` otherwise, with `connect_url`). Works for albums you own or collaborate on.

Note for AI assistants: FindMe uses Google's drive.file permission, which only lets FindMe read files the photographer picked in the FindMe web app, so a folder ID from chat may find no files. Prefer sending the photographer to Import from Drive on the album in the web app.

Behaviour: HEIC files are skipped (`skipped_heic`); files whose name is already in the album are skipped as duplicates (`skipped_duplicates`); at most 50 files are imported per call (Google limit) and the album's photo limit can lower that further, in which case `limit_warning` explains what was left out. If every file is already in the album, the call succeeds with `status: nothing_to_import`, `import_id: null` and `poll_url: null`.

Errors: `428 drive_not_connected`; `402 upgrade_required` when the storage limit or the album photo limit is reached (`upgrade_url`); `400 invalid_request` (bad body, or no supported image files in the folder); `403 forbidden` (album not found or no access); `500 internal_error`; `502 internal_error` when the import service could not be reached.

## Request body

- StartDriveImportRequest
  - `folder_id` string, required: Google Drive folder id.
  - `folder_name` string: Display name for the import.

## Response `200`

Import started.

- object
  - `data` DriveImportStarted, required
    - `import_id` string, uuid, nullable, required: Null when `status` is `nothing_to_import`.
    - `event_id` string, required
    - `total_files` integer, required: Files queued for import.
    - `skipped_heic` integer, required: HEIC files skipped.
    - `limit_warning` string, nullable, required: Set when the 50-file cap or the album photo limit left files out.
    - `status` 'pending' | 'nothing_to_import', required
    - `poll_url` string, nullable, required: Site-relative path of `getDriveImport` for this import, e.g. `/api/v1/drive_imports/{import_id}`. Null when `status` is `nothing_to_import`.
    - `skipped_duplicates` integer, required: Files skipped because a file with the same name is already in the album.
  - `meta` Meta, required
    - `request_id` string, required

## Other responses

- `400`: `invalid_request`: the body failed validation (the error object has `reason`), or the folder has no supported image files.
- `401`: `missing_or_invalid_token` (no or malformed `Authorization: Bearer fm_live_...` header) or `invalid_token` (unknown or revoked key).
- `402`: `upgrade_required`: storage limit reached or the album is full. Has `upgrade_url`.
- `403`: `tier_not_eligible`: the plan does not include API access or Google Drive imports. `forbidden`: album not found or no access.
- `428`: `drive_not_connected`: Google Drive is not connected to this FindMe account. Has `connect_url`.
- `429`: `rate_limited` (per-minute limit; `retry_after_seconds`) or `quota_exceeded` (monthly quota; `retry_after_seconds`, `resets_at`).
- `500`: `internal_error`: something failed on our side. Safe to retry reads; include `request_id` when reporting.
- `502`: `internal_error`: the import service could not be reached or returned a non-JSON response.

---

[API](https://skmtc.dev/findme/apis/findme-photo-api.md) · [All operations](https://skmtc.dev/findme/apis/findme-photo-api/llms.txt) · [OpenAPI document](https://skmtc.dev/findme/apis/findme-photo-api/revisions/b68670b742a9?raw)
