thesis Developers
API ReferenceThesis Core API

Thesis Core API

The Thesis Core API for chat and agent operations

Alert

List all alerts

get/alert

Query parameters

unreadOnlybooleanOptional

Returns

200List of alerts
GET
GET /alert HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Responsejson
[
  {
    "id": "id_1a2b3c",
    "message": "message",
    "severity": "fatal",
    "readAt": 1,
    "createdAt": 1
  }
]

Get an alert by ID

get/alert/{id}

Path parameters

idstringRequired

Returns

200Alert
GET
GET /alert/{id} HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Responsejson
{
  "id": "id_1a2b3c",
  "message": "message",
  "severity": "fatal",
  "readAt": 1,
  "createdAt": 1
}

Mark an alert as read

post/alert/{id}/mark-read

Path parameters

idstringRequired

Returns

200Updated alert
POST
POST /alert/{id}/mark-read HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Responsejson
{
  "id": "id_1a2b3c",
  "message": "message",
  "severity": "fatal",
  "readAt": 1,
  "createdAt": 1
}

Mark an alert as unread

post/alert/{id}/mark-unread

Path parameters

idstringRequired

Returns

200Updated alert
POST
POST /alert/{id}/mark-unread HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Responsejson
{
  "id": "id_1a2b3c",
  "message": "message",
  "severity": "fatal",
  "readAt": 1,
  "createdAt": 1
}

Mark all alerts as read

post/alert/mark-all-read

Returns

200Count of marked alerts
POST
POST /alert/mark-all-read HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Responsejson
{
  "count": 1
}

Chat

Create a new chat or retrieve existing chat by ID

post/chat

Returns

200Chat
POST
POST /chat HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Responsejson
{
  "id": "id_1a2b3c",
  "title": "title",
  "notebookPath": "notebookPath",
  "createdAt": 1,
  "updatedAt": 1
}

List all chats

get/chat

Returns

200List of chats
GET
GET /chat HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Responsejson
[
  {
    "id": "id_1a2b3c",
    "title": "title",
    "notebookPath": "notebookPath",
    "createdAt": 1,
    "updatedAt": 1
  }
]

Get a chat by ID

get/chat/{chatId}

Path parameters

chatIdstringRequired

Returns

200Chat
GET
GET /chat/{chatId} HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Responsejson
{
  "id": "id_1a2b3c",
  "title": "title",
  "notebookPath": "notebookPath",
  "createdAt": 1,
  "updatedAt": 1
}

Update a chat

patch/chat/{chatId}

Path parameters

chatIdstringRequired

Request body

titlestringOptional
notebookPathstringOptional

Returns

200Updated chat
PATCH
PATCH /chat/{chatId} HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Content-Type: application/json

{
  "title": "title",
  "notebookPath": "notebookPath"
}
Responsejson
{
  "id": "id_1a2b3c",
  "title": "title",
  "notebookPath": "notebookPath",
  "createdAt": 1,
  "updatedAt": 1
}

Get a chat by notebook path

get/chat/by-notebook/{notebookPath}

Path parameters

notebookPathstringRequired

Returns

200Chat
GET
GET /chat/by-notebook/{notebookPath} HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Responsejson
{
  "id": "id_1a2b3c",
  "title": "title",
  "notebookPath": "notebookPath",
  "createdAt": 1,
  "updatedAt": 1
}

Get chat items by chat ID

get/chat/items/{chatId}

Path parameters

chatIdstringRequired

Returns

200Chat items
GET
GET /chat/items/{chatId} HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Responsejson
[
  {
    "id": "id_1a2b3c",
    "chatId": "chatId",
    "role": "role",
    "content": "content",
    "createdAt": 1
  }
]

Stream chat items by chat ID

post/chat/items/stream/{chatId}

Path parameters

chatIdstringRequired

Returns

200SSE stream of chat items
POST
POST /chat/items/stream/{chatId} HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY

Subscribe to chat item updates via SSE

get/chat/items/subscribe/{chatId}

Path parameters

chatIdstringRequired

Returns

200SSE stream
GET
GET /chat/items/subscribe/{chatId} HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY

Session

Create a new session

post/session

Request body

sessionIdstringRequired
hashedSecretstringRequired
userIdstringRequired

Returns

200Created session
POST
POST /session HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Content-Type: application/json

{
  "sessionId": "sessionId",
  "hashedSecret": "hashedSecret",
  "userId": "userId"
}
Responsejson
{
  "id": "id_1a2b3c",
  "userId": "userId",
  "secret": "secret",
  "deletedAt": 1,
  "createdAt": 1,
  "updatedAt": 1
}

List all sessions

get/session

Returns

200List of sessions
GET
GET /session HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Responsejson
[
  {
    "id": "id_1a2b3c",
    "userId": "userId",
    "secret": "secret",
    "deletedAt": 1,
    "createdAt": 1,
    "updatedAt": 1
  }
]

Get a session by ID

get/session/{id}

Path parameters

idstringRequired

Returns

200Session
GET
GET /session/{id} HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Responsejson
{
  "id": "id_1a2b3c",
  "userId": "userId",
  "secret": "secret",
  "deletedAt": 1,
  "createdAt": 1,
  "updatedAt": 1
}

Get a session by session ID

get/session/by-session-id/{sessionId}

Path parameters

sessionIdstringRequired

Returns

200Session
GET
GET /session/by-session-id/{sessionId} HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Responsejson
{
  "id": "id_1a2b3c",
  "userId": "userId",
  "secret": "secret",
  "deletedAt": 1,
  "createdAt": 1,
  "updatedAt": 1
}

Dataset

Create a new dataset

post/dataset

Returns

200Created dataset
POST
POST /dataset HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Responsejson
{
  "id": "id_1a2b3c",
  "name": "name",
  "description": "description",
  "structured": false,
  "path": "path",
  "format": "format",
  "version": 1,
  "rowCount": 1,
  "columnCount": 1,
  "sizeBytes": 1,
  "schema": "schema",
  "files": "files",
  "fileCount": 1,
  "parentId": "parentId",
  "chatId": "chatId",
  "cloudId": "cloudId",
  "createdAt": 1,
  "updatedAt": 1
}

List all datasets

get/dataset

Returns

200List of datasets
GET
GET /dataset HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Responsejson
[
  {
    "id": "id_1a2b3c",
    "name": "name",
    "description": "description",
    "structured": false,
    "path": "path",
    "format": "format",
    "version": 1,
    "rowCount": 1,
    "columnCount": 1,
    "sizeBytes": 1,
    "schema": "schema",
    "files": "files",
    "fileCount": 1,
    "parentId": "parentId",
    "chatId": "chatId",
    "cloudId": "cloudId",
    "createdAt": 1,
    "updatedAt": 1
  }
]

Upload a dataset file

post/dataset/upload

Returns

200Uploaded dataset
POST
POST /dataset/upload HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Responsejson
{
  "id": "id_1a2b3c",
  "name": "name",
  "description": "description",
  "structured": false,
  "path": "path",
  "format": "format",
  "version": 1,
  "rowCount": 1,
  "columnCount": 1,
  "sizeBytes": 1,
  "schema": "schema",
  "files": "files",
  "fileCount": 1,
  "parentId": "parentId",
  "chatId": "chatId",
  "cloudId": "cloudId",
  "createdAt": 1,
  "updatedAt": 1
}

Upload multiple files and combine into one dataset

post/dataset/upload-multiple

Returns

200Created dataset
POST
POST /dataset/upload-multiple HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Responsejson
{
  "id": "id_1a2b3c",
  "name": "name",
  "description": "description",
  "structured": false,
  "path": "path",
  "format": "format",
  "version": 1,
  "rowCount": 1,
  "columnCount": 1,
  "sizeBytes": 1,
  "schema": "schema",
  "files": "files",
  "fileCount": 1,
  "parentId": "parentId",
  "chatId": "chatId",
  "cloudId": "cloudId",
  "createdAt": 1,
  "updatedAt": 1
}

Create a dataset from a file path

post/dataset/from-path

Request body

pathstringRequired
namestringOptional
descriptionstringOptional
chatIdstringOptional

Returns

200Created dataset
POST
POST /dataset/from-path HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Content-Type: application/json

{
  "path": "path",
  "name": "name",
  "description": "description",
  "chatId": "chatId"
}
Responsejson
{
  "id": "id_1a2b3c",
  "name": "name",
  "description": "description",
  "structured": false,
  "path": "path",
  "format": "format",
  "version": 1,
  "rowCount": 1,
  "columnCount": 1,
  "sizeBytes": 1,
  "schema": "schema",
  "files": "files",
  "fileCount": 1,
  "parentId": "parentId",
  "chatId": "chatId",
  "cloudId": "cloudId",
  "createdAt": 1,
  "updatedAt": 1
}

Create a dataset from a directory path

post/dataset/from-directory

Request body

pathstringRequired
namestringOptional
descriptionstringOptional
chatIdstringOptional

Returns

200Created dataset
POST
POST /dataset/from-directory HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Content-Type: application/json

{
  "path": "path",
  "name": "name",
  "description": "description",
  "chatId": "chatId"
}
Responsejson
{
  "id": "id_1a2b3c",
  "name": "name",
  "description": "description",
  "structured": false,
  "path": "path",
  "format": "format",
  "version": 1,
  "rowCount": 1,
  "columnCount": 1,
  "sizeBytes": 1,
  "schema": "schema",
  "files": "files",
  "fileCount": 1,
  "parentId": "parentId",
  "chatId": "chatId",
  "cloudId": "cloudId",
  "createdAt": 1,
  "updatedAt": 1
}

Get a dataset by ID

get/dataset/{id}

Path parameters

idstringRequired

Returns

200Dataset
GET
GET /dataset/{id} HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Responsejson
{
  "id": "id_1a2b3c",
  "name": "name",
  "description": "description",
  "structured": false,
  "path": "path",
  "format": "format",
  "version": 1,
  "rowCount": 1,
  "columnCount": 1,
  "sizeBytes": 1,
  "schema": "schema",
  "files": "files",
  "fileCount": 1,
  "parentId": "parentId",
  "chatId": "chatId",
  "cloudId": "cloudId",
  "createdAt": 1,
  "updatedAt": 1
}

Update a dataset

put/dataset/{id}

Path parameters

idstringRequired

Request body

namestringOptional
descriptionstringOptional
cloudIdstringOptional

Returns

200Updated dataset
PUT
PUT /dataset/{id} HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Content-Type: application/json

{
  "name": "name",
  "description": "description",
  "cloudId": "cloudId"
}
Responsejson
{
  "id": "id_1a2b3c",
  "name": "name",
  "description": "description",
  "structured": false,
  "path": "path",
  "format": "format",
  "version": 1,
  "rowCount": 1,
  "columnCount": 1,
  "sizeBytes": 1,
  "schema": "schema",
  "files": "files",
  "fileCount": 1,
  "parentId": "parentId",
  "chatId": "chatId",
  "cloudId": "cloudId",
  "createdAt": 1,
  "updatedAt": 1
}

Delete a dataset

delete/dataset/{id}

Path parameters

idstringRequired

Returns

204Deleted
DELETE
DELETE /dataset/{id} HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY

Download a dataset file

get/dataset/{id}/download

Path parameters

idstringRequired

Returns

200Dataset file binary
GET
GET /dataset/{id}/download HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY

Add files to an existing dataset

post/dataset/{id}/files

Path parameters

idstringRequired

Returns

200Updated dataset
POST
POST /dataset/{id}/files HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Responsejson
{
  "id": "id_1a2b3c",
  "name": "name",
  "description": "description",
  "structured": false,
  "path": "path",
  "format": "format",
  "version": 1,
  "rowCount": 1,
  "columnCount": 1,
  "sizeBytes": 1,
  "schema": "schema",
  "files": "files",
  "fileCount": 1,
  "parentId": "parentId",
  "chatId": "chatId",
  "cloudId": "cloudId",
  "createdAt": 1,
  "updatedAt": 1
}

Remove a file from a dataset

delete/dataset/{id}/files/{filePath}

Path parameters

idstringRequired
filePathstringRequired

Returns

200Updated dataset
DELETE
DELETE /dataset/{id}/files/{filePath} HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Responsejson
{
  "id": "id_1a2b3c",
  "name": "name",
  "description": "description",
  "structured": false,
  "path": "path",
  "format": "format",
  "version": 1,
  "rowCount": 1,
  "columnCount": 1,
  "sizeBytes": 1,
  "schema": "schema",
  "files": "files",
  "fileCount": 1,
  "parentId": "parentId",
  "chatId": "chatId",
  "cloudId": "cloudId",
  "createdAt": 1,
  "updatedAt": 1
}

Get notebooks associated with a dataset

get/dataset/{id}/notebooks

Path parameters

idstringRequired

Returns

200Notebook associations
GET
GET /dataset/{id}/notebooks HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Responsejson
[
  {
    "notebookPath": "notebookPath",
    "notebookName": "notebookName",
    "lastModified": 1
  }
]

Associate a notebook with a dataset

post/dataset/{id}/notebooks

Path parameters

idstringRequired

Request body

notebookPathstringRequired

Returns

200Associated
POST
POST /dataset/{id}/notebooks HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Content-Type: application/json

{
  "notebookPath": "notebookPath"
}

Remove a notebook association from a dataset

delete/dataset/{id}/notebooks/{notebookPath}

Path parameters

idstringRequired
notebookPathstringRequired

Returns

204Removed
DELETE
DELETE /dataset/{id}/notebooks/{notebookPath} HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY

Experiment

Create a new experiment

post/experiment

Request body

namestringRequired
instructionsstringRequired
notebookPathstringRequired
modelstringOptional
sessionIdstringOptional
sessionSecretstringOptional

Returns

200Created experiment
POST
POST /experiment HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Content-Type: application/json

{
  "name": "name",
  "instructions": "instructions",
  "notebookPath": "notebookPath",
  "model": "model",
  "sessionId": "sessionId",
  "sessionSecret": "sessionSecret"
}
Responsejson
{
  "experimentId": "experimentId",
  "chatId": "chatId",
  "notebookId": "notebookId",
  "status": "pending"
}

List experiments

get/experiment

Query parameters

statusstringOptional

Returns

200List of experiments
GET
GET /experiment HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Responsejson
[
  {
    "id": "id_1a2b3c",
    "name": "name",
    "status": "pending",
    "resultsOutput": null,
    "resultsError": null,
    "resultsSummary": null,
    "approvedAt": 1,
    "startedAt": 1,
    "completedAt": 1,
    "failedAt": 1,
    "cancelledAt": 1,
    "pausedAt": 1,
    "chatId": "chatId",
    "notebookId": "notebookId",
    "createdAt": 1,
    "updatedAt": 1
  }
]

Get an experiment by ID

get/experiment/{id}

Path parameters

idstringRequired

Returns

200Experiment
GET
GET /experiment/{id} HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Responsejson
{
  "id": "id_1a2b3c",
  "name": "name",
  "status": "pending",
  "resultsOutput": null,
  "resultsError": null,
  "resultsSummary": null,
  "approvedAt": 1,
  "startedAt": 1,
  "completedAt": 1,
  "failedAt": 1,
  "cancelledAt": 1,
  "pausedAt": 1,
  "chatId": "chatId",
  "notebookId": "notebookId",
  "createdAt": 1,
  "updatedAt": 1
}

Pause an experiment

post/experiment/{id}/pause

Path parameters

idstringRequired

Returns

200Paused experiment
POST
POST /experiment/{id}/pause HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Responsejson
{
  "id": "id_1a2b3c",
  "name": "name",
  "status": "pending",
  "resultsOutput": null,
  "resultsError": null,
  "resultsSummary": null,
  "approvedAt": 1,
  "startedAt": 1,
  "completedAt": 1,
  "failedAt": 1,
  "cancelledAt": 1,
  "pausedAt": 1,
  "chatId": "chatId",
  "notebookId": "notebookId",
  "createdAt": 1,
  "updatedAt": 1
}

Get experiment control plane data

get/experiment/{id}/control-plane

Path parameters

idstringRequired

Returns

200Control plane data
GET
GET /experiment/{id}/control-plane HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Responsejson
{
  "experiment": {
    "id": "id_1a2b3c",
    "name": "name",
    "status": "pending",
    "resultsOutput": null,
    "resultsError": null,
    "resultsSummary": null,
    "approvedAt": 1,
    "startedAt": 1,
    "completedAt": 1,
    "failedAt": 1,
    "cancelledAt": 1,
    "pausedAt": 1,
    "chatId": "chatId",
    "notebookId": "notebookId",
    "createdAt": 1,
    "updatedAt": 1
  },
  "metrics": [
    {
      "id": "id_1a2b3c",
      "experimentId": "experimentId",
      "name": "name",
      "value": "value",
      "timestamp": 1
    }
  ],
  "logs": [
    {
      "id": "id_1a2b3c",
      "experimentId": "experimentId",
      "message": "message",
      "timestamp": 1
    }
  ],
  "events": [
    {
      "id": "id_1a2b3c",
      "experimentId": "experimentId",
      "data": null,
      "timestamp": 1
    }
  ]
}

Ingest experiment metrics

post/experiment/ingest/metric

Request body

idstringRequired
experimentIdstringRequired
namestringRequired
valuestringRequired
timestampnumberRequired

Returns

200Metric ingested
POST
POST /experiment/ingest/metric HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Content-Type: application/json

{
  "id": "id_1a2b3c",
  "experimentId": "experimentId",
  "name": "name",
  "value": "value",
  "timestamp": 1
}

Ingest experiment events

post/experiment/ingest/event

Request body

idstringRequired
experimentIdstringRequired
dataRequired
timestampnumberRequired

Returns

200Event ingested
POST
POST /experiment/ingest/event HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Content-Type: application/json

{
  "id": "id_1a2b3c",
  "experimentId": "experimentId",
  "data": null,
  "timestamp": 1
}

Ingest experiment log

post/experiment/ingest/log

Request body

idstringRequired
experimentIdstringRequired
messagestringRequired
timestampnumberRequired

Returns

200Log ingested
POST
POST /experiment/ingest/log HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Content-Type: application/json

{
  "id": "id_1a2b3c",
  "experimentId": "experimentId",
  "message": "message",
  "timestamp": 1
}

Model

List all models

get/model

Returns

200List of models
GET
GET /model HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Responsejson
[
  {
    "id": "id_1a2b3c",
    "name": "name",
    "description": "description",
    "path": "path",
    "sizeBytes": 1,
    "chatId": "chatId",
    "cloudId": "cloudId",
    "createdAt": 1,
    "updatedAt": 1
  }
]

Upload a model file

post/model/upload

Returns

200Uploaded model
POST
POST /model/upload HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Responsejson
{
  "id": "id_1a2b3c",
  "name": "name",
  "description": "description",
  "path": "path",
  "sizeBytes": 1,
  "chatId": "chatId",
  "cloudId": "cloudId",
  "createdAt": 1,
  "updatedAt": 1
}

Get a model by ID

get/model/{id}

Path parameters

idstringRequired

Returns

200Model
GET
GET /model/{id} HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Responsejson
{
  "id": "id_1a2b3c",
  "name": "name",
  "description": "description",
  "path": "path",
  "sizeBytes": 1,
  "chatId": "chatId",
  "cloudId": "cloudId",
  "createdAt": 1,
  "updatedAt": 1
}

Update a model

put/model/{id}

Path parameters

idstringRequired

Request body

namestringOptional
descriptionstringOptional
cloudIdstringOptional

Returns

200Updated model
PUT
PUT /model/{id} HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Content-Type: application/json

{
  "name": "name",
  "description": "description",
  "cloudId": "cloudId"
}
Responsejson
{
  "id": "id_1a2b3c",
  "name": "name",
  "description": "description",
  "path": "path",
  "sizeBytes": 1,
  "chatId": "chatId",
  "cloudId": "cloudId",
  "createdAt": 1,
  "updatedAt": 1
}

Delete a model

delete/model/{id}

Path parameters

idstringRequired

Returns

204Deleted
DELETE
DELETE /model/{id} HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY

Download a model file

get/model/{id}/download

Path parameters

idstringRequired

Returns

200Model file binary
GET
GET /model/{id}/download HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY

Notebook

List all notebooks

get/notebook

Returns

200List of notebooks
GET
GET /notebook HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Responsejson
[
  {
    "id": "id_1a2b3c",
    "notebookPath": "notebookPath",
    "datasetId": "datasetId",
    "name": "name",
    "createdAt": 1,
    "updatedAt": 1
  }
]

Create a new notebook record

post/notebook

Request body

notebookPathstringRequired
datasetIdstringOptional
namestringOptional

Returns

200Created notebook
POST
POST /notebook HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Content-Type: application/json

{
  "notebookPath": "notebookPath",
  "datasetId": "datasetId",
  "name": "name"
}
Responsejson
{
  "id": "id_1a2b3c",
  "notebookPath": "notebookPath",
  "datasetId": "datasetId",
  "name": "name",
  "createdAt": 1,
  "updatedAt": 1
}

Get notebook by path

get/notebook/path/{path}

Path parameters

pathstringRequired

Returns

200Notebook
GET
GET /notebook/path/{path} HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Responsejson
{
  "id": "id_1a2b3c",
  "notebookPath": "notebookPath",
  "datasetId": "datasetId",
  "name": "name",
  "createdAt": 1,
  "updatedAt": 1
}

Update notebook

put/notebook/path/{path}

Path parameters

pathstringRequired

Request body

datasetIdstringOptional
namestringOptional

Returns

200Updated notebook
PUT
PUT /notebook/path/{path} HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Content-Type: application/json

{
  "datasetId": "datasetId",
  "name": "name"
}
Responsejson
{
  "id": "id_1a2b3c",
  "notebookPath": "notebookPath",
  "datasetId": "datasetId",
  "name": "name",
  "createdAt": 1,
  "updatedAt": 1
}

Delete notebook by path

delete/notebook/path/{path}

Path parameters

pathstringRequired

Returns

204Deleted
DELETE
DELETE /notebook/path/{path} HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY

Get notebook by ID

get/notebook/{id}

Path parameters

idstringRequired

Returns

200Notebook
GET
GET /notebook/{id} HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Responsejson
{
  "id": "id_1a2b3c",
  "notebookPath": "notebookPath",
  "datasetId": "datasetId",
  "name": "name",
  "createdAt": 1,
  "updatedAt": 1
}

Delete notebook by ID

delete/notebook/{id}

Path parameters

idstringRequired

Returns

204Deleted
DELETE
DELETE /notebook/{id} HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY

Execute notebook cell with streaming outputs (SSE)

post/notebook/execute-cell-stream

Returns

200SSE stream of cell outputs
POST
POST /notebook/execute-cell-stream HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY

Interrupt kernel and cancel associated agent executions

post/notebook/interrupt-kernel

Returns

200Kernel interrupted
POST
POST /notebook/interrupt-kernel HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY

Get notebook variables

post/notebook/variables

Returns

200Notebook variables
POST
POST /notebook/variables HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY

Release

List releases

get/release

Returns

200List of releases
GET
GET /release HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Responsejson
[
  {
    "id": "id_1a2b3c",
    "name": "name",
    "version": "version",
    "hostedUrl": "hostedUrl",
    "osType": "osType",
    "hash": "hash",
    "deletedAt": "deletedAt",
    "createdAt": "createdAt",
    "updatedAt": "updatedAt"
  }
]

Runtime

Detect available hardware accelerators

get/runtime/hardware

Returns

200Hardware info
GET
GET /runtime/hardware HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY

Infer GPU type using LLM

post/runtime/infer-gpu-type

Returns

200Inferred GPU type
POST
POST /runtime/infer-gpu-type HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY

Tag

List all tags

get/tag

Returns

200List of tags
GET
GET /tag HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Responsejson
[
  {
    "id": "id_1a2b3c",
    "name": "name",
    "color": "color",
    "createdAt": 1
  }
]

Create a new tag

post/tag

Request body

namestringRequired
colorstringOptional

Returns

200Created tag
POST
POST /tag HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Content-Type: application/json

{
  "name": "name",
  "color": "color"
}
Responsejson
{
  "id": "id_1a2b3c",
  "name": "name",
  "color": "color",
  "createdAt": 1
}

Update a tag

put/tag/{id}

Path parameters

idstringRequired

Request body

namestringOptional
colorstringOptional

Returns

200Updated tag
PUT
PUT /tag/{id} HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Content-Type: application/json

{
  "name": "name",
  "color": "color"
}
Responsejson
{
  "id": "id_1a2b3c",
  "name": "name",
  "color": "color",
  "createdAt": 1
}

Delete a tag

delete/tag/{id}

Path parameters

idstringRequired

Returns

204Deleted
DELETE
DELETE /tag/{id} HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY

Assign a tag to a file

post/tag/assign

Request body

tagIdstringRequired
filePathstringRequired

Returns

200File tag assignment
POST
POST /tag/assign HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Content-Type: application/json

{
  "tagId": "tagId",
  "filePath": "filePath"
}
Responsejson
{
  "id": "id_1a2b3c",
  "tagId": "tagId",
  "filePath": "filePath",
  "createdAt": 1
}

Remove a tag from a file

post/tag/unassign

Request body

tagIdstringRequired
filePathstringRequired

Returns

204Unassigned
POST
POST /tag/unassign HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Content-Type: application/json

{
  "tagId": "tagId",
  "filePath": "filePath"
}

Get tags for a file

get/tag/file/{filePath}

Path parameters

filePathstringRequired

Returns

200Tags for the file
GET
GET /tag/file/{filePath} HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Responsejson
[
  {
    "id": "id_1a2b3c",
    "name": "name",
    "color": "color",
    "createdAt": 1,
    "assignedAt": 1
  }
]

Get files for a tag

get/tag/{tagId}/files

Path parameters

tagIdstringRequired

Returns

200Files with the tag
GET
GET /tag/{tagId}/files HTTP/1.1
Host: api.thesis.io/v1
Authorization: Bearer $THESIS_API_KEY
Responsejson
[
  {
    "id": "id_1a2b3c",
    "tagId": "tagId",
    "filePath": "filePath",
    "createdAt": 1
  }
]