Skip to content

REST API

GolemDrive exposes a comprehensive REST API that powers the web dashboard, CLI, and MCP server. Anything you can do in the UI, you can do through the API.

https://api.golemdrive.com/api/v1/

All endpoints are prefixed with /api/v1/.

The API uses Bearer token authentication with JWTs issued by Zitadel (OpenID Connect).

Include your token in every request:

Authorization: Bearer eyJhbGciOiJSUzI1NiIs...

To obtain a token, authenticate through the Zitadel OIDC flow (PKCE is required for public clients). The web dashboard and CLI handle this automatically. For server-to-server integrations, use a service account with client credentials.

MethodEndpointDescription
GET/api/v1/nodes/List files and folders
POST/api/v1/nodes/Create a file or folder
GET/api/v1/nodes/{id}Get file or folder details
PUT/api/v1/nodes/{id}Update file metadata
DELETE/api/v1/nodes/{id}Delete a file or folder
MethodEndpointDescription
GET/api/v1/shares/List your share links
POST/api/v1/shares/Create a share link
GET/api/v1/shares/{id}Get share link details
PUT/api/v1/shares/{id}Update share settings
DELETE/api/v1/shares/{id}Revoke a share link
MethodEndpointDescription
GET/api/v1/teams/List your teams
POST/api/v1/teams/Create a team
GET/api/v1/teams/{id}/membersList team members
POST/api/v1/teams/{id}/inviteInvite a member
MethodEndpointDescription
GET/api/v1/search/Search files by name and metadata
MethodEndpointDescription
POST/api/v1/ai/chatSend a message to the AI assistant (SSE streaming response)
MethodEndpointDescription
GET/api/v1/userusage/quota-limitGet current storage and bandwidth usage
MethodEndpointDescription
GET/api/v1/payment/subscriptions/Get current subscription details
POST/api/v1/payment/subscriptions/Create or change subscription

List endpoints return paginated responses. Control pagination with query parameters:

GET /api/v1/nodes/?page=1&page_size=20

Responses are wrapped in a standard envelope:

{
"content": [...],
"totalElements": 142,
"totalPages": 8,
"page": 1,
"pageSize": 20
}

The default page size is 20. Maximum page size varies by endpoint.

The API uses token bucket rate limiting per endpoint. Each endpoint has its own rate limit. If you exceed the limit, you’ll receive a 429 Too Many Requests response with a Retry-After header indicating when you can try again.

For most endpoints, the limits are generous enough that normal usage won’t hit them. Bulk operations or tight polling loops are the most common causes of rate limiting.

Errors follow a consistent format:

{
"code": 400,
"message": "Invalid request: page_size must be between 1 and 100"
}

Common status codes:

CodeMeaning
400Bad request — check your parameters
401Unauthorized — token missing or expired
403Forbidden — you don’t have access to this resource
404Not found — resource doesn’t exist
429Rate limited — slow down and retry after the specified delay
500Server error — something went wrong on our end

Each API module publishes its own OpenAPI (Swagger) specification. These specs document every endpoint, request body, query parameter, and response schema in detail.

Access the public API specs at your GolemDrive instance’s Swagger UI endpoint.

The API supports webhooks for real-time event notifications. See Webhooks for setup instructions and event types.

  • Always include Content-Type: application/json for request bodies
  • Use page_size (snake_case), not pageSize — the API uses snake_case for query parameters
  • File uploads use chunked upload — see the upload endpoint documentation for the multi-step process
  • The AI chat endpoint uses Server-Sent Events (SSE) for streaming responses — use an SSE client library, not standard JSON parsing