Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.ivory.finance/llms.txt

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

Authentication

Authorization: Bearer <access_token>

What are Foundry Notebooks?

A Foundry Notebook is a full JupyterLab environment that lives inside your tenant’s isolated workspace. It runs on the same cluster as your IOMETE data lakehouse, so you can pull in your Iceberg tables directly without moving data around. It’s the fastest way to iterate on a model idea before you hand it off to the AutoML pipeline. Each notebook server is a Kubernetes pod managed by the Kubeflow Notebook Controller. You own your server — no one else in the platform can access it.
POST /notebooks             → spin up a JupyterLab server
GET  /notebooks             → list your running notebooks
DELETE /notebooks/{name}    → shut it down
Notebook servers use emptyDir storage by default, meaning everything in /home/jovyan is lost when the pod restarts. Save notebooks to your mounted datasets or export them before shutting down.

Create a notebook server

Provisions a JupyterLab pod in the shared Kubeflow namespace, labelled with your tenant slug for isolation. The response comes back immediately — the pod itself takes 30–60 seconds to reach ready state while the container image pulls.

Request body

FieldRequiredDefaultDescription
nameYesShort identifier for this server (letters, numbers, hyphens)
imageNokubeflownotebookswg/jupyter-scipy:v1.8.0Container image. The default includes NumPy, Pandas, scikit-learn, Matplotlib, and SciPy. Use any public or private image your cluster can pull.
cpuNo1CPU request and limit (Kubernetes quantity string, e.g. "2", "500m")
memoryNo4GiMemory request and limit (e.g. "8Gi", "512Mi")
curl -X POST https://api.ivory.finance/v1/foundry/notebooks \
  -H "Authorization: Bearer $IVORY_JWT" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "eda",
    "cpu": "2",
    "memory": "8Gi"
  }'
{
  "name": "acme-corp-eda",
  "namespace": "kubeflow",
  "image": "kubeflownotebookswg/jupyter-scipy:v1.8.0",
  "resources": {
    "cpu": "2",
    "memory": "8Gi"
  },
  "status": "creating",
  "access": "kubectl port-forward svc/acme-corp-eda 8888:80 -n kubeflow"
}

List notebook servers

Returns all running or pending notebook servers that belong to your tenant. The ready field tells you whether JupyterLab is accepting connections.
curl https://api.ivory.finance/v1/foundry/notebooks \
  -H "Authorization: Bearer $IVORY_JWT"
{
  "notebooks": [
    {
      "name": "acme-corp-eda",
      "namespace": "kubeflow",
      "image": "kubeflownotebookswg/jupyter-scipy:v1.8.0",
      "ready": true,
      "created_at": "2026-03-27T09:14:00Z",
      "conditions": [
        {
          "type": "Ready",
          "status": "True",
          "reason": "PodRunning",
          "message": "Notebook pod is running"
        }
      ]
    },
    {
      "name": "acme-corp-xgb-dev",
      "namespace": "kubeflow",
      "image": "kubeflownotebookswg/jupyter-scipy:v1.8.0",
      "ready": false,
      "created_at": "2026-03-27T09:18:45Z",
      "conditions": [
        {
          "type": "Ready",
          "status": "False",
          "reason": "ContainerCreating",
          "message": "Pulling image..."
        }
      ]
    }
  ]
}

Delete a notebook server

Shuts down the notebook pod and removes the Kubernetes resource. This is permanent — any unsaved work in /home/jovyan is gone. The API returns 204 No Content on success. If the name doesn’t belong to your tenant you’ll get 404.
curl -X DELETE https://api.ivory.finance/v1/foundry/notebooks/acme-corp-eda \
  -H "Authorization: Bearer $IVORY_JWT"
(no body)