Skip to main content
POST
/
api
/
contacts
/
{contactId}
/
documents
Save an existing R2 object as a contact document
curl --request POST \
  --url https://your-instance.example.com/api/contacts/{contactId}/documents \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "storageKey": "org/64f0a1b2c3d4e5f6a7b8c9d3/contact/64f0a1b2c3d4e5f6a7b8c9d0/2026/id-proof.pdf",
  "filename": "id-proof.pdf",
  "contentType": "application/pdf",
  "size": 184320,
  "documentType": "ID Proof",
  "notes": "Driver license, front + back"
}
'
{
  "success": true,
  "document": {
    "_id": "64f0a1b2c3d4e5f6a7b8ca40",
    "storageKey": "org/64f0a1b2c3d4e5f6a7b8c9d3/contact/64f0a1b2c3d4e5f6a7b8c9d0/2026/id-proof.pdf",
    "filename": "id-proof.pdf",
    "contentType": "application/pdf",
    "documentType": "ID Proof"
  }
}

Documentation Index

Fetch the complete documentation index at: https://docs.tetherai.ca/llms.txt

Use this file to discover all available pages before exploring further.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Path Parameters

contactId
string
required

Body

application/json
storageKey
string
required

R2 storage key of the already-uploaded object.

filename
string
required
contentType
string
required
documentType
string
required

Must match a name in the organization's configured documentTypes.

size
integer

File size in bytes. If missing or 0, the server will attempt to look it up from R2.

sourceMessageId
string

Optional originating message id when the document was promoted from an attachment.

notes
string

Response

Document attached

success
enum<boolean>
required
Available options:
true
document
object
required
Example:
{
"_id": "64f0a1b2c3d4e5f6a7b8ca40",
"storageKey": "org/64f0a1b2c3d4e5f6a7b8c9d3/contact/64f0a1b2c3d4e5f6a7b8c9d0/2026/id-proof.pdf",
"filename": "id-proof.pdf",
"contentType": "application/pdf",
"size": 184320,
"documentType": "ID Proof",
"uploadedAt": "2026-05-12T10:00:00.000Z",
"uploadedBy": "64f0a1b2c3d4e5f6a7b8c9d4",
"notes": "Driver license, front + back",
"signedUrl": "https://example-r2.signed/.../id-proof.pdf?X-Amz-Expires=600"
}