---
title: "Get Search"
method: GET
path: "/v1/search/{search_id}"
---

# Get Search

`GET /v1/search/{search_id}`

Get search results.

Returns the status and results of a search request.
Optionally provide a page_id to retrieve a specific page of results.

## Path parameters

- `search_id` string, required

## Query parameters

- `page_id` string, nullable

## Response `200`

Successful Response

- GetSearchResponseV1 — Response from GET /v1/search/{id} - retrieving search status and results.
  - `id` string, required — Unique identifier for the search request
  - `url` string, required — URL to view the search results on Happenstance (points to parent search for continued searches)
  - `status` string, required — Status of the search (RUNNING, COMPLETED, FAILED)
  - `text` string, required — Original search query text
  - `created_at` string, required — Timestamp when search was created (ISO 8601 format)
  - `updated_at` string, required — Timestamp when search was last updated (ISO 8601 format)
  - `group_ids` string[] — List of group IDs that were searched
  - `include_friends_connections` boolean — Whether the search included friends' connections
  - `include_my_connections` boolean — Whether the search included the user's own connections
  - `mutuals` SearchMutualV1[], nullable — All unique mutual connections across results. Results reference these by index.
    - `index` integer, required — Index of this mutual in the mutuals array
    - `id` string, required — Unique identifier for the mutual connection
    - `name` string, required — Name of the mutual connection
    - `happenstance_url` string, required — URL to the mutual's Happenstance profile
  - `traits` SearchTraitV1[], nullable — All trait definitions for this search. Results reference these by index.
    - `index` integer, required — Index of this trait in the traits array
    - `header` string, required — Short label for the trait (e.g., 'Undergrad')
    - `description` string, nullable — Full trait description explaining what was evaluated
  - `results` SearchPersonV1[], nullable — Search results (only populated when status is COMPLETED)
    - `id` string, required — Unique identifier for the person
    - `name` string, required — Person's name
    - `weighted_traits_score` number, required — Overall relevance score based on trait evaluations. Calculated as sum of trait scores minus penalties for traits scored zero. Can be negative.
    - `current_title` string, nullable — Current job title
    - `current_company` string, nullable — Current company
    - `summary` string, nullable — AI-generated summary of why this person matches
    - `socials` SocialsV1, required — Profile URLs for a person
      - `happenstance_url` string, required — URL to the person's Happenstance profile
      - `linkedin_url` string, nullable — LinkedIn profile URL
      - `twitter_url` string, nullable — Twitter/X profile URL
      - `instagram_url` string, nullable — Instagram profile URL
    - `mutuals` SearchMutualRefV1[], nullable — References to mutual connections (indices into top-level mutuals array)
      - `index` integer, required — Index into the top-level mutuals array
      - `affinity_score` number, nullable — Affinity score indicating connection strength between the mutual and this person. Higher values indicate stronger connections.
    - `traits` SearchTraitScoreV1[], nullable — Trait scores for this person (indices into top-level traits array)
      - `index` integer, required — Index into the top-level traits array
      - `score` number, required — Score for this trait (0, 0.5, or 1)
      - `evidence` string, nullable — Supporting quote or citation from the person's profile
  - `page_id` string, nullable — Page identifier for the current result page. Null for the first page (the parent search itself). For subsequent pages, this is the page_id returned by POST /v1/search/{id}/find-more.
  - `next_page` string, nullable — Page identifier for the next result page. Use as the page_id query parameter on GET /v1/search/{id}?page_id={next_page} to retrieve the next page. Null if no next page exists.
  - `has_more` boolean — Whether more results may be available via POST /v1/search/{id}/find-more. Searches return up to 30 results at a time.

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `402` — Payment Required
- `403` — Forbidden
- `404` — Not Found
- `410` — Gone
- `422` — Validation Error
- `500` — Internal Server Error
- `503` — Service Unavailable

---

[API](https://skmtc.net/happenstance/apis/happenstance-api.md) · [All operations](https://skmtc.net/happenstance/apis/happenstance-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/happenstance/happenstance-api/revisions/d5e1f45dc5e4/schema)
