---
title: "Read research job events"
method: GET
path: "/research/jobs/{job_id}/events"
tags: ["Research Jobs"]
---

# Read research job events

`GET /research/jobs/{job_id}/events`

## Request

- Base URL: `https://api.crawlora.net/api/v1`
- URL: `https://api.crawlora.net/api/v1/research/jobs/{job_id}/events`
- Auth: API key in header `x-api-key`

Reads a page of events for one of the caller's research jobs, by `job_id`. `limit` is 1 to 100 (default 50); pass `next_cursor` back as `cursor` to continue, with `has_more` showing whether more remain. Each event has `sequence`, `type` (such as `source_fetched` or `round_completed`), `timestamp`, `message` and `source_id`.

## Path parameters

- `job_id` string, required

## Query parameters

- `cursor` string
- `limit` integer

## Headers

- `x-api-key` string, required

## Response `200`

Research job events

- ResearchjobsResearchEventsResponseDoc
  - `code` integer
  - `data` RetrievaltypesJobEventsResponse
    - `has_more` boolean
    - `items` RetrievaltypesJobEvent[]
      - `message` string
      - `sequence` integer
      - `source_id` string
      - `timestamp` string
      - `type` 'submitted' | 'started' | 'search_completed' | 'source_fetched' | 'round_completed' | 'cancellation_requested' | 'completed' | 'failed' | 'cancelled'
    - `job_id` string
    - `next_cursor` string
  - `msg` string

## Other responses

- `400`: Invalid page request or cursor
- `401`: Authentication required
- `404`: Research job not found

---

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