> ## Documentation Index
> Fetch the complete documentation index at: https://docs.spreadjam.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Read the latest research report

> What the latest successful research run found: how many AI answers it read and every action it proposed, best first, with its why, evidence (`details`, `sources`) and the prompts it targets. `report` is null before any run succeeded. Each action is also at `GET /v1/actions/{id}` with its `agentPrompt`.



## OpenAPI

````yaml https://api.spreadjam.com/openapi.json get /v1/research/report
openapi: 3.0.0
info:
  title: SpreadJam API
  version: 1.0.0
servers:
  - url: https://api.spreadjam.com
security: []
tags:
  - name: Meta
    description: Identity and metadata about the authenticated key.
  - name: Keywords
    description: Keyword and topic visibility rankings.
  - name: API keys
    description: Manage the workspace's API keys.
  - name: Analytics
    description: AI-visibility analytics for the workspace.
  - name: Brand
    description: The workspace's brand profile and competitors.
  - name: Prompts
    description: Tracked GEO prompts and their cap state.
  - name: Visibility runs
    description: Run the AI-visibility scan now.
  - name: Credits
    description: The workspace's credit balance and recent charges.
  - name: Actions
    description: Recommended visibility actions and reporting them done.
  - name: Agent connect
    description: >-
      Sign a human up from an agent with one link, then receive an API key once
      they approve. No API key needed.
  - name: Pricing
    description: >-
      The plans an agent can choose for a human and their monthly prices. No API
      key needed.
  - name: Site changes
    description: >-
      Code changes Jam prepares for page edits and technical fixes: preview,
      open the pull request, discard.
  - name: Research
    description: >-
      The research that writes the Plan: its state, its latest report, and
      running it again.
  - name: Answers
    description: >-
      What each AI platform answered to the tracked prompts, with the sources it
      cited.
  - name: Projects
    description: The workspace's projects and the status of each one.
  - name: Billing
    description: The workspace's plan and the links where a person manages billing.
  - name: Webhooks
    description: >-
      HTTP destinations the workspace notifications are POSTed to, signed with a
      per-webhook secret.
  - name: Notifications
    description: >-
      Which notifications reach which channels (including webhooks), per event
      category.
  - name: Opportunities
    description: >-
      Article opportunities: the article pipeline behind the Plan's `new_page`
      actions, and requests to create content from them.
  - name: Planning
    description: Run automatic content planning now.
  - name: Content
    description: Content items, their drafts, and requests to rewrite them.
  - name: Revisions
    description: A content item's revisions.
  - name: Publishing
    description: Publishing content to destinations, now or on a schedule.
  - name: Deliveries
    description: A content item's delivery history.
  - name: Publications
    description: Where a content item is live.
  - name: Destinations
    description: Where content is published, its publishing policy, and its connection.
paths:
  /v1/research/report:
    get:
      tags:
        - Research
      summary: Read the latest research report
      description: >-
        What the latest successful research run found: how many AI answers it
        read and every action it proposed, best first, with its why, evidence
        (`details`, `sources`) and the prompts it targets. `report` is null
        before any run succeeded. Each action is also at `GET /v1/actions/{id}`
        with its `agentPrompt`.
      operationId: get_research_report
      responses:
        '200':
          description: The report.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResearchReportResult'
        '400':
          description: >-
            Invalid request: a parameter or body field is wrong. `details` lists
            each problem with what is allowed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '401':
          description: >-
            Missing, malformed or revoked API key (`Authorization: Bearer
            sk_…`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '404':
          description: The workspace has no GEO project.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '429':
          description: >-
            `rate_limited` (per-key rate) or `too_many_concurrent` (expensive
            reads in flight); retry after `Retry-After` seconds.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
      security:
        - bearerAuth: []
components:
  schemas:
    ResearchReportResult:
      type: object
      properties:
        report:
          $ref: '#/components/schemas/ResearchReport'
      required:
        - report
    ApiError:
      type: object
      required:
        - error
        - code
      properties:
        error:
          type: string
          description: What went wrong and how to fix the request.
        code:
          type: string
          description: >-
            Stable machine-readable code, e.g. invalid_request, unauthorized,
            rate_limited.
        requestId:
          type: string
          description: Echoes the X-Request-Id header; quote it to support.
        docs:
          type: string
          description: Where the error is explained.
        resolveUrl:
          type: string
          description: '402/403 plan errors: the dashboard page that resolves it.'
        details:
          type: array
          description: >-
            One entry per problem: path, message, and when known allowed,
            minimum, maximum, expected, received.
          items:
            type: object
            additionalProperties: true
    ResearchReport:
      type: object
      nullable: true
      properties:
        runId:
          type: string
          format: uuid
        finishedAt:
          type: string
          format: date-time
        answersRead:
          type: integer
          nullable: true
          description: AI answers the run read.
        actionsProposed:
          type: integer
          nullable: true
          description: >-
            Proposals the research produced, before two proposals of the same
            action were merged. `actions` lists the saved actions, so it can be
            shorter; their ranks run 1..n.
        actions:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                format: uuid
              kind:
                type: string
                enum:
                  - page_edit
                  - new_page
                  - outreach
                  - technical
                  - community
                description: >-
                  What the work is: `new_page` (publish a page; Jam can draft
                  it), `page_edit` (change a page on your site; Jam can prepare
                  the code change), `technical` (a technical fix on your site;
                  Jam can prepare the code change), `outreach` (pitch a
                  third-party list or page; your agent does it from
                  `agentPrompt`), `community` (take part in a community thread;
                  your agent does it).
              problem:
                type: string
                enum:
                  - list_absent
                  - list_low_rank
                  - wrong_claim
                  - page_read_rival_won
                  - missing_page
                  - technical_defect
                  - engine_gap
                  - community_absent
                  - unclear_positioning
                  - other
              status:
                type: string
                enum:
                  - suggested
                  - in_progress
                  - sent
                  - done
                  - verified
                  - unverified
                  - dismissed
                  - superseded
                description: >-
                  The action's status, derived from its history: `suggested`:
                  Research recommends it and nobody has acted on it yet.
                  `in_progress`: Someone started it (POST .../start), or Jam is
                  doing it (a draft or a code change is being prepared). `sent`:
                  Outreach only: the pitch went out (reported by the customer or
                  their agent, never sent by Jam). Waiting for the third party
                  to act. `done`: Reported done, or Jam shipped it. Jam checks
                  the page once; until that check passes the action stays done.
                  `verified`: Jam's check found the change on the page (or the
                  brand on the list). `unverified`: Jam's check did not find the
                  change on the page. Fix it and POST .../checks to check again,
                  or POST .../completion with the right URL. `dismissed`: Taken
                  off the Plan by the customer. DELETE .../dismissal puts it
                  back. `superseded`: A later research run no longer proposes it
                  (the gap closed or another action replaced it). Hidden from
                  the list unless includeSuperseded=true.
              title:
                type: string
              why:
                type: string
              details:
                type: array
                items:
                  type: string
              impact:
                type: string
                enum:
                  - high
                  - medium
                  - low
              rank:
                type: integer
              targetUrl:
                type: string
                nullable: true
              sources:
                type: array
                items:
                  type: string
              questions:
                type: array
                items:
                  type: object
                  properties:
                    promptId:
                      type: string
                      description: The tracked prompt (`/v1/prompts`).
                    text:
                      type: string
                      nullable: true
                  required:
                    - promptId
                    - text
            required:
              - id
              - kind
              - problem
              - status
              - title
              - why
              - details
              - impact
              - rank
              - targetUrl
              - sources
              - questions
      required:
        - runId
        - finishedAt
        - answersRead
        - actionsProposed
        - actions
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        A workspace API key issued in Settings → Developer, sent as `Bearer
        sk_…`.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.