---
title: "Get research"
method: GET
path: "/research/{id}"
tags: ["Research"]
---

# Get research

`GET /research/{id}`

## Request

- Base URL: `https://next.frase.io/api/v1`
- URL: `https://next.frase.io/api/v1/research/{id}`
- Auth: one of:
  - API key in header `X-API-KEY`
  - HTTP bearer

Retrieve a specific research session by ID.

## Path parameters

- `id` string, uuid, required

## Response `200`

Research details

- Research
  - `id` string, uuid
  - `query` string
  - `type` 'general' | 'topic' | 'competitor' | 'gap' | 'serp', nullable
  - `status` 'pending' | 'researching' | 'analyzing' | 'completed' | 'failed', nullable
  - `depth` string, nullable
  - `summary` string, nullable
  - `findings` ResearchFinding[]
    - `title` string
    - `content` string
    - `relevance` number
    - `source_urls` string[]
  - `sources` ResearchSource[]
    - `url` string
    - `title` string
    - `snippet` string
    - `domain` string
  - `site_id` string, uuid, nullable
  - `project_id` string, uuid, nullable
  - `language` string, nullable
  - `country` string, nullable
  - `progress` integer, nullable
  - `created_at` string, date-time
  - `completed_at` string, date-time, nullable
  - `data` object, nullable: Type-specific structured research data. Shape depends on the research type. Null for legacy research sessions.
    - `keywords` object[]: Keywords with metrics (type=general)
      - `keyword` string
      - `search_volume` integer
      - `difficulty` 'Low' | 'Medium' | 'High'
      - `cpc` number
      - `intent` string, nullable
      - `category` string
    - `serp_results` object[]: SERP competitor analysis (type=general, gap)
      - `url` string
      - `title` string
      - `domain` string
      - `rank` integer
      - `word_count` integer
      - `is_own_site` boolean
      - `is_tracked_competitor` boolean
      - `headings` object[]
        - `type` string
        - `text` string
    - `evidence` object[]: Evidence items (type=general)
      - `text` string
      - `type` 'stat' | 'fact' | 'quote'
      - `source` string, nullable
    - `sources` object[]: Sources found (type=general)
      - `url` string
      - `title` string
      - `domain` string
    - `content_gaps` object[]: Content gaps (type=gap, general)
      - `title` string
      - `description` string
      - `impact` 'high' | 'medium' | 'low'
      - `competitors_covering` integer
    - `competitors` object[]: Competitor analysis (type=competitor)
      - `domain` string
      - `url` string
      - `title` string
      - `rank` integer
      - `word_count` integer
      - `headings` object[]
        - `type` string
        - `text` string
    - `topic_directions` object[]: Topic exploration directions (type=topic)
      - `title` string
      - `description` string
      - `angle` string
      - `estimated_difficulty` 'Low' | 'Medium' | 'High'
    - `sub_topics` object[]: Sub-topic opportunities (type=topic)
      - `topic` string
      - `relevance` number
      - `search_volume` integer
    - `keyword_clusters` object[]: Keyword clusters (type=topic)
      - `cluster_name` string
      - `keywords` string[]
      - `total_volume` integer

## Other responses

- `404`: Resource not found

---

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