> ## 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.

# List actions

> The active GEO project's Plan, highest priority first, with how many actions are in each status. Superseded actions are left out unless `includeSuperseded=true` or `status` names them. Paged: `limit` (default 100, at most 100) and `cursor`; `pageInfo` says whether more pages follow and `countsByStatus` covers every page. Actions are the Plan: everything research recommends (new pages, page edits, technical fixes, outreach). Opportunities (`/v1/opportunities`) are the article pipeline behind `new_page` actions: when Jam drafts a `new_page` action it creates (or links) an opportunity, and the action carries its `opportunityId`. Work from actions; use opportunities only to write an article yourself from its brief.



## OpenAPI

````yaml https://api.spreadjam.com/openapi.json get /v1/actions
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/actions:
    get:
      tags:
        - Actions
      summary: List actions
      description: >-
        The active GEO project's Plan, highest priority first, with how many
        actions are in each status. Superseded actions are left out unless
        `includeSuperseded=true` or `status` names them. Paged: `limit` (default
        100, at most 100) and `cursor`; `pageInfo` says whether more pages
        follow and `countsByStatus` covers every page. Actions are the Plan:
        everything research recommends (new pages, page edits, technical fixes,
        outreach). Opportunities (`/v1/opportunities`) are the article pipeline
        behind `new_page` actions: when Jam drafts a `new_page` action it
        creates (or links) an opportunity, and the action carries its
        `opportunityId`. Work from actions; use opportunities only to write an
        article yourself from its brief.
      operationId: list_actions
      parameters:
        - schema:
            anyOf:
              - type: string
                enum:
                  - suggested
                  - in_progress
                  - sent
                  - done
                  - verified
                  - unverified
                  - dismissed
                  - superseded
              - type: array
                items:
                  type: string
              - type: string
            description: >-
              Only actions in these statuses (repeat the parameter or separate
              with commas). One of: suggested, in_progress, sent, done,
              verified, unverified, dismissed, superseded.
          required: false
          description: >-
            Only actions in these statuses (repeat the parameter or separate
            with commas). One of: suggested, in_progress, sent, done, verified,
            unverified, dismissed, superseded.
          name: status
          in: query
        - schema:
            anyOf:
              - type: string
                enum:
                  - page_edit
                  - new_page
                  - outreach
                  - technical
                  - community
              - type: array
                items:
                  type: string
              - type: string
            description: >-
              Only actions of these kinds. One of: page_edit, new_page,
              outreach, technical, community.
          required: false
          description: >-
            Only actions of these kinds. One of: page_edit, new_page, outreach,
            technical, community.
          name: kind
          in: query
        - schema:
            type: string
            enum:
              - 'true'
              - 'false'
            description: >-
              Also list actions a later research run no longer proposes. Default
              false.
          required: false
          description: >-
            Also list actions a later research run no longer proposes. Default
            false.
          name: includeSuperseded
          in: query
        - schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 100
            description: Maximum number of items to return (1–100).
            example: 20
          required: false
          description: Maximum number of items to return (1–100).
          name: limit
          in: query
        - schema:
            type: string
            minLength: 1
            maxLength: 512
            description: >-
              The `pageInfo.nextCursor` of the previous page. Omit for the first
              page; send the same filters with it.
          required: false
          description: >-
            The `pageInfo.nextCursor` of the previous page. Omit for the first
            page; send the same filters with it.
          name: cursor
          in: query
      responses:
        '200':
          description: The actions.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Actions'
        '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:
    Actions:
      type: object
      properties:
        actions:
          type: array
          items:
            $ref: '#/components/schemas/Action'
        countsByStatus:
          $ref: '#/components/schemas/ActionCounts'
        pageInfo:
          $ref: '#/components/schemas/PageInfo'
      required:
        - actions
        - countsByStatus
        - pageInfo
    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
    Action:
      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
          description: The gap the action closes.
        title:
          type: string
        why:
          type: string
        impact:
          type: string
          enum:
            - high
            - medium
            - low
        rank:
          type: integer
          description: Priority within the Plan; 1 is first.
        targetUrl:
          type: string
          nullable: true
        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.
        opportunityId:
          type: string
          nullable: true
          format: uuid
          description: >-
            The article opportunity (`/v1/opportunities/{id}`) behind a
            `new_page` action, once Jam has one. Null otherwise.
        lastSeenAt:
          type: string
          format: date-time
      required:
        - id
        - kind
        - problem
        - title
        - why
        - impact
        - rank
        - targetUrl
        - status
        - opportunityId
        - lastSeenAt
    ActionCounts:
      type: object
      properties:
        suggested:
          type: integer
        in_progress:
          type: integer
        sent:
          type: integer
        done:
          type: integer
        verified:
          type: integer
        unverified:
          type: integer
        dismissed:
          type: integer
        superseded:
          type: integer
      required:
        - suggested
        - in_progress
        - sent
        - done
        - verified
        - unverified
        - dismissed
        - superseded
      description: >-
        How many of the project's actions are in each status, counted before the
        request's filters.
    PageInfo:
      type: object
      properties:
        limit:
          type: integer
          description: The page size used.
          example: 100
        hasNextPage:
          type: boolean
        nextCursor:
          type: string
          description: >-
            Pass as `cursor`, with the same filters, for the next page. Absent
            on the last page.
        totalCount:
          type: integer
          description: Matching items across every page.
      required:
        - limit
        - hasNextPage
        - totalCount
  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.