/v1/files
LIST
GET https://api.dropkit.app/v1/files?cursor=&limit=50Authorization: Bearer pk_live_...Returns the project’s files, newest first. limit defaults to 50, max 100. Pass back the previous response’s nextCursor as ?cursor= to fetch the next page; nextCursor is null once the project is exhausted.
{ "files": [ { "id": "abc123...", "name": "photo.jpg", "mime": "image/jpeg", "size": 12345, "createdAt": 1700000000000, "visibility": "public", "url": "https://cdn.dropkit.app/abc123.../photo.jpg", "metadata": { "user": "123" } } ], "nextCursor": "1700000000000_abc123..."}Skips deleted files. Includes pending uploads (rows that exist after /v1/uploads/sign but before /v1/uploads/:id/complete).
GET
GET https://api.dropkit.app/v1/files/abc123...Authorization: Bearer pk_live_...Response:
{ "id": "abc123...", "name": "photo.jpg", "mime": "image/jpeg", "size": 12345, "createdAt": 1700000000000, "status": "ready", "url": "https://cdn.dropkit.app/abc123.../photo.jpg", "metadata": { "user": "123" }}The path shape is <base>/<file-id>/<sanitized-filename>. The CDN routes on the file id only; the trailing filename is decorative for SEO and “Save image as…” prompts. Bare <base>/<file-id> keeps resolving the same file.
DELETE
Requires a secret key (sk_live_...).
DELETE https://api.dropkit.app/v1/files/abc123...Authorization: Bearer sk_live_...Returns 204.