Hanzo
OpenapiDataroom

Grants access: it mints a public share link over one data room (`dataroomId`)…

Grants access: it mints a public share link over one data room (`dataroomId`) or one document (`documentId`) — one of the two is required — and answers…

POST /v1/dataroom/links

Addresshttps://api.hanzo.ai/v1/dataroom/links
MethodPOST
Operationpost_dataroom_links
AuthAuthorization: Bearer $HANZO_API_KEY

Grants access: it mints a public share link over one data room (dataroomId) or one document (documentId) — one of the two is required — and answers with the link, whose id is the token a visitor opens it with.

This is how a party is let in. The controls are declared HERE and enforced on the viewer surface: password is hashed with bcrypt before storage and is never readable back, emailProtected (on by default) makes a visitor state an address, allowList/denyList narrow which addresses pass, allowDownload (off by default) governs downloads, and expiresAt closes the link. The target room or document must exist in the caller's own store or it is not found.

Creating a link also writes dataroom's ONE cross-tenant row: the link id to owning org mapping an anonymous visitor is routed through. That write is part of the operation — if it fails the call is 500 — so a link that no visitor could open is never handed back as usable.

The address a visitor later states is recorded UNVERIFIED, so a link gated only by email is openable by anyone the link reaches. Use a password for a link that must not travel.

Request

9 fields, body application/json (required).

FieldInTypeRequiredDescription
allowDownloadbodyanyAllowDownload permits downloading rather than viewing only.
allowListbodyany[]AllowList narrows which addresses pass the email gate.
dataroomIdbodyanyDataroomId is the room to share.
denyListbodyany[]DenyList rejects addresses, in the same three forms as the allow list.
documentIdbodyanyDocumentId shares a SINGLE document instead of a room.
emailProtectedbodyanyEmailProtected makes a visitor state an address before entering.
expiresAtbodyanyExpiresAt closes the link, in unix milliseconds.
namebodyanyName labels the link.
passwordbodyanyPassword gates the link.

Response

StatusBodyMeaning
200dataroomLinkOneok

200 body — 15 fields.

FieldInTypeAlwaysDescription
linkbodydataroomLink
link.allowDownloadbodybooleanAllowDownload is whether a visitor may download, rather than only view.
link.allowListbodystring[]AllowList narrows which addresses pass the email gate. An entry may be a full address, an "@domain.com" suffix, or a bare "domain.com".
link.createdAtbodyintegerCreatedAt is when the link was minted, in unix milliseconds.
link.dataroomIdbodystringDataroomId is the room the link opens, null for a single-document link.
link.denyListbodystring[]DenyList rejects addresses, in the same three forms as the allow list, and is checked BEFORE it — so deny always wins.
link.documentIdbodystringDocumentId is the document the link opens, null for a room link.
link.emailProtectedbodybooleanEmailProtected is whether a visitor must state an address to enter.
link.expiresAtbodyintegerExpiresAt is when the link closes, in unix milliseconds; null never expires.
link.hasPasswordbodybooleanHasPassword reports THAT a password is set.
link.idbodystringID is the link id — the public token a visitor opens the room with.
link.isArchivedbodybooleanIsArchived is whether the link has been retired.
link.linkTypebodystringLinkType is DATAROOM_LINK or DOCUMENT_LINK.
link.namebodystringName is the link's label, null when none was given.
link.updatedAtbodyintegerUpdatedAt is when the link last changed, in unix milliseconds.

Failure carries the platform error shape — see Errors.

Examples

hanzo dataroom links create

Dataroom API · All Hanzo APIs · Interactive reference

How is this guide?

On this page