Account
Who the key is and what it may do.
GET /me
The workspace, plan and key behind this request
Transfers
One-off sends with an expiring link.
GET /transfers
List transfers, newest first
Parameters
| Name | Type | Description |
|---|---|---|
limit (query) | integer | Page size, 1–500. Defaults to 100. |
cursor (query) | string | The nextCursor from the previous page, unchanged. Opaque: never build one. |
POST /transfers
Create a transfer
Always creates a draft: the link is not live and nobody is emailed until you call finalize. Returns a tus endpoint and one upload token per file. An unfinalized draft is swept after 24 hours.
Body (JSON)
| Name | Type | Description |
|---|---|---|
filesrequired | object[] | |
files[].namerequired | string | Filename as it should appear to the recipient. |
files[].sizerequired | integer | Exact size in bytes. Must match what you upload. |
files[].type | string | MIME type. Best effort; never trusted. |
files[].path | string | Directory within an uploaded folder, e.g. "Ceremony/Raw". Omit for a loose file. |
title | string | Shown in your dashboard; never to recipients. |
expiresInDays | integer | Defaults to 7. Clamped to your plan’s maximum (7 free, 365 paid) rather than rejected. |
GET /transfers/{id}
Transfer detail, files and recipient status
Parameters
| Name | Type | Description |
|---|---|---|
id (path)required | string | Transfer id. Never the share slug, which is a capability. |
PATCH /transfers/{id}
Change expiry or download limit
Parameters
| Name | Type | Description |
|---|---|---|
id (path)required | string | Transfer id. Never the share slug, which is a capability. |
Body (JSON)
| Name | Type | Description |
|---|---|---|
expiresInDays | integer | Clamped to your plan’s maximum rather than rejected. |
maxDownloads | integer | null | null lifts the limit. Omit to leave unchanged. |
DELETE /transfers/{id}
Revoke a transfer
Immediate and irreversible: the per-file encryption keys are destroyed before this returns, so the content is unrecoverable whether or not object storage has caught up.
Parameters
| Name | Type | Description |
|---|---|---|
id (path)required | string | Transfer id. Never the share slug, which is a capability. |
POST /transfers/{id}/finalize
Send it
Makes the link live and emails any recipients. Safe to retry — finalizing twice does not re-send. Omit recipients for a link-only transfer you share yourself.
Parameters
| Name | Type | Description |
|---|---|---|
id (path)required | string | Transfer id. Never the share slug, which is a capability. |
Body (JSON)
| Name | Type | Description |
|---|---|---|
recipients | string (email)[] | Omit to get a link only. Each address here is emailed on your behalf. |
message | string | |
password | string | Recipients must enter this to open the transfer. |
title | string |
POST /transfers/{id}/files
Add files to an unsent transfer
Parameters
| Name | Type | Description |
|---|---|---|
id (path)required | string | Transfer id. Never the share slug, which is a capability. |
Body (JSON)
| Name | Type | Description |
|---|---|---|
filesrequired | object[] | |
files[].namerequired | string | Filename as it should appear to the recipient. |
files[].sizerequired | integer | Exact size in bytes. Must match what you upload. |
files[].type | string | MIME type. Best effort; never trusted. |
files[].path | string | Directory within an uploaded folder, e.g. "Ceremony/Raw". Omit for a loose file. |
DELETE /transfers/{id}/files/{fileId}
Remove a file from an unsent transfer
Parameters
| Name | Type | Description |
|---|---|---|
id (path)required | string | Transfer id. Never the share slug, which is a capability. |
fileId (path)required | string | File id from the create or add response. |
GET /transfers/{id}/downloads
Download receipts
One page visit is one download, not one per file — events from the same visit share a sessionId. Most recent 200 events.
Parameters
| Name | Type | Description |
|---|---|---|
id (path)required | string | Transfer id. Never the share slug, which is a capability. |
Collections
Durable, folder-structured spaces clients are invited into.
GET /collections
List collections
Never includes your vault, which is not reachable from the API at all.
POST /collections
Create a collection
Body (JSON)
| Name | Type | Description |
|---|---|---|
titlerequired | string | |
description | string |
GET /collections/{id}
Collection detail
Parameters
| Name | Type | Description |
|---|---|---|
id (path)required | string | Collection id. Never a slug — see the Concepts page. |
PATCH /collections/{id}
Rename or re-describe
Title and description only. Sharing settings are deliberately not writable here. Renaming never changes the URL — it has already been sent to people.
Parameters
| Name | Type | Description |
|---|---|---|
id (path)required | string | Collection id. Never a slug — see the Concepts page. |
Body (JSON)
| Name | Type | Description |
|---|---|---|
title | string | |
description | string |
DELETE /collections/{id}
Delete a collection and its contents
Parameters
| Name | Type | Description |
|---|---|---|
id (path)required | string | Collection id. Never a slug — see the Concepts page. |
GET /collections/{id}/files
List files
Parameters
| Name | Type | Description |
|---|---|---|
id (path)required | string | Collection id. Never a slug — see the Concepts page. |
folderId (query) | string | Omit for every file. Pass root for the top level, or a folder id. |
limit (query) | integer | Page size, 1–1000. Omit it to get every file in one response. |
cursor (query) | string | The nextCursor from the previous page, unchanged. Opaque: never build one. |
POST /collections/{id}/files
Register files for upload
Reserves quota under a per-workspace lock and creates any folders implied by path. Returns a tus endpoint and one upload token per file.
Parameters
| Name | Type | Description |
|---|---|---|
id (path)required | string | Collection id. Never a slug — see the Concepts page. |
Body (JSON)
| Name | Type | Description |
|---|---|---|
filesrequired | object[] | |
files[].namerequired | string | Filename as it should appear to the recipient. |
files[].sizerequired | integer | Exact size in bytes. Must match what you upload. |
files[].type | string | MIME type. Best effort; never trusted. |
files[].path | string | Directory within an uploaded folder, e.g. "Ceremony/Raw". Omit for a loose file. |
folderId | string | null | Target folder. Omit or null for the collection root. |
DELETE /collections/{id}/files
Delete files
Parameters
| Name | Type | Description |
|---|---|---|
id (path)required | string | Collection id. Never a slug — see the Concepts page. |
Body (JSON)
| Name | Type | Description |
|---|---|---|
fileIdsrequired | string[] |
GET /collections/{id}/folders
List folders
Ordered by depth then path, which is not a pre-order traversal — build a tree from parentId rather than trusting the order.
Parameters
| Name | Type | Description |
|---|---|---|
id (path)required | string | Collection id. Never a slug — see the Concepts page. |
POST /collections/{id}/folders
Create a folder
Parameters
| Name | Type | Description |
|---|---|---|
id (path)required | string | Collection id. Never a slug — see the Concepts page. |
Body (JSON)
| Name | Type | Description |
|---|---|---|
namerequired | string | |
parentId | string | null | Omit or null for the collection root. |
GET /collections/{id}/guests
List guests
Parameters
| Name | Type | Description |
|---|---|---|
id (path)required | string | Collection id. Never a slug — see the Concepts page. |
POST /collections/{id}/guests
Invite guests by email
Guests may view and download this one collection. They are free on every plan and are not workspace members.
Parameters
| Name | Type | Description |
|---|---|---|
id (path)required | string | Collection id. Never a slug — see the Concepts page. |
Body (JSON)
| Name | Type | Description |
|---|---|---|
emailsrequired | string (email)[] | Each address is emailed an invite. Capped at 25 per call. |
DELETE /collections/{id}/guests/{guestId}
Remove a guest
Parameters
| Name | Type | Description |
|---|---|---|
id (path)required | string | Collection id. Never a slug — see the Concepts page. |
guestId (path)required | string | Guest id from the list endpoint. |
Contacts
The workspace address book.
GET /contacts
List contacts
POST /contacts
Create a contact
Body (JSON)
| Name | Type | Description |
|---|---|---|
firstName | string | null | |
lastName | string | null | |
company | string | null | |
emailrequired | string | The only required field. Case-insensitive and unique per workspace. |
phone | string | null | |
type | string | null | client | colleague | partner | friend | family | other. Unknown values become "other". |
GET /contacts/{id}
Get a contact
Parameters
| Name | Type | Description |
|---|---|---|
id (path)required | string | Contact id. |
PATCH /contacts/{id}
Replace a contact
A full replacement, not a merge: any field you omit is cleared. Send the whole contact back.
Parameters
| Name | Type | Description |
|---|---|---|
id (path)required | string | Contact id. |
Body (JSON)
| Name | Type | Description |
|---|---|---|
firstName | string | null | |
lastName | string | null | |
company | string | null | |
emailrequired | string | The only required field. Case-insensitive and unique per workspace. |
phone | string | null | |
type | string | null | client | colleague | partner | friend | family | other. Unknown values become "other". |
DELETE /contacts/{id}
Delete a contact
Revokes nothing — if they were invited to a collection, they keep access.
Parameters
| Name | Type | Description |
|---|---|---|
id (path)required | string | Contact id. |
Webhooks
Events pushed to your URL, signed with Yungle-Signature, or kept for you to pull. See the Webhooks guide.
GET /webhooks
List webhook endpoints
POST /webhooks
Create an endpoint
The response carries the signing secret, once. Free: one endpoint, transfer events.
Body (JSON)
| Name | Type | Description |
|---|---|---|
urlrequired | string | null | https URL to POST events to. null makes a pull endpoint: read its events from GET /webhooks/{id}/events. |
eventsrequired | "transfer.ready" | "transfer.downloaded" | "transfer.expiring" | "transfer.expired" | "collection.file_uploaded"[] | Event types to receive. Collection events need a paid plan. |
description | string | A note for yourself. |
GET /webhooks/{id}
Get an endpoint
Parameters
| Name | Type | Description |
|---|---|---|
id (path)required | string | Webhook endpoint id. |
PATCH /webhooks/{id}
Change, pause or resume an endpoint
Parameters
| Name | Type | Description |
|---|---|---|
id (path)required | string | Webhook endpoint id. |
Body (JSON)
| Name | Type | Description |
|---|---|---|
url | string | null | |
events | "transfer.ready" | "transfer.downloaded" | "transfer.expiring" | "transfer.expired" | "collection.file_uploaded"[] | Event types to receive. Collection events need a paid plan. |
description | string | null | |
enabled | boolean | false pauses deliveries; true resumes and resets the failure count. |
DELETE /webhooks/{id}
Delete an endpoint
Parameters
| Name | Type | Description |
|---|---|---|
id (path)required | string | Webhook endpoint id. |
POST /webhooks/{id}/rotate-secret
Replace the signing secret
Parameters
| Name | Type | Description |
|---|---|---|
id (path)required | string | Webhook endpoint id. |
POST /webhooks/{id}/test
Send a webhook.test event
Parameters
| Name | Type | Description |
|---|---|---|
id (path)required | string | Webhook endpoint id. |
GET /webhooks/{id}/deliveries
Recent delivery attempts
Parameters
| Name | Type | Description |
|---|---|---|
id (path)required | string | Webhook endpoint id. |
POST /webhooks/{id}/deliveries/{deliveryId}/retry
Redeliver an event
Parameters
| Name | Type | Description |
|---|---|---|
id (path)required | string | Webhook endpoint id. |
deliveryId (path)required | string | Delivery id. |
GET /webhooks/{id}/events
Read events (pull)
Oldest first, after cursor. nextCursor is returned even on the last page, so a poller resumes from it. Kept 30 days.
Parameters
| Name | Type | Description |
|---|---|---|
id (path)required | string | Webhook endpoint id. |
limit (query) | integer | Page size, 1–500. Defaults to 100. |
cursor (query) | string | The nextCursor from the previous page, unchanged. Opaque: never build one. |