Imports

Start an archive import (zip or URL list)

Creator/admin only (fresh DB role, re-checked server-side — not the JWT claim). Async bulk ingestion of up to 10,000 images per job; every image still flows through the normal per-image moderation pipeline (dedup, Gemini risk scan, determineImageStatus). Only one active import per creator at a time (409 IMPORT_ALREADY_ACTIVE). kind: 'zip' opens an R2 multipart upload session for the client to stream 90 MB parts into via PUT /v1/imports/{id}/parts/{n}, then POST .../complete-transfer. kind: 'url_list' submits the URLs synchronously (each syntactically https-only and SSRF-validated) and enqueues processing immediately.

post/v1/imports

Request

  • Base URL: https://api.memestack.ai
  • URL: https://api.memestack.ai/v1/imports
  • Auth: HTTP bearer

Request body

kind'zip' | 'url_list' required
size_bytesinteger

zip only. Declared archive size; re-validated against the actual assembled object at complete-transfer time. Max 10 GiB.

urlsstring[]

url_list only. Each must be https and pass SSRF validation.

user_contextstring

Optional archive-wide tagging hint passed to the LLM tagger for every image in this import. Same 200-char semantics as the per-file upload hint.

Response

Import created. zip: multipart upload session opened. url_list: manifest written and processing already enqueued.

import_idstring uuid
upload_idstring

zip only — R2 multipart upload id, required on every part PUT.

part_sizeinteger

zip only — fixed byte size every non-final part must equal exactly (IMPORT_PART_SIZE, 90 MB).

Changes

No recorded changes to this operation across all 1 revision of this API.