Join two entities
Authentication
User bearer token: Supabase or Clerk session JWT, Clerk OAuth access token, or Clerk personal API key
Admin API key for system-to-system write operations
Query parameters
Relationship source entity UUID, not provenance source metadata. For parent this is the parent entity. For affinity this is the member organization. For acceleratorParticipant this may be either side; join auto-orients so the stored source is the participant entity.
Relationship target entity UUID. For parent this is the child entity. For affinity this is the provider organization. For acceleratorParticipant this may be either side, but exactly one side must be the accelerator entity with typeRecord=Investment Firm.
Relationship-specific detail. Required for acceleratorParticipant as batch=<label> or program=<name>; batch=<label>. Pair it with asOf.
Provider name for provider-native IDs or slugs.
Provider-native source ID.
Provider-native source slug.
Actor type; inferred as agent when agentChassis and agentModel are supplied, or as employee from an authenticated user JWT session.
Agent chassis token for agent-authored writes.
Agent model id for agent-authored writes.
Response
Created relationship row. Directional warnings also appear in Warning, X-Contract-Warning-Code, and X-Contract-Warning-Key headers.
Joined entity on the other side of this relationship — read-only display projection. Writes identify both sides only via the flat sourceEntityId and targetEntityId UUIDs, never a nested entity object.
Canonical relationship type, one of: acceleratorParticipant, acquirer, affinity, calculated, competingProductService, competitor, customer, fundManagerFirm, parent, productService, serviceProvider, similarCompany, spinOffFrom, successor. Similarity endpoint rows use stored relationship types when a curation row exists and calculated when the row comes from semantic/vector similarity.
Competitive comparison signals for the joined entity when it is a product/service provider — sells-to, pricing model, ownership, funding, and website. Null for every other joined entity. Lets comparison surfaces render provider columns without a second per-provider fetch.
Relationship-specific detail. acceleratorParticipant rows use batch=<label>, or program=<name>; batch=<label> only for a distinct sub-program. program= never repeats the accelerator name or the batch, and batch= never contains the accelerator name — the row already points to the accelerator entity.
Integer entity_relationship.id row id, not an entity UUID
Current-state curation flag for this relationship row. Default relationship reads return only rows where isCurrent=true and isPrimary=true.
Primary/renderable curation flag for this relationship row. isCurrent=false or isPrimary=false hides the row from default relationship reads.
Canonical source entity UUID stored on the relationship row. Compare with the requested entity id and /v1/entities/relationships/types sourceRole/targetRole to orient directional relationships such as parent.
Canonical target entity UUID stored on the relationship row. Compare with the requested entity id and /v1/entities/relationships/types sourceRole/targetRole to orient directional relationships such as parent.