Upload a Document

Documents are uploaded to a specific schema within a workspace. Each document is scoped to an environment (defaults to production).

Upload a file

Pass a Blob or File object to the SDK:

import { readFileSync } from 'node:fs';

const file = new Blob([readFileSync('./invoice.pdf')], {
  type: 'application/pdf',
});

const document = await client.documents.create('my-workspace', 'invoice', {
  file,
  fileName: 'invoice.pdf',
});

console.log(document.id); // "doc_abc123"
console.log(document.pageCount); // 3

Upload text content

For plain text or pre-processed content, you can upload a string directly:

const document = await client.documents.create('my-workspace', 'invoice', {
  content: 'Invoice #1234\nDate: 2024-03-15\nTotal: $1,250.00',
  fileName: 'invoice.txt',
});

Upload with curl

curl -X POST https://api.tracore.io/workspaces/my-workspace/schemas/invoice/documents \
  -H "x-api-key: dsk_your_api_key_here" \
  -F "file=@invoice.pdf"

Environment scoping

Documents are scoped to an environment. Pass the env parameter to target a specific one:

// Upload to the development environment
const document = await client.documents.create('my-workspace', 'invoice', {
  file,
  fileName: 'invoice.pdf',
  env: 'development',
});
# Upload to staging via curl
curl -X POST "https://api.tracore.io/workspaces/my-workspace/schemas/invoice/documents?env=staging" \
  -H "x-api-key: dsk_your_api_key_here" \
  -F "file=@invoice.pdf"

If omitted, the environment defaults to production.

Inline upload and extract

You can upload a document and start extraction in a single request using the extract endpoint. See Extract & Poll for details.