Skip to main content
POST
/
v2
/
chat
/
completions
TypeScript
import { createTelaClient } from '@meistrari/tela-sdk-js'

const tela = createTelaClient({
    apiKey: process.env.TELA_API_KEY,
})

const completion = await tela.completions.create<{ yourvariable: string }>({
  canvasId: process.env.TELA_CANVAS_ID,
  variables: {
      yourvariable: 'your value',
  },
})
{
  "id": "crsv-i52z8vnqekc",
  "object": "chat.completion",
  "created": 1728399621,
  "choices": [
    {
      "message": {
        "role": "assistant",
        "content": {
          "text": "The content of the PDF is not provided, so a summary cannot be generated."
        }
      }
    }
  ]
}

Files

The Tela SDKs allows you to easily process files, such as PDFs, by creating a completion. You can use various file sources including public URLs, vault URLs from uploaded files, or pass multiple files in a single variable.
When passing file URLs directly (without using the SDK’s .createFile() method), you must wrap them in an object with a file_url property. The .createFile() method handles this formatting automatically.

Single File Processing

Below is an example of processing a single PDF document:
import { createTelaClient } from '@meistrari/tela-sdk-js'
import type { TelaFile } from '@meistrari/tela-sdk-js'

const tela = createTelaClient({
    apiKey: process.env.TELA_API_KEY,
})

const completion = await tela.completions.create<{ document: TelaFile }, { fileSummary: string }>({
    canvasId: process.env.TELA_CANVAS_ID,
    variables: {
        document: tela.createFile('https://www.wmaccess.com/downloads/sample-invoice.pdf'), // It is possible to pass a URL, Buffer, Blob, etc.
    },
})

Using Vault URLs

After uploading a file using the /v3/files endpoint, you can use the vault URL in your completions. When not using the SDK’s .createFile() method, you need to wrap the URL in an object with a file_url property:
// First, upload a file and get the file ID
const fileId = '3fa85f64-5717-4562-b3fc-2c963f66afa6' // UUID from file upload

const completion = await tela.completions.create({
    canvasId: process.env.TELA_CANVAS_ID,
    variables: {
        document: { file_url: `vault://${fileId}` }, // Using vault:// URL as object
    },
})

Multiple Files in a Single Variable

You can pass multiple file URLs in a single variable as an array:
const completion = await tela.completions.create({
    canvasId: process.env.TELA_CANVAS_ID,
    variables: {
        documents: [
            { file_url: 'https://example.com/file1.pdf' },
            { file_url: 'https://example.com/file2.pdf' },
            { file_url: 'vault://550e8400-e29b-41d4-a716-446655440000' }, // Mix of public and vault URLs
        ],
    },
})

Streaming

The Tela SDKs provides a stream option, which allows you to consume the stream of the completion. Below is an example of consuming a stream of the completion.
import fs from 'node:fs'
import { createTelaClient } from '@meistrari/tela-sdk-js'
import type { TelaFile } from '@meistrari/tela-sdk-js'

const tela = createTelaClient({
    apiKey: process.env.TELA_API_KEY,
})

const PATH = 'examples/stream/sample-invoice.pdf'
const fileStream = fs.createReadStream(PATH)

const completion = await tela.completions.create<{ document: TelaFile }, { fileSummary: string }>({
    canvasId: process.env.TELA_CANVAS_ID,
    variables: {
        document: tela.createFile(fileStream),
    },
    stream: true,
})

for await (const chunk of completion) {
    console.log(JSON.stringify(chunk))
}

Webhook

The Tela SDKs provides a webhookUrl option, which allows you to receive a webhook when the completion is finished. Below is an example of receiving a webhook when the completion is finished.
import { createTelaClient } from '@meistrari/tela-sdk-js'

const tela = createTelaClient({
    apiKey: process.env.TELA_API_KEY,
})

const webhook = await tela.completions.create({
    canvasId: process.env.TELA_CANVAS_ID,
    variables: {
        document: tela.createFile('https://www.wmaccess.com/downloads/sample-invoice.pdf'),
    },
    webhookUrl: 'https://webhook.site/12345',
})
For detailed information about the webhook payload structure, see the Webhook Payload Structure section in the completion API guide.

Body

application/json

The canvas to execute

canvas_id
string
required

The ID of the canvas to execute

variables
object

The variables to pass to the canvas

messages
object[]
webhook_url
string

The URL to send webhooks to

stream
boolean

Whether to stream the response

async
boolean

Whether to make the execution async

override
object

Override default settings specified in the canvas. This allows for fine-tuning the completion behavior for this specific request.

Response

Successful completions

id
string

A unique identifier for this completion

object
string

The object type, which is always "chat.completion"

created
integer

The Unix timestamp (in seconds) of when the completion was created

choices
object[]

An array of completion choices generated by the model