Skip to content

/v1/files

LIST

GET https://api.dropkit.app/v1/files?cursor=&limit=50
Authorization: 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.