Skip to content

Upload, download, and manage files and avatars attached to notebooks. This page covers the avatar endpoints, the file listing and download endpoints, and the resumable TUS upload protocol used for notebook attachments.

Avatars are user profile images. The upload endpoint accepts JPEG, PNG, or WebP images, which are resized to 500x500 and stored as JPEG. The download endpoint returns the binary image data.

Uploads a raw image as an avatar. The image is resized to 500x500 and converted to JPEG.

This endpoint takes no parameters.

The request body is a multipart form upload containing the image file (JPEG, PNG, or WebP).

Terminal window
curl -X POST https://api.hoody.com/api/v1/notes/avatars \
-H "Authorization: Bearer <token>" \
-F "avatar=@/path/to/photo.jpg"

Returns the avatar image as JPEG binary data.

NameInTypeRequiredDescription
avatarIdpathstringYesThe ID of the avatar to download
Terminal window
curl -X GET https://api.hoody.com/api/v1/notes/avatars/avatar_01HXYZABCDEF123456 \
-H "Authorization: Bearer <token>" \
-o avatar.jpg

Files are attachments stored within a notebook. List and download operations are straightforward, while uploads use the resumable TUS protocol for reliability on large or unstable connections.

GET /api/v1/notes/notebooks/{notebookId}/files

Section titled “GET /api/v1/notes/notebooks/{notebookId}/files”

Returns a paginated list of files uploaded to a notebook. Supports limit/offset pagination.

NameInTypeRequiredDescription
notebookIdpathstringYesThe ID of the notebook
limitqueryintegerNoMaximum number of files to return (default: 50)
offsetqueryintegerNoNumber of files to skip (default: 0)
Terminal window
curl -X GET "https://api.hoody.com/api/v1/notes/notebooks/ntb_01HXYZABCDEF123456/files?limit=50&offset=0" \
-H "Authorization: Bearer <token>"

GET /api/v1/notes/notebooks/{notebookId}/files/{fileId}

Section titled “GET /api/v1/notes/notebooks/{notebookId}/files/{fileId}”

Downloads the content of an uploaded file. Returns the binary data with the original content type.

NameInTypeRequiredDescription
notebookIdpathstringYesThe ID of the notebook
fileIdpathstringYesThe ID of the file to download
Terminal window
curl -X GET "https://api.hoody.com/api/v1/notes/notebooks/ntb_01HXYZABCDEF123456/files/file_01HXYZABCDEF123456" \
-H "Authorization: Bearer <token>" \
-o meeting-notes.pdf

Large file uploads are handled through the TUS protocol, which supports resumable uploads via four HTTP methods on the same endpoint. Use the TUS client library of your choice, or the SDK wrappers below.

POST /api/v1/notes/notebooks/{notebookId}/files/{fileId}/tus

Section titled “POST /api/v1/notes/notebooks/{notebookId}/files/{fileId}/tus”

Creates a new resumable upload. Returns a Location header containing the upload URL to use for subsequent PATCH requests.

NameInTypeRequiredDescription
notebookIdpathstringYesThe ID of the notebook
fileIdpathstringYesThe ID of the file
Terminal window
curl -X POST "https://api.hoody.com/api/v1/notes/notebooks/ntb_01HXYZABCDEF123456/files/file_01HXYZABCDEF123456/tus" \
-H "Authorization: Bearer <token>" \
-H "Tus-Resumable: 1.0.0" \
-H "Upload-Length: 245678" \
-H "Upload-Metadata: filename bWVldGluZy1ub3Rlcy5wZGY="

PATCH /api/v1/notes/notebooks/{notebookId}/files/{fileId}/tus

Section titled “PATCH /api/v1/notes/notebooks/{notebookId}/files/{fileId}/tus”

Uploads a chunk of the file. Repeat this call until the full Upload-Length has been transferred.

NameInTypeRequiredDescription
notebookIdpathstringYesnotebookId path parameter
fileIdpathstringYesfileId path parameter
Terminal window
curl -X PATCH "https://api.hoody.com/api/v1/notes/notebooks/ntb_01HXYZABCDEF123456/files/file_01HXYZABCDEF123456/tus" \
-H "Authorization: Bearer <token>" \
-H "Tus-Resumable: 1.0.0" \
-H "Upload-Offset: 0" \
-H "Content-Type: application/offset+octet-stream" \
--data-binary @chunk-0.bin

HEAD /api/v1/notes/notebooks/{notebookId}/files/{fileId}/tus

Section titled “HEAD /api/v1/notes/notebooks/{notebookId}/files/{fileId}/tus”

Returns the current Upload-Offset so a client can resume a paused upload without re-sending already-written bytes.

NameInTypeRequiredDescription
notebookIdpathstringYesThe ID of the notebook
fileIdpathstringYesThe ID of the file
Terminal window
curl -X HEAD "https://api.hoody.com/api/v1/notes/notebooks/ntb_01HXYZABCDEF123456/files/file_01HXYZABCDEF123456/tus" \
-H "Authorization: Bearer <token>" \
-H "Tus-Resumable: 1.0.0"

DELETE /api/v1/notes/notebooks/{notebookId}/files/{fileId}/tus

Section titled “DELETE /api/v1/notes/notebooks/{notebookId}/files/{fileId}/tus”

Aborts an in-progress upload and discards any bytes already received.

NameInTypeRequiredDescription
notebookIdpathstringYesnotebookId path parameter
fileIdpathstringYesfileId path parameter
Terminal window
curl -X DELETE "https://api.hoody.com/api/v1/notes/notebooks/ntb_01HXYZABCDEF123456/files/file_01HXYZABCDEF123456/tus" \
-H "Authorization: Bearer <token>" \
-H "Tus-Resumable: 1.0.0"