Deepnote research: our notes on building agents
Get started
All endpoint groups

Deepnote Public API v2

Streamlit apps API

Streamlit apps served from project files.

Base URL

https://api.deepnote.com/v2

List Streamlit apps

Lists the Streamlit apps a project serves, oldest first. The response is complete: a project serves at most one app per free port, so there is no pagination. Use this to find the app for a file before creating one, because `POST /streamlit-apps` rejects a file that is already served.

get/streamlit-apps

Parameters

projectIdqueryrequiredstring:uuid

Project whose Streamlit apps are listed.

Responses

200List of Streamlit apps in the project
application/jsonListStreamlitAppsResponse
streamlitAppsrequiredStreamlitApp[]
400Validation error
application/jsonErrorResponse
messagerequiredstring
401Unauthorized
application/jsonErrorResponse
messagerequiredstring
403Insufficient permissions
application/jsonErrorResponse
messagerequiredstring
404Project not found
application/jsonErrorResponse
messagerequiredstring
409Project is suspended
application/jsonErrorResponse
messagerequiredstring
429Rate limit exceeded
application/jsonErrorResponse
messagerequiredstring
500Internal server error
application/jsonErrorResponse
messagerequiredstring

Create a Streamlit app

Serves an existing project file as a Streamlit app.

post/streamlit-apps

Request body

required
application/jsonCreateStreamlitAppBody
projectIdrequiredstring:uuid

Project that contains the entrypoint file.

entrypointrequiredstring

Project-relative path of an existing file to serve, for example "apps/dashboard.py".

Responses

201Streamlit app created
application/jsonCreateStreamlitAppResponse
streamlitApprequiredStreamlitApp
400Validation error or entrypoint path is not a file
application/jsonErrorResponse
messagerequiredstring
401Unauthorized
application/jsonErrorResponse
messagerequiredstring
403Insufficient permissions
application/jsonErrorResponse
messagerequiredstring
404Project or entrypoint file not found
application/jsonErrorResponse
messagerequiredstring
409Project is suspended, the file is already served as an app, or the project has no free app ports
application/jsonErrorResponse
messagerequiredstring
429Rate limit exceeded
application/jsonErrorResponse
messagerequiredstring

Get a Streamlit app

Returns the app record. This does not check whether the app is currently being served; use `GET /streamlit-apps/{streamlitAppId}/status` for that.

get/streamlit-apps/{streamlitAppId}

Parameters

streamlitAppIdpathrequiredstring:uuid

Streamlit app identifier.

Responses

200Streamlit app
application/jsonGetStreamlitAppResponse
streamlitApprequiredStreamlitApp
400Validation error
application/jsonErrorResponse
messagerequiredstring
401Unauthorized
application/jsonErrorResponse
messagerequiredstring
403Insufficient permissions
application/jsonErrorResponse
messagerequiredstring
404Streamlit app not found
application/jsonErrorResponse
messagerequiredstring
409Project is suspended
application/jsonErrorResponse
messagerequiredstring
429Rate limit exceeded
application/jsonErrorResponse
messagerequiredstring
500Internal server error
application/jsonErrorResponse
messagerequiredstring

Delete a Streamlit app

Stops serving the file and frees its port. The project machine is restarted in the background to drop the running app, which takes a few minutes; until it comes back the app may still answer requests.

delete/streamlit-apps/{streamlitAppId}

Parameters

streamlitAppIdpathrequiredstring:uuid

Streamlit app identifier.

Responses

204Streamlit app deleted
400Validation error
application/jsonErrorResponse
messagerequiredstring
401Unauthorized
application/jsonErrorResponse
messagerequiredstring
403Insufficient permissions
application/jsonErrorResponse
messagerequiredstring
404Streamlit app not found
application/jsonErrorResponse
messagerequiredstring
409Project is suspended
application/jsonErrorResponse
messagerequiredstring
429Rate limit exceeded
application/jsonErrorResponse
messagerequiredstring
500Internal server error
application/jsonErrorResponse
messagerequiredstring

Get the serving state of a Streamlit app

Reports whether the app is currently answering requests. After an app is created, the status may briefly report `unavailable` while the project machine stops, then `starting` while the machine and Streamlit boot. Poll this endpoint rather than the app URL itself, and apply a client-side timeout because `starting` does not distinguish slow startup from an app that failed to boot.

get/streamlit-apps/{streamlitAppId}/status

Parameters

streamlitAppIdpathrequiredstring:uuid

Streamlit app identifier.

Responses

200Current serving state of the Streamlit app
application/jsonGetStreamlitAppStatusResponse
statusrequiredStreamlitAppStatus

Serving status of the app. `running`: the app answered its health check. `starting`: the project machine is starting or running but the app has not answered yet. `unavailable`: the project machine is not running or its executor cannot be reached, so the app is not being served.

400Validation error
application/jsonErrorResponse
messagerequiredstring
401Unauthorized
application/jsonErrorResponse
messagerequiredstring
403Insufficient permissions
application/jsonErrorResponse
messagerequiredstring
404Streamlit app not found
application/jsonErrorResponse
messagerequiredstring
409Project is suspended
application/jsonErrorResponse
messagerequiredstring
429Rate limit exceeded
application/jsonErrorResponse
messagerequiredstring
500Internal server error
application/jsonErrorResponse
messagerequiredstring