API reference
Every operation of the Revdoku REST API with its TypeScript and Python SDK call, grouped by resource.
Requests go to https://api.revdoku.com. Every path starts with /v1, for example https://api.revdoku.com/v1/buckets. Send Authorization: Bearer $REVDOKU_API_KEY from your server; never put the key in a browser or a chat.
Responses use {"success": true, "data": ...}. Errors use {"success": false, "error": {"code": ..., "message": ...}}; branch on error.code.
The SDKs keep this envelope: TypeScript fields are camelCase, Python fields use the JSON names.
OpenAPI · API console · Quickstart · TypeScript SDK · Python SDK · API guide
Authentication
Sign-in helpers for the CLI and AI agents. Backend applications use an API key from the dashboard.
Operations that need no API key run before you have one. They use the generated DefaultApi class instead of Revdoku, so their errors are ResponseError (TypeScript) or ApiException (Python), not RevdokuError.
| Operation | HTTP | TypeScript | Python |
|---|---|---|---|
| Email a sign-in code | POST /v1/auth/sign_in_code |
new DefaultApi().requestSignInCode |
DefaultApi().request_sign_in_code |
| Exchange a sign-in code for an API key | POST /v1/auth/sign_in_code/verify |
new DefaultApi().verifySignInCode |
DefaultApi().verify_sign_in_code |
| Exchange a one-time dashboard connection code for an API key | POST /v1/auth/grant/exchange |
new DefaultApi().exchangeConnectionGrant |
DefaultApi().exchange_connection_grant |
| Create a dashboard link | POST /v1/auth/dashboard_link |
client.api.createDashboardLink |
client.api.create_dashboard_link |
Accounts
Connection status, granted accounts and limits.
| Operation | HTTP | TypeScript | Python |
|---|---|---|---|
| Read the connection and selected account | GET /v1/status |
client.api.getStatus |
client.api.get_status |
| List accounts granted to this credential | GET /v1/accounts |
client.api.listAccounts |
client.api.list_accounts |
| Create a client account | POST /v1/accounts |
client.api.createClientAccount |
client.api.create_client_account |
| Read one granted account | GET /v1/accounts/{account_id} |
client.api.getAccount |
client.api.get_account |
| Read effective account limits | GET /v1/account/limits |
client.api.getAccountLimits |
client.api.get_account_limits |
Buckets
Create, read, archive and delete buckets.
| Operation | HTTP | TypeScript | Python |
|---|---|---|---|
| List buckets | GET /v1/buckets |
client.listBuckets |
client.list_buckets |
| Create a bucket | POST /v1/buckets |
client.createBucket |
client.create_bucket |
| Read a bucket | GET /v1/buckets/{bucket_id} |
client.getBucket |
client.get_bucket |
| Update a bucket title, description or metadata | PATCH /v1/buckets/{bucket_id} |
client.api.updateBucket |
client.api.update_bucket |
| Permanently delete an archived bucket | DELETE /v1/buckets/{bucket_id} |
client.api.deleteBucket |
client.api.delete_bucket |
| Archive a bucket | POST /v1/buckets/{bucket_id}/archive |
client.api.archiveBucket |
client.api.archive_bucket |
| Unarchive a bucket | POST /v1/buckets/{bucket_id}/unarchive |
client.api.unarchiveBucket |
client.api.unarchive_bucket |
| Lock a bucket or some of its files | POST /v1/buckets/{bucket_id}/lock |
client.api.lockBucket |
client.api.lock_bucket |
| Remove your lock | POST /v1/buckets/{bucket_id}/unlock |
client.api.unlockBucket |
client.api.unlock_bucket |
Tickets
Support tickets: each conversation that someone started with the bucket, by email, a message left on the docs site or page feedback. Read them, reply to the requester, solve and label them.
| Operation | HTTP | TypeScript | Python |
|---|---|---|---|
| List tickets | GET /v1/buckets/{bucket_id}/tickets |
client.listTickets |
client.list_tickets |
| Read a ticket | GET /v1/buckets/{bucket_id}/tickets/{ticket_id} |
client.getTicket |
client.get_ticket |
| Solve, reopen or label a ticket | PATCH /v1/buckets/{bucket_id}/tickets/{ticket_id} |
client.api.updateTicket |
client.api.update_ticket |
| List the messages of a ticket | GET /v1/buckets/{bucket_id}/tickets/{ticket_id}/messages |
client.listTicketMessages |
client.list_ticket_messages |
| Reply to the requester | POST /v1/buckets/{bucket_id}/tickets/{ticket_id}/messages |
client.replyToTicket |
client.reply_to_ticket |
| Read a message | GET /v1/buckets/{bucket_id}/tickets/{ticket_id}/messages/{message_id} |
client.getTicketMessage |
client.get_ticket_message |
| Delete a message | DELETE /v1/buckets/{bucket_id}/tickets/{ticket_id}/messages/{message_id} |
client.api.deleteTicketMessage |
client.api.delete_ticket_message |
| Get a download link for the original email | GET /v1/buckets/{bucket_id}/tickets/{ticket_id}/messages/{message_id}/raw |
client.api.getTicketMessageOriginalDownload |
client.api.get_ticket_message_original_download |
| Get a download link for an attachment | GET /v1/buckets/{bucket_id}/tickets/{ticket_id}/messages/{message_id}/attachments/{attachment_id} |
client.getAttachmentDownload |
client.get_attachment_download |
Events
Ticket events of every channel: one signed webhook per bucket and live WebSocket subscriptions.
| Operation | HTTP | TypeScript | Python |
|---|---|---|---|
| Read the webhook | GET /v1/buckets/{bucket_id}/webhook |
client.api.getWebhook |
client.api.get_webhook |
| Set the webhook | PUT /v1/buckets/{bucket_id}/webhook |
client.api.setWebhook |
client.api.set_webhook |
| Remove the webhook | DELETE /v1/buckets/{bucket_id}/webhook |
client.api.deleteWebhook |
client.api.delete_webhook |
| Get a live event subscription ticket | GET /v1/buckets/{bucket_id}/events/subscription |
client.api.getEventSubscription |
client.api.get_event_subscription |
Files
Upload, read, organize and restore files.
| Operation | HTTP | TypeScript | Python |
|---|---|---|---|
| List files | GET /v1/buckets/{bucket_id}/files |
client.listFiles |
client.list_files |
| Save an uploaded file (step 3 of 3) | POST /v1/buckets/{bucket_id}/files |
client.uploadFile |
client.upload_file |
| Find a file by path | GET /v1/buckets/{bucket_id}/files/by_path |
client.api.getFileByPath |
client.api.get_file_by_path |
| Append text to a file | POST /v1/buckets/{bucket_id}/files/append_text |
client.api.appendText |
client.api.append_text |
| Read file metadata | GET /v1/buckets/{bucket_id}/files/{file_id} |
client.api.getFile |
client.api.get_file |
| Delete a file | DELETE /v1/buckets/{bucket_id}/files/{file_id} |
client.api.deleteFile |
client.api.delete_file |
| Get a download link for a file | GET /v1/buckets/{bucket_id}/files/{file_id}/download |
client.api.getFileDownload |
client.api.get_file_download |
| Rename or move a file in the same bucket | POST /v1/buckets/{bucket_id}/files/{file_id}/rename |
client.api.renameFile |
client.api.rename_file |
| Move a file | POST /v1/buckets/{bucket_id}/files/{file_id}/move |
client.api.moveFile |
client.api.move_file |
| Copy a file | POST /v1/buckets/{bucket_id}/files/{file_id}/copy |
client.api.copyFile |
client.api.copy_file |
| List file versions | GET /v1/buckets/{bucket_id}/files/{file_id}/versions |
client.api.listFileVersions |
client.api.list_file_versions |
| Restore a file version | POST /v1/buckets/{bucket_id}/files/{file_id}/versions/{version_id}/restore |
client.api.restoreFileVersion |
client.api.restore_file_version |
| Prepare a file upload (step 1 of 3) | POST /v1/buckets/{bucket_id}/uploads |
client.uploadFile |
client.upload_file |
| Start a batch upload | POST /v1/buckets/{bucket_id}/upload_sessions |
client.api.createUploadSession |
client.api.create_upload_session |
| Get storage targets for a batch | POST /v1/buckets/{bucket_id}/upload_sessions/{session_id}/uploads |
client.api.addUploadSessionFiles |
client.api.add_upload_session_files |
| Save uploaded files | POST /v1/buckets/{bucket_id}/upload_sessions/{session_id}/finalize_batch |
client.api.saveUploadSessionBatch |
client.api.save_upload_session_batch |
| Finish or cancel a batch upload | POST /v1/buckets/{bucket_id}/upload_sessions/{session_id}/finalize |
client.api.finalizeUploadSession |
client.api.finalize_upload_session |
Publications
A bucket’s site: publish its files, preview them for 24 hours, or take the site down.
| Operation | HTTP | TypeScript | Python |
|---|---|---|---|
| Get the site | GET /v1/buckets/{bucket_id}/publication |
client.api.getPublication |
client.api.get_publication |
| Publish the site | POST /v1/buckets/{bucket_id}/publication |
client.api.publishBucket |
client.api.publish_bucket |
| Unpublish the site | DELETE /v1/buckets/{bucket_id}/publication |
client.api.unpublishBucket |
client.api.unpublish_bucket |
| Get the preview | GET /v1/buckets/{bucket_id}/publication/preview |
client.api.getPublicationPreview |
client.api.get_publication_preview |
| Preview the site | POST /v1/buckets/{bucket_id}/publication/preview |
client.api.previewBucket |
client.api.preview_bucket |
GitHub
Connect a GitHub repository to a bucket: its files become a copy of one branch, and each push updates them.
| Operation | HTTP | TypeScript | Python |
|---|---|---|---|
| List connected GitHub accounts | GET /v1/account/github/installations |
client.api.listGithubInstallations |
client.api.list_github_installations |
| List the repositories of a GitHub account | GET /v1/account/github/installations/{installation_id}/repositories |
client.api.listGithubRepositories |
client.api.list_github_repositories |
| Read the GitHub repository of a bucket | GET /v1/buckets/{bucket_id}/github |
client.api.getGithubSync |
client.api.get_github_sync |
| Connect a GitHub repository | POST /v1/buckets/{bucket_id}/github |
client.api.connectGithubRepository |
client.api.connect_github_repository |
| Change GitHub sync settings | PATCH /v1/buckets/{bucket_id}/github |
client.api.updateGithubSync |
client.api.update_github_sync |
| Disconnect the GitHub repository | DELETE /v1/buckets/{bucket_id}/github |
client.api.disconnectGithubRepository |
client.api.disconnect_github_repository |
| Sync the GitHub repository now | POST /v1/buckets/{bucket_id}/github/sync |
client.api.syncGithubRepository |
client.api.sync_github_repository |
| List the branches that can get a preview | GET /v1/buckets/{bucket_id}/github/branches |
client.api.listGithubBranches |
client.api.list_github_branches |
| Get the links to add a GitHub account | GET /v1/buckets/{bucket_id}/github/setup_link |
client.api.getGithubSetupLink |
client.api.get_github_setup_link |