---
title: "Get Person 360"
method: GET
path: "/api/people/person/{person_id}/360"
tags: ["people"]
---

# Get Person 360

`GET /api/people/person/{person_id}/360`

## Request

- Base URL: `https://api.vruum.ai`
- URL: `https://api.vruum.ai/api/people/person/{person_id}/360`
- Auth: `HTTPBearer` (a scheme the document does not define)

Complete person context in one call.

Aggregates person info, match analysis, research, activity timeline,
outreach plan state, and deal info — replacing 5 separate tool calls.

## Path parameters

- `person_id` string, required

## Response `200`

Successful Response

- Person360Response
  - `person` Person360Person, required
    - `person_id` string, required
    - `display_name` string, nullable
    - `first_name` string, nullable
    - `last_name` string, nullable
    - `email` string, nullable
    - `title` string, nullable
    - `company` string, nullable
    - `linkedin_url` string, nullable
    - `phone` string, nullable
    - `stage` string, nullable
    - `match_score` number, nullable
    - `conversation_status` string, nullable
    - `created_at` string, nullable
    - `objective_name` string, nullable
    - `current_positions` object[]
  - `match_analysis` Person360MatchAnalysis
    - `match_summary` string, nullable
    - `alignment_score` number, nullable
    - `overall_confidence` number, nullable
    - `recommended_approach` string, nullable
    - `why_now` string, nullable
    - `potential_concerns` unknown[], nullable
      - unknown
    - `alignment_points` unknown[], nullable
      - unknown
  - `research` Person360Research
    - `company_summary` string, nullable
    - `company_stage` string, nullable
    - `current_priorities` string, nullable
    - `funding_data` object, nullable
  - `activity` Person360Activity[]
    - `activity_type` string, required
    - `description` string, required
    - `timestamp` string, nullable
    - `channel` string, nullable
    - `actor` ActivityActor: Who/what performed an activity (VRU-617). Built from the person_activities actor columns. `type` is derived: agent > human > system. `name` / `sender_label` (display resolution) are populated in a follow-up — the structured ids + agent are the machine-actionable surface the harness needs.
      - `type` string, required
      - `user_id` string, nullable
      - `name` string, nullable
      - `agent` string, nullable
      - `source_system` string, nullable
      - `sender_email_config_id` string, nullable
      - `sender_channel_config_id` string, nullable
      - `sender_label` string, nullable
  - `outreach` Person360Outreach
    - `plan_id` string, required
    - `status` string, nullable
    - `strategy` string, nullable
    - `touches_completed` integer
    - `max_touches` integer
    - `next_action_at` string, nullable
    - `next_action_channel` string, nullable
    - `conversation_messages` object[]
    - `warming_started_at` string, nullable
    - `warming_graduated_at` string, nullable
    - `warming_engagements_sent` integer
    - `nurture_started_at` string, nullable
    - `nurture_engagements_sent` integer
  - `deal` Person360Deal
    - `deal_id` string, required
    - `deal_name` string, nullable
    - `stage` string, nullable
    - `terms` DealTermsRecord: The record as readers see it: the stored columns plus the figures ``app.shared.money`` derives from them.
      - `offer_id` string, nullable
      - `amount_minor` integer, nullable
      - `currency` string
      - `billing_period` 'one_time' | 'monthly' | 'quarterly' | 'annual', nullable
      - `quantity` integer
      - `agreed_at` string, nullable
      - `annual_value_minor` integer, nullable: Annual contract value of recurring terms; null for one-time or unstated terms.
      - `project_total_minor` integer, nullable: The one-time total; null unless billing_period is one_time.
      - `revenue_basis` 'monthly_recurring' | 'project_total', nullable: The ledger basis a commitment on these terms lands on.
      - `stated` boolean: Amount and billing period are both recorded.
      - `agreed` boolean: The customer agreed these terms.
      - `basis` 'stripe' | 'email' | 'crm' | 'agent' | 'operator', nullable: Who authored the figure: stripe (agreed from a confirmed Stripe binding), email (agreed from a customer-authored email over the CRM figure), crm (the CRM sync), agent (the value agent's estimate), operator (a person; with no amount, a person cleared the figure and nothing writes it back). Null when no figure is recorded and nobody cleared one, or when its author predates the record.
      - `text` string: Prose form with the unit, e.g. '1,800.00 USD per month × 3, agreed'.
    - `close_probability` number, nullable
    - `close_probability_source` string, nullable
    - `next_step` string, nullable
    - `next_step_due_at` string, nullable
    - `outcome` string, nullable
  - `warm_path` Person360WarmPath: VRU-662: top warm path to this person from the user's own network. ``status`` distinguishes "no path" from "not computed": found | no_match | sync_pending. ``path`` carries the warm_path_service path dict (connector, score, score_breakdown, evidence) when status='found'.
    - `status` string, required
    - `path` object, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/vruum/apis/vruum-public-api.md) · [All operations](https://skmtc.dev/vruum/apis/vruum-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/vruum/apis/vruum-public-api/revisions/b8ada111c30a?raw)
