Skip to Content

Private APIs

The private Workbench API is app.main:app on port 8001. The SPA (:5270) and Campaign Management call this surface with a Workbench session JWT. It is the source of truth for operators. The public gateway proxies a curated subset into /public/v1.

http://localhost:8001/api/v1/… Authorization: Bearer <workbench-jwt>

Local health (no JWT): GET http://localhost:8001/health. Root: GET http://localhost:8001/ returns API name and version.

Bind the private API to the cluster network. External notebooks and vendors should use :8004 with a public credential. MCP HTTP still uses :8001/mcp but requires the same dual auth as the gateway.

How the SPA authenticates

  1. User signs in (Workbench login).
  2. JWT is stored as the session (ecosystem_auth).
  3. Frontend calls /api/v1/… (Vite proxies to :8001 in local frontend/run.sh).
  4. JWTAuthMiddleware rejects missing/invalid tokens on protected routes.

There is no in-code Mongo URI. Set MONGODB_URI. Python 3.14.

Prefixes

PrefixAppRole
/api/v1Private FastAPIAlmost all operator routes
/api/graphtheoryPrivate FastAPINetworks jobs (same paths as ecosystem-server networks)
/api (pipeline)Private FastAPIPipeline worker without the v1 prefix
/v1 and /modelsPrivate FastAPIOpenAI-compatible LLM (/v1/messages, /v1/models)
/mcpMounted MCP appStreamable HTTP MCP (not under /api/v1)
/healthPrivate FastAPILiveness

Shared analytics dashboards can be viewed without a JWT on the dedicated share router. Everything else that mutates configuration requires a signed-in user (and often admin).

Router map (/api/v1)

Grouped the way app.main mounts them. Paths are relative to /api/v1 unless noted.

Identity and admin

AreaTypical prefixPurpose
Auth/authLogin, session
Users / roles / profiles/users, /roles, /profilesRBAC
Admin utilities/adminServer utilities
Private API keys/admin/api-keysGenerate ecosystem JWTs
Public credentials/admin/public-api-credentialsIssue ewb_public_… keys
About/aboutVersion, build, companion assets

Configuration entities

Generic CRUD lives at /entities/{collection} (same collections the public gateway exposes). First-class routers also exist for offer matrix, contacts, campaigns, ontology, plugins, and project export.

AreaTypical prefixPurpose
Generic entities/entitiesProjects, dynamic engagement, simulation, …
Projects/projectsProject metadata
Data connections/data-connectionsMongo / warehouse connections
Data forms/data-formsForms
Templates/templatesTemplates
Plugins/pluginsPre/post-score Java samples
Offer matrix/offer-matrixVersioned catalog + history
Contacts/contactsContact Sets, records, import
Ontology/ontologyDocuments, mappings, flags
Project export/project-exportImport/export

Deployments, scoring, runtime console

AreaTypical prefixPurpose
Deployments/deploymentsPush configuration toward Runtime
Predictions/predictionsPrediction jobs
Batch scoring/batch-scoringBackend batch jobs
Jobs/jobsAsync job store
Frames/framesFeature frames
Runtime console/runtime-consoleCampaign test / invocation debug
API tester/api-testerOperator HTTP tester (Workbench API Management)
Dynamic interactions/dynamic (interactions router)Dynamic Engagement config

Workbench API Management (/docs/configuration/api) stores named Runtime test calls. Those hit Runtime /invocations and /response — they are not public-gateway routes.

AreaTypical prefixPurpose
Enrichment/enrichmentDate, MCC, personality drift jobs
Prompt enrichment/prompt-enrichmentLLM document enrichment
Filesystem/filesystemBrowse worker files
Search/searchGlobal search
Search-replace/search-replaceDocument replace
Document locks/document-locksConcurrent edit locks
Notebooks/notebooksNotebook module
Geocoding/geocodingGeocode helpers

Algorithms and simulations

AreaTypical prefixPurpose
Algorithm configs/algorithm-configSaved algorithm documents
Spend Personality/spend-personality, /algorithms/spend-personalityWizard, runs, notebooks
Money Personality/algorithms/money-personalityPOST …/process
Sentimental equilibrium/algorithms/sentimental-equilibriumPOST …/process
Two-Tower/algorithms/two-towerTrain, export, generate Python
Simulations/simulationsSave/run/validate connections (Simulations)
Network Selector/network-selectorDiagnostics for the selector (not /networks/ SPA)

MCP call_endpoint remaps /money-personality/process/algorithms/money-personality/process (same for sentimental equilibrium).

Campaigns, agents, analytics, graphs

AreaTypical prefixPurpose
Campaigns/campaignsCampaign management, trigger, schedules
Agents/agentsAgent configs + POST /agents/entity/explain
Ecosystem Agent/claude-agentOperator chat, status, profiles
EcoGentic/ecogenticCustomer journeys (not operator chat)
Analytics/analyticsDashboards / charts
Shared analyticsshare routerUnauthenticated dashboard view
MCP info/mcp/Tool list (JWT). Protocol traffic is POST /mcp
Langflow/langflowComponent generation
MLRun/mlrun-runtimeMLRun module
Kubernetes/k8sOptional k8s deploy helpers
Graph theory/api/graphtheory/* (no v1)Networks build/analyze (Networks)

Spend Personality processing also mounts data, scores, schedule, runs, health, preflight, processing-config, and analytics routers used by the wizard.

LLM

PathPurpose
POST /v1/messagesAnthropic-compatible proxy → Workbench default LLM
GET /v1/models, GET /models, GET /api/v1/modelsModel catalog
/api/v1/llmLLM config and prompt library

External Claude Code must set ANTHROPIC_BASE_URL to the Workbench host root (port 8001), not Anthropic SaaS. Leave ANTHROPIC_API_KEY empty. See Agents.

What stays private on purpose

These never appear as public-gateway entity collections:

  • public_api_credentials
  • public_api_audit_events

Admin credential minting, user/role CRUD, filesystem browsing, and most enrichment internals stay on :8001. If an integration needs a private-only route, use MCP call_endpoint from a trusted operator session — do not punch a hole in the gateway without a scope.

Data Agents and Runtime

ProductAPINot this private API
Data AgentsData Agents service :54324 (POST /process)Separate repo; same JWT cookie family
Runtime:8091 /invocations, /responseJava scoring engine

Related: Public APIs, API Keys.

Last updated on