Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.emergence.ai/llms.txt

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

API Overview

CRAFT exposes RESTful APIs through five services: Governance (identity and permissions), Assets (data connections and files), Utils (scheduling, context packs, and memories), Talk2Data (conversational data analytics), and Data Readiness (data profiling and governance). All APIs follow consistent conventions for authentication, versioning, and error handling.

Base URLs

Each platform service runs on a dedicated internal port. In production, services are accessed via path-based routing through a Gateway:
ServiceInternal PortPath PrefixResponsibility
Governance8000/governanceOrganizations, projects, permissions, secrets
Assets8000/assetsArtifacts, data connections, files
Utils8000/utilsScheduling, context packs, memories, metadata
Talk2Data8080/talk2dataChat sessions, NL-to-SQL, data analysis
Data Readiness8000/data-readinessProfiling workflows, data quality, glossary
The URLs above show direct service access. In production deployments behind an ingress controller, services are exposed on a single domain with path-based routing (e.g., https://api.example.com/governance, https://api.example.com/assets). The ingress rewrites paths to the service-internal prefix.

API Versioning

CRAFT APIs use service-specific prefixes (/governance, /assets, /utils). The platform follows these versioning principles:
  • Path-based versioning: Each service uses its own prefix (e.g., /governance/..., /assets/..., /utils/...)
  • Backward compatibility: Minor additions (new fields, new endpoints) are added within the same version
  • Breaking changes: Changes that remove fields, rename endpoints, or alter behavior require a new version (/v2)
  • Deprecation: Deprecated versions are maintained for at least 6 months with Sunset headers

Common Headers

Required Headers

HeaderDescriptionExample
AuthorizationBearer token for authentication (JWT contains org_id for scoping)Bearer eyJhbG...
Content-TypeRequest body formatapplication/json

Response Headers

HeaderDescriptionExample
X-Request-IDUnique request identifier for tracingreq-a1b2c3d4
X-RateLimit-LimitMaximum requests allowed in window300
X-RateLimit-RemainingRequests remaining in current window297
X-RateLimit-ResetUnix timestamp when window resets1712150400

Rate Limits

Rate limits are enforced per authenticated principal using a sliding window algorithm backed by Redis:
Operation TypeLimitApplies To
Read operations (GET, POST :search)300/minAuthenticated users
Write operations (POST, PUT, PATCH, DELETE)60/minAuthenticated users
Bulk operations10/minAuthenticated users
Anonymous reads30/minUnauthenticated requests (when enabled)
When a rate limit is exceeded, the API returns:
{
  "error": {
    "code": "RATE_LIMIT_EXCEEDED",
    "message": "Rate limit exceeded. Retry after 42 seconds.",
    "status": 429
  }
}
The Retry-After response header indicates when the client can retry.
Rate limits are configurable per tenant by administrators. Contact your platform admin if the default limits are insufficient for your workload.

Service Endpoints Summary

Governance API (Port 8001)

MethodEndpointDescription
GET/governance/organizationsList organizations
GET/governance/organizations/{org_id}Get organization details
POST/governance/projectsCreate a project
GET/governance/projectsList projects
GET/governance/projects/{project_id}Get project details
GET/governance/permissions/checkCheck if a user has a permission
POST/governance/permissions/grantGrant a permission
POST/governance/permissions/revokeRevoke a permission
*/governance/resources/.../secretsSecret management (CRUD)

Assets API

MethodEndpointDescription
POST/assets/artifactsCreate an artifact
GET/assets/artifacts/{resource_uri}Get artifact details
GET/assets/artifacts/{resource_uri}/previewPreview artifact content
GET/assets/artifacts/{resource_uri}/downloadDownload artifact
POST/assets/dataRegister a data connection
GET/assets/data/{resource_uri}Get data connection details
POST/assets/data/{resource_uri}/verifyVerify a data connection
POST/assets/filesUpload a file
GET/assets/files/{resource_uri}Get file metadata
GET/assets/files/{resource_uri}/downloadDownload file

Utils API

MethodEndpointDescription
POST/utils/schedulesCreate a schedule
GET/utils/schedules/{schedule_id}Get schedule details
PUT/utils/schedules/{schedule_id}Update a schedule
DELETE/utils/schedules/{schedule_id}Delete a schedule
POST/utils/context-packsCreate a context pack
GET/utils/context-packsList context packs
POST/utils/memoriesCreate a memory
GET/utils/memoriesList memories
POST/utils/search/metadataSearch metadata catalog
*/utils/{resource_type}/{resource_uri}/metadataMetadata management (CRUD)

Talk2Data API (Data Insights)

MethodEndpointDescription
POST/talk2data/chat/sessionsCreate a chat session
GET/talk2data/chat/sessionsList chat sessions
GET/talk2data/chat/sessions/{session_id}Get session details
PATCH/talk2data/chat/sessions/{session_id}Rename a session
DELETE/talk2data/chat/sessions/{session_id}Delete a session
POST/talk2data/chat/sessions/{session_id}/turnsCreate a new turn
GET/talk2data/chat/sessions/{session_id}/turnsList turns in a session
GET/talk2data/chat/sessions/{session_id}/turns/{turn_id}Get turn details
GET/talk2data/chat/sessions/{session_id}/turns/{turn_id}/artifactsGet turn artifacts
POST/talk2data/chat/sessions/{session_id}/turns/{turn_id}/feedbackSubmit feedback
POST/talk2data/chat/messages/sessions/{session_id}/turns/{turn_id}/streamStream message (SSE)
POST/talk2data/chat/messages/{task_id}/cancelCancel a running task

Data Readiness API (Data Governance)

MethodEndpointDescription
GET/data-readiness/workflowsList workflow configurations
POST/data-readiness/workflowsCreate a workflow configuration
GET/data-readiness/workflows/{configuration_id}Get workflow details
POST/data-readiness/workflows/{configuration_id}/runsTrigger a workflow run
GET/data-readiness/workflows/{configuration_id}/runsList runs for a workflow
*/data-readiness/data-assets/...Data asset catalog management
*/data-readiness/metrics/...Quality metrics and scorecards
*/data-readiness/violationsData quality violation tracking
*/data-readiness/glossary/termsBusiness glossary management

OpenAPI Specifications

Each service generates an OpenAPI 3.0 specification accessible at:
  • Governance: https://<host>:8001/docs (Swagger UI) or https://<host>:8001/openapi.json
  • Assets: https://<host>:8002/docs or https://<host>:8002/openapi.json
  • Utils: https://<host>:8003/docs or https://<host>:8003/openapi.json
The OpenAPI specs are used to auto-generate Python and TypeScript SDKs.

SDKs

Auto-generated SDKs are available for programmatic access:
pip install em-runtime-governance-sdk-python
pip install em-runtime-assets-sdk-python
pip install em-runtime-utils-sdk-python
from em_runtime_governance_sdk import GovernanceClient

client = GovernanceClient(
    base_url="https://<host>:8001",
    token=access_token
)
orgs = await client.organizations.list()

Pagination

List endpoints support offset-based pagination using page and limit parameters:
# First page
GET /assets/artifacts?limit=20&page=1

# Next page
GET /assets/artifacts?limit=20&page=2
The limit parameter controls page size (default varies by endpoint). The page parameter is 1-indexed.

Next Steps

API Authentication

Learn how to obtain and use JWT tokens for API access.

Error Codes

Understand error response formats and troubleshooting.

Python SDK

Use the auto-generated Python SDK for programmatic access.

TypeScript SDK

Use the auto-generated TypeScript SDK for frontend integration.