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

# List signal agents

> The account's signal agents: the automated lead finders from the
SuperX app. Each agent watches one or more signals (profiles,
followers, keywords, or lists) and scores the people it finds
against its ideal customer profile. Agents can be created, paused,
resumed, and deleted through the API; name, ICP, precision, and
destination edits happen in the SuperX app. `destination_list_id`
joins to `GET /v1/contact-lists` for the target list's name. Not
paginated (agent counts are capped per account).




## OpenAPI

````yaml /api-reference/openapi.yaml get /v1/signals/agents
openapi: 3.1.0
info:
  title: SuperX API
  version: 1.0.0
  description: >
    The SuperX public API: your Twitter/X content, analytics, audience and

    scheduling data over REST.


    All endpoints require an API key (`Authorization: Bearer sxk_...`) except

    `GET /v1/docs`. Keys are created in the SuperX app under Account > API / MCP
    / CLI

    and are server-side secrets.


    Timestamps are UTC ISO-8601 in both directions; inputs must carry an
    explicit

    `Z` or numeric offset. Every authenticated response carries

    `X-RateLimit-Limit`, `X-RateLimit-Remaining` and `X-RateLimit-Reset`
    headers.
  contact:
    name: SuperX
    url: https://superx.so
servers:
  - url: https://api.superx.so
security:
  - apiKey: []
tags:
  - name: Identity
  - name: Content
  - name: Analytics
  - name: Inspiration
  - name: Audience
  - name: Contact Lists
  - name: Signals
  - name: Media
  - name: Scheduling
  - name: Tags
  - name: Context
  - name: Queue
  - name: Articles
  - name: Meta
paths:
  /v1/signals/agents:
    get:
      tags:
        - Signals
      summary: List signal agents
      description: |
        The account's signal agents: the automated lead finders from the
        SuperX app. Each agent watches one or more signals (profiles,
        followers, keywords, or lists) and scores the people it finds
        against its ideal customer profile. Agents can be created, paused,
        resumed, and deleted through the API; name, ICP, precision, and
        destination edits happen in the SuperX app. `destination_list_id`
        joins to `GET /v1/contact-lists` for the target list's name. Not
        paginated (agent counts are capped per account).
      operationId: listSignalAgents
      parameters:
        - $ref: '#/components/parameters/AccountId'
      responses:
        '200':
          description: The account's signal agents.
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/SignalAgent'
              example:
                data:
                  - id: 3
                    name: Founder prospects
                    status: active
                    status_detail: null
                    icp_description: Early-stage SaaS founders posting about growth
                    precision_mode: high
                    destination_list_id: contact:V1StGXR8_Z5jdHi6B-myT
                    created_at: '2026-06-20T09:00:00.000Z'
                    updated_at: '2026-07-01T18:30:00.000Z'
                    deposited_count: 42
                    last_checked: '2026-07-08T06:15:00.000Z'
                    signals:
                      - id: 7
                        type: profile_watch
                        handle: naval
                        name: Naval
                        avatar: https://pbs.twimg.com/profile_images/...
                        query: null
                        list_name: null
                        status: active
                        status_detail: null
                        last_run_at: '2026-07-08T06:15:00.000Z'
                        created_at: '2026-06-20T09:00:00.000Z'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/SubscriptionRequired'
        '404':
          $ref: '#/components/responses/AccountNotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
        '503':
          $ref: '#/components/responses/AccountsUnavailable'
components:
  parameters:
    AccountId:
      name: account_id
      in: query
      required: false
      description: >-
        Account to act on, from `GET /v1/accounts`. Defaults to your main
        account. An id outside your accounts returns `404 account_not_found`.
      schema:
        type: string
  headers:
    X-RateLimit-Limit:
      description: The limit of the rate window closest to exhaustion.
      schema:
        type: integer
    X-RateLimit-Remaining:
      description: Requests remaining in that window.
      schema:
        type: integer
    X-RateLimit-Reset:
      description: Unix timestamp (seconds) when that window resets.
      schema:
        type: integer
  schemas:
    SignalAgent:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        status:
          type: string
          description: active, paused, or error.
        status_detail:
          type: string
          nullable: true
        icp_description:
          type: string
          description: The ideal customer profile the agent scores people against.
        precision_mode:
          type: string
          enum:
            - high
            - discovery
        destination_list_id:
          type: string
          nullable: true
          description: The contact list deposits go to; joins to `GET /v1/contact-lists`.
        created_at:
          type: string
          format: date-time
          nullable: true
        updated_at:
          type: string
          format: date-time
          nullable: true
        deposited_count:
          type: integer
          description: Leads already saved to the destination list.
        last_checked:
          type: string
          format: date-time
          nullable: true
          description: The most recent signal run across the agent's signals.
        signals:
          type: array
          items:
            $ref: '#/components/schemas/SignalAgentSignal'
    SignalAgentSignal:
      type: object
      description: >-
        One watched signal on an agent. Which fields are set depends on the type
        (handle/name/avatar for profile and follower watches, query for keyword
        watches, list_name for list watches).
      properties:
        id:
          type: integer
        type:
          type: string
          enum:
            - profile_watch
            - follower_watch
            - keyword_watch
            - list_watch
        handle:
          type: string
          nullable: true
        name:
          type: string
          nullable: true
        avatar:
          type: string
          nullable: true
        query:
          type: string
          nullable: true
        list_name:
          type: string
          nullable: true
        status:
          type: string
        status_detail:
          type: string
          nullable: true
        last_run_at:
          type: string
          format: date-time
          nullable: true
        created_at:
          type: string
          format: date-time
          nullable: true
    ErrorEnvelope:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - message
          properties:
            code:
              type: string
              description: Stable machine-readable error code.
            message:
              type: string
            retry_after:
              type: integer
              description: Seconds to wait before retrying (rate-limit errors only).
    LegacyErrorEnvelope:
      type: object
      required:
        - error
      description: |
        Legacy shape used ONLY by the shared subscription middleware: a plain
        string `error` field. Seen on `403` when the subscription has lapsed
        (string starts with "subscription_required:") and on `500` when
        subscription verification fails (string starts with "internal_error:").
      properties:
        error:
          type: string
          example: >-
            subscription_required: The SuperX API requires an active
            subscription
  responses:
    Unauthorized:
      description: >-
        Missing/malformed Authorization header (`unauthorized`) or an
        unknown/revoked key (`invalid_api_key`).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
          example:
            error:
              code: invalid_api_key
              message: Unknown or revoked API key
    SubscriptionRequired:
      description: |
        Subscription lapsed. NOTE the legacy body shape: `error` is a plain
        string here, not the `{ code, message }` object. Read-only keys on
        write endpoints instead get the object envelope with code
        `insufficient_scope`.
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/LegacyErrorEnvelope'
              - $ref: '#/components/schemas/ErrorEnvelope'
          example:
            error: >-
              subscription_required: The SuperX API requires an active
              subscription
    AccountNotFound:
      description: account_id is not one of your accounts.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
          example:
            error:
              code: account_not_found
              message: No account with that id belongs to this key
    RateLimited:
      description: Rate limit exceeded (limits vary by plan). Honor Retry-After.
      headers:
        Retry-After:
          description: Seconds to wait before retrying.
          schema:
            type: integer
        X-RateLimit-Limit:
          $ref: '#/components/headers/X-RateLimit-Limit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/X-RateLimit-Remaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/X-RateLimit-Reset'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
          example:
            error:
              code: rate_limited
              message: >-
                Rate limit exceeded for the Pro plan (30 requests/min). Upgrade
                for higher limits.
              retry_after: 42
    InternalError:
      description: >-
        Unexpected server error. May also use the legacy string envelope when
        subscription verification fails.
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/ErrorEnvelope'
              - $ref: '#/components/schemas/LegacyErrorEnvelope'
          example:
            error:
              code: internal_error
              message: Failed to fetch posts
    AccountsUnavailable:
      description: >-
        Linked-account verification is temporarily unavailable (fail closed).
        The main account keeps working.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
          example:
            error:
              code: accounts_unavailable
              message: >-
                Account information is temporarily unavailable. Try again
                shortly.
  securitySchemes:
    apiKey:
      type: http
      scheme: bearer
      description: >-
        A SuperX API key ("sxk_..."), created in the SuperX app under Account >
        API / MCP / CLI. Keys are server-side secrets.

````