ProspectAPIs Messaging reads API

Read your connected account's conversations and threads. One published price per read.

Operations 6

GET /v1/messages List conversations (live) #
GET /v1/messages/inmail-credits Remaining message credits #
GET /v1/messages/thread Read a conversation thread (live) #
GET /v1/connections List your connections (live) #
GET /v1/invitations/received List received invitations (live) #
GET /v1/invitations/sent List sent invitations (live) #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/prospectapis:prospectapis-messaging-reads-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

prospectapis-messaging-reads-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: ProspectAPIs Messaging reads API
  summary: Funding signals and cited prospect research over one REST API.
  description: 'The REST contract for ProspectAPIs: funding rounds you can filter and page, cited prospect research briefs, and funding watchlists that push new matches to a webhook. Built for sales teams and the AI agents that work for them.


    Authentication is a bearer API key (`Authorization: Bearer pa_live_`), created in the dashboard. `GET /pricing`, `GET /health` and `GET /v1/version` need no key.


    Every account starts with a one-time free balance (`signup_credit_usd` in `GET /pricing`), and every paid call draws from it at its own price: `GET /v1/funding` per returned record (a no-match is free), `POST /v1/email/verify` per valid or invalid result, `POST /v1/research` per completed brief. Paid responses carry `X-Credits-Remaining`. The live price list is `GET /pricing`; a key''s balance is `GET /v1/account`. This document describes shapes, not prices.'
  version: 0.1.0
  contact:
    name: ProspectAPIs
    url: https://prospectapis.com
    email: emma@prospectapis.com
  license:
    name: Proprietary
    url: https://prospectapis.com/terms
  termsOfService: https://prospectapis.com/terms
servers:
- url: https://api.prospectapis.com
  description: Production
security:
- bearerAuth: []
tags:
- name: Messaging reads
  description: Read your connected account's conversations and threads. One published price per read.
paths:
  /v1/messages:
    get:
      tags:
      - Messaging reads
      summary: List conversations (live)
      description: Read your connected account's recent conversations, incremental by `since`/`cursor`. $0.01 per read. Billed per call once the messaging reads are live; while they are not yet on sale the call is free (`GET /pricing` reports `messaging_reads.available`).
      operationId: listMessages
      parameters:
      - name: since
        in: query
        required: false
        schema:
          type: string
          maxLength: 4000
        description: Read only what changed after this value from a previous read.
      - name: cursor
        in: query
        required: false
        schema:
          type: string
          maxLength: 4000
        description: Opaque cursor from the previous page.
      - name: count
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          maximum: 20
        description: Conversations per page, 1 to 20.
      responses:
        '200':
          description: The conversations, read fresh, with coverage.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PeopleReadResult'
              example:
                data: {}
                coverage:
                  filled: 1
                  of: 1
          headers:
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '429':
          $ref: '#/components/responses/RateLimited'
        '503':
          description: This read is temporarily unavailable. Nothing was charged.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      x-price-usd: 0.01
      x-agentic-access:
        action-class: connected
        consequence: read-billed
        subject: required
        token:
          max-ttl: 3600
        audit: billing-ledger
  /v1/messages/inmail-credits:
    get:
      tags:
      - Messaging reads
      summary: Remaining message credits
      description: 'Your connected account''s remaining credits for messages to people outside its network (`credits_remaining`), the credits POST /v1/messages with `inmail: true` spends. Free. Until this read is switched on it answers 503 `temporarily_unavailable` (`GET /pricing` lists it nowhere, as it has no price).'
      operationId: getMessageCredits
      parameters: []
      responses:
        '200':
          description: The remaining credits.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PeopleReadResult'
              example:
                data:
                  credits_remaining: 3
                coverage:
                  filled: 1
                  of: 1
          headers:
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
        '503':
          description: This read is temporarily unavailable. Nothing was charged.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      x-agentic-access:
        action-class: connected
        consequence: read
        subject: required
        token:
          max-ttl: 3600
        audit: none
  /v1/messages/thread:
    get:
      tags:
      - Messaging reads
      summary: Read a conversation thread (live)
      description: Read the messages of one conversation thread, incremental by `since`/`cursor`. $0.01 per read. Billed per call once the messaging reads are live; while they are not yet on sale the call is free (`GET /pricing` reports `messaging_reads.available`).
      operationId: readMessageThread
      parameters:
      - name: thread_id
        in: query
        required: true
        schema:
          type: string
          maxLength: 4000
        description: The thread id from GET /v1/messages.
      - name: since
        in: query
        required: false
        schema:
          type: string
          maxLength: 4000
        description: Read only what changed after this value from a previous read.
      - name: cursor
        in: query
        required: false
        schema:
          type: string
          maxLength: 4000
        description: Opaque cursor from the previous page.
      - name: count
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          maximum: 50
        description: Messages per page, 1 to 50.
      responses:
        '200':
          description: The thread's messages, read fresh, with coverage.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PeopleReadResult'
              example:
                data: {}
                coverage:
                  filled: 1
                  of: 1
          headers:
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '429':
          $ref: '#/components/responses/RateLimited'
        '503':
          description: This read is temporarily unavailable. Nothing was charged.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      x-price-usd: 0.01
      x-agentic-access:
        action-class: connected
        consequence: read-billed
        subject: required
        token:
          max-ttl: 3600
        audit: billing-ledger
  /v1/connections:
    get:
      tags:
      - Messaging reads
      summary: List your connections (live)
      description: Read your connected account's first-degree connections, newest first, each with name, headline, profile_ref, person_ref and connected_at. $0.01 per read. Billed per call once the messaging reads are live; while they are not yet on sale the call is free (`GET /pricing` reports `messaging_reads.available`).
      operationId: listConnections
      parameters:
      - name: start
        in: query
        required: false
        schema:
          type: integer
          minimum: 0
          maximum: 10000
        description: 0-based position of the first connection.
      - name: count
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          maximum: 40
        description: Connections per page, 1 to 40.
      - name: cursor
        in: query
        required: false
        schema:
          type: string
          maxLength: 4000
        description: Opaque cursor from the previous page.
      responses:
        '200':
          description: The connections, read fresh, with coverage. `page.cursor` reads the next page.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PeopleReadResult'
              example:
                data: {}
                coverage:
                  filled: 1
                  of: 1
          headers:
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '409':
          description: No account is connected. Connect one with POST /v1/accounts/session, then retry.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: The connected account is signed out. Connect it again, then retry.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          $ref: '#/components/responses/RateLimited'
        '503':
          description: This read is temporarily unavailable. Nothing was charged.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      x-price-usd: 0.01
      x-agentic-access:
        action-class: connected
        consequence: read-billed
        subject: required
        token:
          max-ttl: 3600
        audit: billing-ledger
  /v1/invitations/received:
    get:
      tags:
      - Messaging reads
      summary: List received invitations (live)
      description: Read the connection invitations waiting on your connected account, each with an `invitation_id`, the sender as a person (name, headline, profile_ref, person_ref), the optional message and sent_at. Answer one with POST /v1/invitations/accept or /decline. $0.01 per read. Billed per call once the messaging reads are live; while they are not yet on sale the call is free (`GET /pricing` reports `messaging_reads.available`).
      operationId: listReceivedInvitations
      parameters:
      - name: count
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          maximum: 20
        description: Invitations per page, 1 to 20.
      - name: cursor
        in: query
        required: false
        schema:
          type: string
          maxLength: 4000
        description: Opaque cursor from the previous page.
      responses:
        '200':
          description: The invitations, read fresh, with coverage.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PeopleReadResult'
              example:
                data: {}
                coverage:
                  filled: 1
                  of: 1
          headers:
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '409':
          description: No account is connected. Connect one with POST /v1/accounts/session, then retry.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: The connected account is signed out. Connect it again, then retry.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          $ref: '#/components/responses/RateLimited'
        '503':
          description: This read is temporarily unavailable. Nothing was charged.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      x-price-usd: 0.01
      x-agentic-access:
        action-class: connected
        consequence: read-billed
        subject: required
        token:
          max-ttl: 3600
        audit: billing-ledger
  /v1/invitations/sent:
    get:
      tags:
      - Messaging reads
      summary: List sent invitations (live)
      description: Read the connection invitations your connected account sent, each with status (`pending`, or `accepted` or `withdrawn` where known), the invitee as a person and sent_at. $0.01 per read. Billed per call once the messaging reads are live; while they are not yet on sale the call is free (`GET /pricing` reports `messaging_reads.available`).
      operationId: listSentInvitations
      parameters:
      - name: count
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          maximum: 20
        description: Invitations per page, 1 to 20.
      - name: cursor
        in: query
        required: false
        schema:
          type: string
          maxLength: 4000
        description: Opaque cursor from the previous page.
      responses:
        '200':
          description: The invitations, read fresh, with coverage.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PeopleReadResult'
              example:
                data: {}
                coverage:
                  filled: 1
                  of: 1
          headers:
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '409':
          description: No account is connected. Connect one with POST /v1/accounts/session, then retry.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: The connected account is signed out. Connect it again, then retry.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          $ref: '#/components/responses/RateLimited'
        '503':
          description: This read is temporarily unavailable. Nothing was charged.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      x-price-usd: 0.01
      x-agentic-access:
        action-class: connected
        consequence: read-billed
        subject: required
        token:
          max-ttl: 3600
        audit: billing-ledger
components:
  responses:
    Unauthorized:
      description: The API key is missing or invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    PaymentRequired:
      description: Out of credits. The body carries `top_up_url`; nothing was charged.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    RateLimited:
      description: Too many requests; retry after the window.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    BadRequest:
      description: The request was invalid (e.g. a bad filter or input); nothing was charged.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    PeopleReadResult:
      type: object
      description: A live read's result. `data` is the person, page or result list read fresh at request time; `coverage` reports how many fields of the expected set were present on the source.
      required:
      - data
      - coverage
      properties:
        data:
          type: object
          additionalProperties: true
          description: The read result. For search, posts, engagers and followers this is `{ items, page }`; for a profile it is the profile object.
        coverage:
          type: object
          description: How complete the source was.
          properties:
            filled:
              type: integer
            of:
              type: integer
    Error:
      type: object
      required:
      - error
      description: Every error answers with this shape. `error` is a human-readable message; `code` is a stable machine code when present.
      properties:
        error:
          type: string
        code:
          type: string
          description: A stable error code, e.g. INVALID_FILTER, INVALID_INPUT, INVALID_ID, NOT_FOUND, INSUFFICIENT_CREDITS, WATCHLIST_LIMIT, RATE_LIMITED.
        message:
          type: string
          description: Extra guidance on some errors (401, 402).
        field:
          type: string
          description: The offending field, on some 400s.
        top_up_url:
          type: string
          format: uri
          description: Where to add credits, on a 402.
      additionalProperties: true
  headers:
    RateLimit-Limit:
      description: Requests this API key may make per minute.
      schema:
        type: integer
    RateLimit-Reset:
      description: Seconds until the current window resets.
      schema:
        type: integer
    RateLimit-Remaining:
      description: Requests left in the current one-minute window.
      schema:
        type: integer
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'Your API key as a bearer token: `Authorization: Bearer pa_live_<48 hex>`. Create and manage keys in the dashboard at https://prospectapis.com.'
externalDocs:
  description: API reference and quickstart
  url: https://prospectapis.com/docs