Relationship Intelligence

Correct a detail

Correct a detail replaces one field on this company. It sends the field, the new value, and why, and the company comes back with that value.

post/v1/relationships/{relationshipId}/corrections

Request

  • Base URL: / (relative, and the document was published on a file host, not at the API’s origin)
  • URL: /v1/relationships/{relationshipId}/corrections
  • Auth: HTTP bearer

Path parameters

relationshipIdstring uuid required

Company id.

Example:9c8dfa9b-a7b2-46ea-982c-622a914c00e5

Company this detail belongs to.

Request body

dimension'lifecycle' | 'engagement' | 'sentiment' | 'health' | 'summary' | 'next_action' | 'risk' | 'milestone' required

The detail this form corrects.

reasonstring required

Why this is wrong.

supersedesAssertionIdstring uuid

Earlier evidence on this same detail that this correction replaces.

validTostring date-time nullable

When a temporary correction stops applying.

valuestring required

The value you chose.

Example request

{
  "dimension": "health",
  "reason": "The review happened yesterday.",
  "supersedesAssertionId": "9c8dfa9b-a7b2-46ea-982c-622a914c00e5",
  "validTo": "2026-08-31T17:00:00Z",
  "value": "healthy"
}

Response

Company after the detail is corrected.

accountDomainstring

Account domain.

categoriesstring[] required

Source-backed company categories.

commitmentCountinteger

Commitments currently recorded on this relationship.

companyDescriptionstring

Source-backed company description.

companyEnrichedAtstring date-time nullable

When the company profile was last enriched.

companyEnrichmentDataobject

Facts the company list shows.

companyEnrichmentRefsobject

Citation URLs keyed by enriched company field.

displayNamestring required

Human display name.

emailThreadCountinteger

Observed email threads currently attached to this relationship.

engagement'unknown' | 'increasing' | 'steady' | 'declining' | 'dormant' required

Direction of engagement.

health'unknown' | 'healthy' | 'needs_attention' | 'critical' required

Explainable health state; never a magic score.

idstring uuid required

Stable UUID primary key.

kind'person' | 'company' | 'customer' | 'opportunity' | 'referral' | 'partner' required

Relationship kind.

lastChangedAtstring date-time nullable

Last material state change.

lastTouchAtstring date-time nullable

Last observed touch.

lifecycle'prospect' | 'evaluation' | 'contracting' | 'onboarding' | 'active_customer' | 'renewal' | 'churned' | 'former_customer' required

Commercial lifecycle.

linkedinUrlstring

Verified public LinkedIn company URL.

milestonesstring[] required

Reached relationship milestones.

nextActionstring

Recommended next action.

nextActionAtstring date-time nullable

Next planned action.

openActionsinteger

Open queue actions for this relationship.

peopleCountinteger

Active people currently attached to this relationship.

primaryEmailstring

Primary email address.

projectedAtstring date-time nullable

Explicit evaluation time used by the projector.

projectorVersioninteger required

Deterministic projector version.

resourceRefsstring[] required

Canonical product:type:externalId references.

risksstring[] required

Current relationship risks.

sentiment'unknown' | 'positive' | 'mixed' | 'negative' required

Observed sentiment.

stateHashstring

Stable hash of canonical projected values and winning assertions.

stateReasonstring

Evidence-backed explanation of the projected state.

stateVersioninteger required

Monotonic projection version.

status'active' | 'dormant' | 'closed' | 'archived' required

Lifecycle/status slug. Subscription rows use billing states; background task runs use queued/running/succeeded/failed/stopped.

summarystring

Bounded relationship summary.

Example response

{
  "accountDomain": "example.com",
  "categories": [
    "Artificial intelligence"
  ],
  "commitmentCount": 4,
  "companyDescription": "Builds AI infrastructure for customer operations.",
  "companyEnrichedAt": "2026-09-06T08:00:00Z",
  "companyEnrichmentData": {
    "employee_range": "201-500 employees (2026)",
    "funding_summary": "$80M total; Series C, $35M, 2025-10-10",
    "growth_signals": "Hiring in 2026",
    "headquarters": "San Francisco, California, United States",
    "revenue_range": "$40M-$60M (2025)"
  },
  "displayName": "Jordan Buyer",
  "emailThreadCount": 12,
  "engagement": "declining",
  "health": "needs_attention",
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "kind": "person",
  "lastChangedAt": "2026-07-25T16:00:00Z",
  "lastTouchAt": "2026-04-10T15:00:00Z",
  "lifecycle": "evaluation",
  "linkedinUrl": "https://www.linkedin.com/company/acme",
  "milestones": [
    "Proposal shared."
  ],
  "nextAction": "Confirm the security review owner.",
  "nextActionAt": "2026-07-01T00:00:00Z",
  "openActions": 1,
  "peopleCount": 3,
  "primaryEmail": "buyer@example.com",
  "projectedAt": "2026-07-25T16:00:00Z",
  "projectorVersion": 2,
  "resourceRefs": [
    "hubspot:company:123"
  ],
  "risks": [
    "Security review has no owner."
  ],
  "sentiment": "mixed",
  "stateHash": "sha256:454f195e2389d36fd49e5c9b9656b7b47a3629332a84eb570edf3fa5248851e1",
  "stateReason": "Security review was promised, but no owner or meeting exists.",
  "stateVersion": 4,
  "status": "active",
  "summary": "Asked for pricing in April; wants a follow-up in July."
}

Changes

No operation changes recorded.