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:
Service Internal Port Path Prefix Responsibility Governance 8000 /governanceOrganizations, projects, permissions, secrets Assets 8000 /assetsArtifacts, data connections, files Utils 8000 /utilsScheduling, context packs, memories, metadata Talk2Data 8080 /talk2dataChat sessions, NL-to-SQL, data analysis Data Readiness 8000 /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
Header Description Example AuthorizationBearer token for authentication (JWT contains org_id for scoping) Bearer eyJhbG...Content-TypeRequest body format application/json
Header Description Example X-Request-IDUnique request identifier for tracing req-a1b2c3d4X-RateLimit-LimitMaximum requests allowed in window 300X-RateLimit-RemainingRequests remaining in current window 297X-RateLimit-ResetUnix timestamp when window resets 1712150400
Rate Limits
Rate limits are enforced per authenticated principal using a sliding window algorithm backed by Redis:
Operation Type Limit Applies To Read operations (GET, POST :search)300/min Authenticated users Write operations (POST, PUT, PATCH, DELETE)60/min Authenticated users Bulk operations 10/min Authenticated users Anonymous reads 30/min Unauthenticated 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)
Method Endpoint Description 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
Method Endpoint Description 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
Method Endpoint Description 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)
Method Endpoint Description 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)
Method Endpoint Description 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()
npm install @emergence/em-runtime-governance-sdk
npm install @emergence/em-runtime-assets-sdk
npm install @emergence/em-runtime-utils-sdk
import { GovernanceClient } from '@emergence/em-runtime-governance-sdk' ;
const client = new GovernanceClient ({
baseUrl: 'https://<host>:8001' ,
token: accessToken
});
const orgs = await client . organizations . list ();
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.