API overview
Every APULODI developer API route lives under /v1 and authenticates with
a Bearer API key.
Base URL
https://api.apulodi.com/v1
For local development, point the SDK at your running instance:
const apulodi = new Apulodi({
apiKey: process.env.APULODI_API_KEY!,
baseUrl: "http://localhost:3000",
});
Conventions
-
Content type — request and response bodies are JSON (
Content-Type: application/json). -
Success envelope — collection and object endpoints return their payload under a
datakey:json{ "data": { "id": "file_…", "status": "uploaded" } } -
Pagination — list endpoints return
datapluspagination:json{ "data": [], "pagination": { "hasMore": false, "nextCursor": null } } -
Dates — all timestamps are ISO 8601 UTC strings.
-
Status — file
statusis lowercase (pending,uploaded,failed,deleted). -
Idempotency —
POST /v1/files/uploadaccepts an optionalIdempotency-Keyheader; retrying with the same key returns the same file instead of creating a duplicate.
Error envelope
Errors always use this shape:
{
"error": {
"code": "FILE_NOT_FOUND",
"message": "The file could not be found.",
"details": { "issues": {} }
}
}
details is optional and carries structured context (for example Zod field
errors). The full code list is in Errors.
Endpoints
| Method | Path | Purpose |
|---|---|---|
GET | /v1/me | Resolve the API key's context |
POST | /v1/files/upload | Create a file + presigned upload URL |
POST | /v1/files/:id/complete | Finalize an upload |
GET | /v1/files | List / filter / paginate files |
GET | /v1/files/:id | Fetch a file |
PATCH | /v1/files/:id | Rename / move / update metadata |
DELETE | /v1/files/:id | Delete a file (removes object) |
POST | /v1/files/:id/copy | Server-side copy |
POST | /v1/files/:id/download-url | Presigned download URL |
POST | /v1/files/:id/restore | Restore a deleted file |
POST | /v1/files/:id/replace | Start a content replacement |
POST | /v1/files/:id/replace/complete | Finalize a replacement |
POST | /v1/files/:id/transform | Request an image variant (async) |
GET | /v1/files/:id/variants | List a file's image variants |
POST | /v1/files/:id/variants/:variantId/download-url | Presigned download URL for a variant |
POST | /v1/uploads/multipart | Initiate a multipart upload |
POST | /v1/uploads/multipart/:id/parts | (Re)generate part URLs |
GET | /v1/uploads/multipart/:id/parts | List uploaded parts |
POST | /v1/uploads/multipart/:id/complete | Complete a multipart upload |
DELETE | /v1/uploads/multipart/:id | Abort a multipart upload |
GET | /v1/folders | List logical folders |