World
Composite world health dashboard — entity counts by type, event velocity (24h/7d), average confidence, and source breakdown. All computation server-side.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Successful Response
Event count from the Lakebase read model; null when the projection is empty or unavailable.
Event count from the Lakebase read model; null when the projection is empty or unavailable.
ready = Lakebase projection returned a row; empty = no summary row; unavailable = read failed.
emptyPossible values: platform.event_velocity_summary synced_at for this workspace.
GET /v1/{workspace_id}/world/dashboard HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
Successful Response
{
"entity_counts": {
"total_entities": 1,
"total_events": 1,
"sync_pending": 1,
"sync_synced": 1,
"sync_failed": 1,
"by_event_type": {
"ANY_ADDITIONAL_PROPERTY": 1
}
},
"events_24h": 1,
"events_7d": 1,
"avg_confidence": 1,
"event_read_model_status": "empty",
"event_read_model_synced_at": "2026-01-01T00:00:00.000Z",
"sources": [
{
"source_system": "text",
"entity_type": "text",
"count": 1
}
]
}Returns distinct entity types in the workspace with counts and projection availability. Powers the World Explorer's auto-discovery of new entity types created by agents (L4 self-extending schema).
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Successful Response
Missing or invalid API key.
GET /v1/{workspace_id}/world/entity-types HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"entity_types": [
{
"entity_type": "text",
"count": 1,
"last_updated": "2026-01-01T00:00:00.000Z",
"has_projection": true
}
],
"total_entities": 1
}Returns distinct event types in the workspace with counts, domains, and source breakdown. Enables the World Explorer to show what kinds of events flow through the world model.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Successful Response
Missing or invalid API key.
GET /v1/{workspace_id}/world/event-types HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"event_types": [
{
"event_type": "text",
"count": 1,
"domains": [
"text"
],
"sources": [
"text"
]
}
],
"total_events": 1
}Aggregate stats for entities including sync status breakdown (pending, synced, failed). Filter by entity_type to get stats for a specific type (e.g. appointment, patient). Generic — works for any entity type in the Liquid World Model.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Successful Response
Missing or invalid API key.
GET /v1/{workspace_id}/world/entity-stats HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"total_entities": 1,
"total_events": 1,
"sync_pending": 1,
"sync_synced": 1,
"sync_failed": 1,
"by_event_type": {
"ANY_ADDITIONAL_PROPERTY": 1
}
}Paginated entity list from a specific connected data source. Filter by entity_type and search by display name. Uses EXISTS subquery on events.data_source_id for accurate scoping.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Filter by entity type
Search by display name
Sort order: +display_name (default) or -display_name for alphabetical, +last_event_at for oldest activity first, -last_event_at for most recent first. All sort orders use entity id as a final tiebreaker for stable pagination.
200Successful Response
Invalid data source ID format.
Validation Error
GET /v1/{workspace_id}/world/connectors/{data_source_id}/entities HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"entities": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"workspace_id": "123e4567-e89b-12d3-a456-426614174000",
"entity_type": "text",
"display_name": "text",
"canonical_id": "text",
"external_ids": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"has_projection": false,
"name": "text",
"phone": "text",
"email": "text",
"birth_date": "text",
"gender": "text",
"mrn": "text",
"appointment_status": "text",
"appointment_start": "2026-01-01T00:00:00.000Z",
"appointment_end": "2026-01-01T00:00:00.000Z",
"appointment_type": "text",
"domain": "text",
"industry": "text",
"call_sid": "text",
"direction": "text",
"duration_seconds": 1,
"status": "text",
"source": "text",
"first_seen_at": "2026-01-01T00:00:00.000Z",
"last_event_at": "2026-01-01T00:00:00.000Z",
"event_count": 0,
"confidence": 1,
"tags": [
"text"
],
"created_at": "2026-01-01T00:00:00.000Z",
"updated_at": "2026-01-01T00:00:00.000Z"
}
],
"total": 1,
"has_more": true,
"next_offset": 1
}FHIR resource search scoped to a specific data source. Returns raw FHIR resource data (Condition, MedicationRequest, Coverage, etc.) from the specified connector. Powers the per-connector clinical resource tables (FHIR Store tab, EHR tab).
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
FHIR resource type (e.g. Patient, Condition, MedicationRequest)
200Successful Response
FHIR resources from a specific connected data source.
FHIR resource type (e.g. Patient, Condition, MedicationRequest)
UUID of the connected data source
Total number of matching resources
Invalid data source ID or resource type.
Validation Error
GET /v1/{workspace_id}/world/connectors/{data_source_id}/resources?resource_type=text HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"resource_type": "text",
"data_source_id": "123e4567-e89b-12d3-a456-426614174000",
"total": 1,
"entries": [
{
"ANY_ADDITIONAL_PROPERTY": "anything"
}
]
}Breakdown of entity counts by source system (e.g. charmhealth, gcp_fhir, voice_agent). Powers the EHR/FHIR view in the frontend. Filter by entity_type (e.g. person, place) for focused views.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Filter by entity type
Successful Response
Validation Error
GET /v1/{workspace_id}/world/source-breakdown HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"breakdown": [
{
"source_system": "text",
"entity_type": "text",
"count": 1
}
],
"total": 1
}Writes a single per-key entity.enriched event for the given entity. Validates against the workspace's enrichment_keys registry — unknown key, wrong value type, enum violation, or confidence below the key's floor all return 400. SDP picks winners by confidence class.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
^[a-z0-9][a-z0-9_\-]*$Stable UUID so a retry after an ambiguous failure re-emits the same logical event (deduped downstream) instead of a duplicate. Used only on the synchronous-overlay write path; auto-generated when omitted.
Scalar or JSON-compatible value to store.
Overrides the registry value_type when set. Rarely needed.
Write source — e.g. manual, forms, auto_enrich.
manualSubsystem / connector identifier.
Write confidence. Must be >= registry min_confidence for the key.
1When the value became true (UTC). Defaults to ingested_at.
Successful Response
^[a-z0-9][a-z0-9_\-]*$Registry validation failed.
Insufficient permissions.
Entity not found.
Validation Error
PUT /v1/{workspace_id}/world/entities/{entity_id}/enrichment/{key} HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 134
{
"value": null,
"value_type": "string",
"source": "manual",
"source_system": "text",
"confidence": 1,
"effective_at": "2026-01-01T00:00:00.000Z"
}{
"key": "text",
"value": null,
"value_type": "string",
"confidence": 1,
"source": "text",
"source_system": "text",
"effective_at": "2026-01-01T00:00:00.000Z",
"ingested_at": "2026-01-01T00:00:00.000Z",
"event_id": "123e4567-e89b-12d3-a456-426614174000",
"overlay_status": "text"
}Current winners per (entity, key) from world.enrichment_synced (Synced-Table-populated view of SDP's enrichment_current_v3). Each row carries value, value_type, confidence, source, effective_at.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Max enrichment rows
200Page offset
0Successful Response
Entity not found.
Validation Error
GET /v1/{workspace_id}/world/entities/{entity_id}/enrichment HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"entity_id": "123e4567-e89b-12d3-a456-426614174000",
"values": [
{
"key": "text",
"value": null,
"value_type": "string",
"confidence": 1,
"source": "text",
"source_system": "text",
"effective_at": "2026-01-01T00:00:00.000Z",
"ingested_at": "2026-01-01T00:00:00.000Z",
"event_id": "123e4567-e89b-12d3-a456-426614174000",
"overlay_status": "text"
}
]
}Returns every entity.enriched event for (entity, key), newest first, including superseded entries. Each entry carries the full provenance: source, confidence, effective_at, supersedes pointer, is_current flag.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
^[a-z0-9][a-z0-9_\-]*$50Successful Response
^[a-z0-9][a-z0-9_\-]*$0Entity not found.
Validation Error
GET /v1/{workspace_id}/world/entities/{entity_id}/enrichment/{key}/history HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"entity_id": "123e4567-e89b-12d3-a456-426614174000",
"key": "text",
"history": [
{
"event_id": "123e4567-e89b-12d3-a456-426614174000",
"value": null,
"value_type": "string",
"confidence": 1,
"source": "text",
"source_system": "text",
"effective_at": "2026-01-01T00:00:00.000Z",
"ingested_at": "2026-01-01T00:00:00.000Z",
"supersedes": "123e4567-e89b-12d3-a456-426614174000",
"is_current": true
}
],
"dropped_count": 0
}Writes one terminal world.conversations row per v1 conversation (real dates, provider='v1-migration'), giving the returning-user greeting and the real conversation list. Admin-only, idempotent + correctable per (workspace, v1 conversation id), memory-safe (no world events emitted → the memory extractor never re-derives from these). Transcript content (turns) is a separate follow-up. Batch size <= 500.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Successful Response
Naive/future timestamps, bad window, or non-person entity_id.
Insufficient permissions.
Validation Error
POST /v1/{workspace_id}/world/migration/conversations HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 218
{
"conversations": [
{
"entity_id": "123e4567-e89b-12d3-a456-426614174000",
"source_conversation_id": "text",
"started_at": "2026-01-01T00:00:00.000Z",
"ended_at": "2026-01-01T00:00:00.000Z",
"channel_kind": "web",
"turn_count": 0
}
]
}{
"imported": 1,
"created": 1,
"updated": 1
}Optionally filter by entity_type.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Filter by entity type.
Max keys to return
200Page offset
0Successful Response
Validation Error
GET /v1/{workspace_id}/world/enrichment-keys HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"keys": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"workspace_id": "123e4567-e89b-12d3-a456-426614174000",
"entity_type": "text",
"key": "text",
"value_type": "string",
"allowed_values": [],
"source_hint": "text",
"description": "text",
"min_confidence": 1,
"is_pii": true,
"tags": [
"text"
],
"created_at": "2026-01-01T00:00:00.000Z",
"updated_at": "2026-01-01T00:00:00.000Z"
}
]
}Registers a new (entity_type, key) in this workspace's enrichment key registry. Future writes against this key will pass validation. value_type governs what values are accepted; enum types require allowed_values. Tag a person key with 'memory_extract' (description required) to make it a workspace-custom memory dimension the conversation extractor infers from transcripts.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
^[a-z0-9][a-z0-9_\-]*$0falseRouting tags. 'memory_extract' opts this key into memory extraction — the conversation extractor will infer it from transcripts as a workspace-custom memory dimension (person keys with a description only).
Successful Response
^[a-z0-9][a-z0-9_\-]*$[]Invalid request body.
Insufficient permissions.
Key already exists for (entity_type, key).
Validation Error
POST /v1/{workspace_id}/world/enrichment-keys HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 169
{
"entity_type": "text",
"key": "text",
"value_type": "string",
"allowed_values": [],
"source_hint": "text",
"description": "text",
"min_confidence": 0,
"is_pii": false,
"tags": [
"text"
]
}{
"id": "123e4567-e89b-12d3-a456-426614174000",
"workspace_id": "123e4567-e89b-12d3-a456-426614174000",
"entity_type": "text",
"key": "text",
"value_type": "string",
"allowed_values": [],
"source_hint": "text",
"description": "text",
"min_confidence": 1,
"is_pii": true,
"tags": [
"text"
],
"created_at": "2026-01-01T00:00:00.000Z",
"updated_at": "2026-01-01T00:00:00.000Z"
}Existing entity.enriched events are not deleted (append-only); only future writes against this key will be rejected.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Successful Response
No content
Insufficient permissions.
Enrichment key not found.
Validation Error
DELETE /v1/{workspace_id}/world/enrichment-keys/{key_id} HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
Update allowed_values, source_hint, description, min_confidence, is_pii, or tags. key and value_type are immutable.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Replaces the full tags list when set. Pass [] to remove all tags.
Successful Response
^[a-z0-9][a-z0-9_\-]*$[]Insufficient permissions.
Enrichment key not found.
Validation Error
PATCH /v1/{workspace_id}/world/enrichment-keys/{key_id} HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 112
{
"allowed_values": [],
"source_hint": "text",
"description": "text",
"min_confidence": 1,
"is_pii": true,
"tags": [
"text"
]
}{
"id": "123e4567-e89b-12d3-a456-426614174000",
"workspace_id": "123e4567-e89b-12d3-a456-426614174000",
"entity_type": "text",
"key": "text",
"value_type": "string",
"allowed_values": [],
"source_hint": "text",
"description": "text",
"min_confidence": 1,
"is_pii": true,
"tags": [
"text"
],
"created_at": "2026-01-01T00:00:00.000Z",
"updated_at": "2026-01-01T00:00:00.000Z"
}List entities filtered by type with optional name search. Works for any entity type — patients, operators, calls, or any type created by T3 agents. Returns full projected state.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Filter by entity type (repeatable)
Search by name, type, canonical ID, phone, or entity ID
200Sort order (PostgREST-style, e.g. last_event_at.desc, display_name.asc)
Filter by has_projection flag
Filter by event source (e.g. voice_agent, connector_runner)
Filter by source system name (e.g. charmhealth, gcp_fhir)
Filter by FHIR resource type (e.g. Patient, Practitioner)
Successful Response
Missing or invalid API key.
Validation Error
GET /v1/{workspace_id}/world/entities HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"entities": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"workspace_id": "123e4567-e89b-12d3-a456-426614174000",
"entity_type": "text",
"display_name": "text",
"canonical_id": "text",
"external_ids": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"has_projection": false,
"name": "text",
"phone": "text",
"email": "text",
"birth_date": "text",
"gender": "text",
"mrn": "text",
"appointment_status": "text",
"appointment_start": "2026-01-01T00:00:00.000Z",
"appointment_end": "2026-01-01T00:00:00.000Z",
"appointment_type": "text",
"domain": "text",
"industry": "text",
"call_sid": "text",
"direction": "text",
"duration_seconds": 1,
"status": "text",
"source": "text",
"first_seen_at": "2026-01-01T00:00:00.000Z",
"last_event_at": "2026-01-01T00:00:00.000Z",
"event_count": 0,
"confidence": 1,
"tags": [
"text"
],
"created_at": "2026-01-01T00:00:00.000Z",
"updated_at": "2026-01-01T00:00:00.000Z"
}
],
"total": 1,
"has_more": true,
"next_offset": 1
}Polymorphic identifier → ranked entity candidates. Accepts any subset of {phone, email, canonical_id, external_id, entity_id} plus a required entity_type. Served from the SDP serving surfaces: entity rows from world.entities_synced; canonical_id and external_id resolve through world.canonical_entity_map_synced point reads. Returns matches ranked by confidence + number of identifiers matched. Summary narrowing: external_ids is always {}, tags is always [], and canonical_id is the canonical-map value or the entity's MRN.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Polymorphic identifier query.
Provide entity_type plus any subset of identifier fields. Each
identifier is OR-ed in SQL; matches are ranked by confidence and
by the number of identifiers that actually matched the row.
Returns at most limit candidates (default 25, max 50).
For latency-sensitive callers (inbound voice, webhook handlers), pass exactly one identifier — the indexed lookup is sub-10ms. Multi-identifier queries are useful for confirming a row matches on more than one signal (phone + email + MRN).
Required entity type filter (e.g. 'person'). Narrows the scan to the right index.
^[a-z0-9_]+$E.164 phone number.
Primary email (case-insensitive match).
Canonical identifier as carried by the canonical entity map (e.g. 'charm:Patient:42'; a raw MRN resolves only when a producer minted it as the canonical_id).
Direct UUID lookup. Useful for confirming an entity exists / re-fetching summary.
Maximum candidates to return.
25Successful Response
Number of candidates returned.
No identifier provided or invalid input.
Missing or invalid API key.
Validation Error
POST /v1/{workspace_id}/world/entities/resolve HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 193
{
"entity_type": "text",
"phone": "text",
"email": "name@gmail.com",
"canonical_id": "text",
"external_id": {
"system": "text",
"value": "text"
},
"entity_id": "123e4567-e89b-12d3-a456-426614174000",
"limit": 25
}{
"matches": [
{
"entity_id": "123e4567-e89b-12d3-a456-426614174000",
"entity_type": "text",
"confidence": 1,
"matched_on": [
"entity_id"
],
"summary": {
"display_name": "text",
"name": "text",
"phone": "text",
"email": "text",
"birth_date": "text",
"mrn": "text",
"canonical_id": "text",
"external_ids": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"last_event_at": "2026-01-01T00:00:00.000Z",
"event_count": 0,
"tags": [
"text"
]
}
}
],
"total": 1
}Fetch a single entity with its full projected state. The state is a computed projection from all events — never mutated directly. Enhanced entity types (patient, operator, call) have richer projections.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Successful Response
falseDisplay name (person, organization)
Primary phone number (E.164)
Primary email address
Date of birth (YYYY-MM-DD)
Gender
Medical record number
Appointment status (booked, confirmed, cancelled)
Appointment start time (UTC)
Appointment end time (UTC)
Appointment/visit type
Organization domain
Organization industry
Twilio call SID
Call direction (inbound, outbound)
Call duration in seconds
Entity status
Primary data source
01When the entity was created
When the entity was last updated
Invalid entity ID format.
Missing or invalid API key.
Entity not found.
Validation Error
GET /v1/{workspace_id}/world/entities/{entity_id} HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"workspace_id": "123e4567-e89b-12d3-a456-426614174000",
"entity_type": "text",
"display_name": "text",
"canonical_id": "text",
"external_ids": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"has_projection": false,
"name": "text",
"phone": "text",
"email": "text",
"birth_date": "text",
"gender": "text",
"mrn": "text",
"appointment_status": "text",
"appointment_start": "2026-01-01T00:00:00.000Z",
"appointment_end": "2026-01-01T00:00:00.000Z",
"appointment_type": "text",
"domain": "text",
"industry": "text",
"call_sid": "text",
"direction": "text",
"duration_seconds": 1,
"status": "text",
"source": "text",
"first_seen_at": "2026-01-01T00:00:00.000Z",
"last_event_at": "2026-01-01T00:00:00.000Z",
"event_count": 0,
"confidence": 1,
"tags": [
"text"
],
"created_at": "2026-01-01T00:00:00.000Z",
"updated_at": "2026-01-01T00:00:00.000Z"
}Get the event timeline for an entity — all current events ordered by effective date. The entity's state is always a projection of these events. Filter by domain (clinical, operational, audit, etc.).
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Filter by domain
500Successful Response
Invalid entity ID format.
Missing or invalid API key.
Entity not found.
Validation Error
GET /v1/{workspace_id}/world/entities/{entity_id}/timeline HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"entity_id": "123e4567-e89b-12d3-a456-426614174000",
"events": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"domain": "text",
"entity_type": "text",
"event_type": "text",
"event_subtype": "text",
"fhir_resource_type": "text",
"fhir_resource_id": "text",
"data": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"source": "manual",
"source_system": "text",
"confidence": 1,
"produced_by_agent": "text",
"display_name": "text",
"status": "text",
"description": "text",
"outcome": "text",
"channel": "text",
"call_sid": "text",
"direction": "text",
"duration_seconds": 1,
"amount": 1,
"supersedes": "123e4567-e89b-12d3-a456-426614174000",
"is_current": true,
"effective_at": "2026-01-01T00:00:00.000Z",
"ingested_at": "2026-01-01T00:00:00.000Z",
"synced_at": "2026-01-01T00:00:00.000Z",
"sync_error": "text",
"sync_status": "pending",
"created_at": "2026-01-01T00:00:00.000Z"
}
],
"total": 1,
"has_more": true,
"next_offset": 1
}Get relationships for an entity — links to other entities in the knowledge graph. Filter by relationship type.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Filter by relationship type
Successful Response
Invalid entity ID format.
Missing or invalid API key.
Entity not found.
Validation Error
GET /v1/{workspace_id}/world/entities/{entity_id}/relationships HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"entity_id": "123e4567-e89b-12d3-a456-426614174000",
"relationships": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"source_entity_id": "123e4567-e89b-12d3-a456-426614174000",
"source_entity_type": "text",
"target_entity_id": "123e4567-e89b-12d3-a456-426614174000",
"target_entity_type": "text",
"relationship": "text",
"data": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"confidence": 1,
"discovered_by": "text",
"is_current": true,
"created_at": "2026-01-01T00:00:00.000Z"
}
],
"total": 1
}Returns entities linked via same_as edges — historical merge edges where different data sources refer to the same real-world entity (written by the pre-SDP resolver; merge detection now lives in the Databricks pipeline — new edges are not produced).
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Successful Response
Invalid entity ID format.
Entity not found.
Validation Error
GET /v1/{workspace_id}/world/entities/{entity_id}/merged HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"entity_id": "123e4567-e89b-12d3-a456-426614174000",
"linked_entities": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"workspace_id": "123e4567-e89b-12d3-a456-426614174000",
"entity_type": "text",
"display_name": "text",
"canonical_id": "text",
"external_ids": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"has_projection": false,
"name": "text",
"phone": "text",
"email": "text",
"birth_date": "text",
"gender": "text",
"mrn": "text",
"appointment_status": "text",
"appointment_start": "2026-01-01T00:00:00.000Z",
"appointment_end": "2026-01-01T00:00:00.000Z",
"appointment_type": "text",
"domain": "text",
"industry": "text",
"call_sid": "text",
"direction": "text",
"duration_seconds": 1,
"status": "text",
"source": "text",
"first_seen_at": "2026-01-01T00:00:00.000Z",
"last_event_at": "2026-01-01T00:00:00.000Z",
"event_count": 0,
"confidence": 1,
"tags": [
"text"
],
"created_at": "2026-01-01T00:00:00.000Z",
"updated_at": "2026-01-01T00:00:00.000Z"
}
],
"total": 1
}Last updated
Was this helpful?

