Every resource in Dataroom is exposed under a REST endpoint group with a stable v1 contract. Authenticate with a Bearer token from Settings → API keys; grant the narrowest scope set that does the job.
Base URL
dataroom.corgi.com/api/v1Auth header
Authorization: BearerRate limit
120 req/min per key
Full interactive API reference
Browse the complete v1 contract — every endpoint, request and response schema, plus the MCP tool list — and try calls live.
For real or large files, skip base64 and use the presigned direct-to-storage flow. POST /v1/documents/uploads mints a one-time uploadUrl plus a headers map; PUT the bytes straight to storage, sending every header the response returned (Content-Type and, on encrypted S3, x-amz-server-side-encryption — each is signed, so a missing one fails with 403), e.g. curl -T file.pdf -H "Content-Type: <type>" -H "x-amz-server-side-encryption: AES256" "<uploadUrl>", then POST /v1/documents/uploads/finalize with the returned storageKey and token to register the document. Pass documentId to finalize to record a new version of an existing document instead. Both steps take the documents:write scope. Inline base64 on POST /v1/documents stays available for small files, and downloads return a short-lived presigned URL rather than raw bytes.
10 resources, 18 scopes total. Read scopes are append-only; write scopes are ringfenced by resource, no implicit "*" wildcards.
/documentsUpload PDFs, decks, videos, and other source files; read metadata, thumbnails, and pages.
documents:readdocuments:writeRepresentative endpoints
GET /documentsPOST /documentsGET /documents/{id}GET /documents/{id}/pages/linksCreate and manage share links, gates (email, password, NDA), expiry, and visitor caps.
links:readlinks:writeRepresentative endpoints
GET /linksPOST /linksPATCH /links/{id}DELETE /links/{id}/RoomsBuild branded, gated rooms with folder hierarchy, watermarks, NDAs, Q&A, and audit logs.
datarooms:readdatarooms:writedatarooms:permissionsRepresentative endpoints
GET /roomsPOST /roomsPOST /rooms/{id}/foldersPOST /rooms/{id}/filesPOST /rooms/{id}/groupsPUT /rooms/{id}/permissions/agreementsSend agreements for e-signature, place fields, track recipient progress, and pull signed PDFs.
envelopes:readenvelopes:writeRepresentative endpoints
GET /agreementsPOST /agreementsPOST /agreements/{id}/sendGET /agreements/{id}/document/proposalsGenerate interactive proposal pages with pricing tables, e-signature, and acceptance tracking.
proposals:readproposals:writeRepresentative endpoints
GET /proposalsPOST /proposalsPOST /proposals/{id}/send/templatesRead and manage reusable agreement templates the workspace has saved.
templates:readtemplates:writeRepresentative endpoints
GET /templatesGET /templates/{id}POST /templatesPATCH /templates/{id}DELETE /templates/{id}/contactsManage CRM contacts, accounts, visitor cohorts, tags, and properties.
contacts:readcontacts:writeRepresentative endpoints
GET /contactsPOST /contactsPATCH /contacts/{id}POST /contacts/{id}/tags/analyticsread-onlyPull visit-level data, per-page heatmaps, dropoff, and aggregate metrics for any link or room.
analytics:readRepresentative endpoints
GET /analytics/links/{id}GET /analytics/links/{id}/visitorsGET /analytics/visits/{id}GET /analytics/rooms/{id}/webhooksRegister endpoints to receive real-time events (link.viewed, envelope.signed, …).
webhooks:writeRepresentative endpoints
POST /webhooksGET /webhooksDELETE /webhooks/{id}/billingread-onlyRead subscription state, plan, seat count, current usage, and invoice history.
billing:readRepresentative endpoints
GET /billing/subscriptionGET /billing/invoicesGET /billing/usageNote: the Agreements resource uses the envelopes:read / envelopes:write scopes for backward-compatibility — the scope strings intentionally keep the legacy envelopes: prefix so already-minted keys keep working.
The Rooms resource also exposes datarooms:permissions — a single management scope for visitor groups, members, and the who-sees-what permission matrix. It exposes visitor emails, so group and roster reads require it too (plain datarooms:read can't reach them).
Need a scope or endpoint we don't document yet?
The scope catalog ships in lib/api-key-scopes.ts and is the single source of truth for both this page and the in-app picker. Open a PR or file a request , we'll wire it in.