API · Exit · Corporate Transactions
Create a data room.
Creates a permissioned virtual data room scoped to the corporate transaction. Counterparty users access the room via StakeholderPortalSession (or hosted URL) and read documents through the AccessGrant records you create on each document. Every view is logged on the entity's audit feed and emitted as a data_room.access event. Watermarking, expiration, and per-grant download controls are enforced server-side.
Last updated
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
namestringRequiredexpires_atintegerOptionalUnix timestamp at which the data room auto-revokes all access.
watermark_emailbooleanOptionalWhen true, every rendered PDF is watermarked with the viewing user's email.
initial_documentsarray<string>OptionalDocuments to add to the room at creation. Equivalent to creating each AccessGrant separately.
metadataobjectOptionalFlat string-to-string map. Up to 50 keys. Keys: max 40 chars, charset
[A-Za-z0-9_\\-.]. Values: max 500 chars. Keys prefixed matter_ are reserved
for platform use. Metadata is retrievable but not filterable via query params.
Response Body
application/json
application/problem+json
application/problem+json
application/problem+json
Request
curl -X POST "https://api.mattermode.com/v1/corporate_transactions/{id}/data_rooms" \ -H "Content-Type: application/json" \ -d '{ "name": "Waypoint Systems, Inc.", "expires_at": 1745539200, "watermark_email": true, "initial_documents": [ "string" ], "metadata": {} }'const body = JSON.stringify({ "name": "Waypoint Systems, Inc.", "expires_at": 1745539200, "watermark_email": true, "initial_documents": [ "string" ], "metadata": {}})fetch("https://api.mattermode.com/v1/corporate_transactions/{id}/data_rooms", { method: "POST", headers: { "Content-Type": "application/json" }, body})package mainimport ( "fmt" "net/http" "io/ioutil" "strings")func main() { url := "https://api.mattermode.com/v1/corporate_transactions/{id}/data_rooms" body := strings.NewReader(`{ "name": "Waypoint Systems, Inc.", "expires_at": 1745539200, "watermark_email": true, "initial_documents": [ "string" ], "metadata": {} }`) req, _ := http.NewRequest("POST", url, body) req.Header.Add("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := ioutil.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body))}import requestsheaders = { "Authorization": "Bearer sk_test_4eC39HqLyjWDarjtT1zdp7dc", "Matter-Version": "2026-06-10", "Idempotency-Key": "ee7c3a9b-3f1a-4d8e-9b2a-7c5e1f0a2d4b",}payload = { "name": "Waypoint Systems, Inc.", "expires_at": 1745539200, "watermark_email": true, "initial_documents": [ "string" ], "metadata": {}}resp = requests.post( "https://api.mattermode.com/v1/corporate_transactions/ctx_T6yLpQ2w/data_rooms", headers=headers, json=payload,)resp.raise_for_status()print(resp.json())import java.net.URI;import java.net.http.HttpClient;import java.net.http.HttpRequest;import java.net.http.HttpResponse;import java.net.http.HttpResponse.BodyHandlers;import java.time.Duration;import java.net.http.HttpRequest.BodyPublishers;var body = BodyPublishers.ofString("""{ "name": "Waypoint Systems, Inc.", "expires_at": 1745539200, "watermark_email": true, "initial_documents": [ "string" ], "metadata": {}}""");HttpClient client = HttpClient.newBuilder() .connectTimeout(Duration.ofSeconds(10)) .build();HttpRequest.Builder requestBuilder = HttpRequest.newBuilder() .uri(URI.create("https://api.mattermode.com/v1/corporate_transactions/{id}/data_rooms")) .header("Content-Type", "application/json") .POST(body) .build();try { HttpResponse<String> response = client.send(requestBuilder.build(), BodyHandlers.ofString()); System.out.println("Status code: " + response.statusCode()); System.out.println("Response body: " + response.body());} catch (Exception e) { e.printStackTrace();}using System;using System.Net.Http;using System.Text;var body = new StringContent("""{ "name": "Waypoint Systems, Inc.", "expires_at": 1745539200, "watermark_email": true, "initial_documents": [ "string" ], "metadata": {}}""", Encoding.UTF8, "application/json");var client = new HttpClient();var response = await client.PostAsync("https://api.mattermode.com/v1/corporate_transactions/{id}/data_rooms", body);var responseBody = await response.Content.ReadAsStringAsync();curl --request POST 'https://api.mattermode.com/v1/corporate_transactions/ctx_T6yLpQ2w/data_rooms' \ --header 'Authorization: Bearer sk_test_4eC39HqLyjWDarjtT1zdp7dc' \ --header 'Matter-Version: 2026-06-10' \ --header 'Idempotency-Key: ee7c3a9b-3f1a-4d8e-9b2a-7c5e1f0a2d4b' \ --header 'Content-Type: application/json' \ --data '{ "name": "Waypoint Systems, Inc.", "expires_at": 1745539200, "watermark_email": true, "initial_documents": [ "string" ], "metadata": {}}'const response = await fetch("https://api.mattermode.com/v1/corporate_transactions/ctx_T6yLpQ2w/data_rooms", { method: "POST", headers: { "Authorization": "Bearer sk_test_4eC39HqLyjWDarjtT1zdp7dc", "Matter-Version": "2026-06-10", "Idempotency-Key": "ee7c3a9b-3f1a-4d8e-9b2a-7c5e1f0a2d4b", "Content-Type": "application/json", }, body: JSON.stringify({ "name": "Waypoint Systems, Inc.", "expires_at": 1745539200, "watermark_email": true, "initial_documents": [ "string" ], "metadata": {} }),});if (!response.ok) { throw new Error(`Matter API ${response.status}: ${await response.text()}`);}const data = await response.json();console.log(data);Response
application/json{
"id": "string",
"object": "data_room",
"transaction_id": "string",
"name": "Waypoint Systems, Inc.",
"status": "active",
"expires_at": 1745539200,
"watermark_email": false,
"document_ids": [
"string"
],
"metadata": {},
"created": 1745539200,
"updated": 1745539200,
"livemode": false
}{
"type": "https://mattermode.com/docs/errors/invalid_request",
"title": "Invalid request",
"status": 400,
"code": "invalid_request",
"detail": "Request body could not be parsed as JSON.",
"doc_url": "https://mattermode.com/docs/guides/errors#invalid_request",
"request_id": "req_Qw9xYz8A"
}{
"type": "https://mattermode.com/docs/errors/authentication_required",
"title": "Authentication required",
"status": 401,
"code": "authentication_required",
"detail": "No bearer token was supplied. Pass `Authorization: Bearer sk_live_...` on every request.",
"doc_url": "https://mattermode.com/docs/guides/errors#authentication_required",
"request_id": "req_Qw9xYz8A"
}{
"type": "https://mattermode.com/docs/errors/not_found",
"title": "Not found",
"status": 404,
"code": "not_found",
"detail": "No entity with id `ent_Nq3KcAbc` is visible to this token.",
"doc_url": "https://mattermode.com/docs/guides/errors#not_found",
"request_id": "req_Qw9xYz8A"
}