Peerbound Moments API

The Moments API from Peerbound — 2 operation(s) for moments.

Operations 2

GET /moments List moments #
GET /moments/{moment_id} Get a moment #

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/peerbound:peerbound-moments-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

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

peerbound-moments-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Peerbound Public Moments API
  description: 'The Peerbound Public API provides read-only access to your organization''s data for integration

    with external systems such as data warehouses and business intelligence tools.


    ## Authentication


    All requests require an API key passed via the `X-API-Key` header.


    **To obtain an API key:**

    1. Navigate to Settings > API Keys in the Peerbound web app

    2. Generate a new key

    3. Copy the key immediately—it will only be shown once


    **Note:** Only organization admins can access the API Keys settings page. API access is not

    enabled by default and must be enabled by the Peerbound team for your organization.


    ## Incremental Sync


    This API is designed for executing incremental data syncs. All list endpoints:

    - Return results ordered by `updated_at` ascending (oldest updates first)

    - Support an `updated_since` filter to fetch only records modified after a given timestamp

    - Use cursor-based pagination for efficient iteration through large datasets

    - Include deleted records (with `is_deleted: true`) so you can sync deletions


    **Recommended sync pattern:**

    1. On first sync, fetch all records without `updated_since`

    2. Store the `updated_at` timestamp of the most recent record

    3. On subsequent syncs, pass that timestamp as `updated_since` to fetch only changes


    *Warning:* If a record is updated while you are paginating through results, the same record may appear

    again in a later page. Your sync logic should handle this by prioritizing the version of the

    record returned in the later page.


    ## Rate Limiting


    To protect infrastructure and ensure fair usage, the API enforces rate limits:


    - **1,000 requests per hour** (hourly limit)

    - **5 requests per second** (burst limit)


    Rate limits are applied **per organization**, not per API key. Multiple API keys for the same

    organization share the same limit.


    The hourly limit uses a fixed window that resets at the top of each hour (e.g., 10:00, 11:00).

    When you exceed the limit, you''ll receive a `429 Too Many Requests` response with a `Retry-After`

    header indicating how long to wait.


    All responses include rate limit headers:


    | Header | Description |

    |--------|-------------|

    | `RateLimit-Limit` | Maximum requests allowed per hour |

    | `RateLimit-Remaining` | Requests remaining in the current window |

    | `RateLimit-Reset` | Seconds until the rate limit resets |


    ## Support


    If you encounter unexpected issues, please contact **support@peerbound.com**. To help us

    investigate, include:


    - The request payload that caused the issue

    - The `X-Request-ID` header value from the response


    Every API response includes an `X-Request-ID` header with a unique identifier for that request.'
  version: v1
servers:
- url: /api/public/v1
tags:
- name: Moments
paths:
  /moments:
    get:
      tags:
      - Moments
      summary: List moments
      description: Retrieve a paginated list of moments (quotes) for your organization.
      operationId: list_moments_moments_get
      parameters:
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 200
          minimum: 1
          description: Maximum number of moments to return
          default: 100
          title: Limit
        description: Maximum number of moments to return
      - name: cursor
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Pagination cursor from previous response
          title: Cursor
        description: Pagination cursor from previous response
      - name: updated_since
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          description: Filter records updated at or after this timestamp (ISO 8601)
          title: Updated Since
        description: Filter records updated at or after this timestamp (ISO 8601)
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListResponse_Moment_'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: API access not enabled
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Rate limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /moments/{moment_id}:
    get:
      tags:
      - Moments
      summary: Get a moment
      description: Retrieve a single moment (quote) by its ID.
      operationId: get_moment_moments__moment_id__get
      parameters:
      - name: moment_id
        in: path
        required: true
        schema:
          type: string
          title: Moment Id
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Moment'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: API access not enabled
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Rate limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Moment not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    Moment:
      properties:
        id:
          type: string
          title: Id
          description: Unique Peerbound identifier for the quote
        text:
          type: string
          title: Text
          description: The quote text
        approval_state:
          type: string
          enum:
          - Not Approved
          - Approved – Anonymous
          - Approved – Public
          title: Approval State
          description: Approval status of the quote
        moment_type:
          anyOf:
          - type: string
            enum:
            - AI Hype
            - Competitive Clue
            - Expansion Potential
            - Impact Insight
            - Partner Love
            - People Praise
            - Sentiment Signal
            - Use Case Finder
          - type: 'null'
          title: Moment Type
          description: Category/type of the moment
        recording:
          anyOf:
          - $ref: '#/components/schemas/RecordingSource'
          - type: 'null'
          description: Source recording metadata (null for external moments)
        account:
          anyOf:
          - $ref: '#/components/schemas/LinkedAccount'
          - type: 'null'
          description: Associated account (customer)
        contact:
          anyOf:
          - $ref: '#/components/schemas/LinkedContact'
          - type: 'null'
          description: Associated contact (person)
        occurred_at:
          anyOf:
          - type: string
          - type: 'null'
          title: Occurred At
          description: When the moment occurred (ISO 8601)
        is_deleted:
          type: boolean
          title: Is Deleted
          description: Whether the moment quote has been deleted
        created_at:
          type: string
          title: Created At
          description: Timestamp when the quote was created (ISO 8601)
        updated_at:
          type: string
          title: Updated At
          description: Timestamp when the quote or moment was last updated (ISO 8601)
      type: object
      required:
      - id
      - text
      - approval_state
      - is_deleted
      - created_at
      - updated_at
      title: Moment
      description: 'A customer moment (quote) extracted from a call recording.


        Moments are flattened from the internal moment/moment_quote structure

        to expose quotes directly at the top level.'
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    PaginationInfo:
      properties:
        next_cursor:
          anyOf:
          - type: string
          - type: 'null'
          title: Next Cursor
          description: Opaque cursor to fetch the next page. Null if no more results.
        has_more:
          type: boolean
          title: Has More
          description: Whether there are more results available
        limit:
          type: integer
          title: Limit
          description: Maximum number of results requested
      type: object
      required:
      - has_more
      - limit
      title: PaginationInfo
      description: 'Pagination metadata for list responses.


        All list endpoints use cursor-based pagination with consistent metadata.'
    RecordingSource:
      properties:
        type:
          anyOf:
          - type: string
            enum:
            - attention
            - avoma
            - bluedot
            - chorus
            - clari
            - fireflies
            - gong
            - goodmeetings
            - granola
            - momentum
            - outreach
            - salesloft
          - type: string
            const: ai_interview
          title: Type
          description: Recording platform identifier
        id:
          anyOf:
          - type: string
          - type: 'null'
          title: Id
          description: Call ID on the source platform
        title:
          anyOf:
          - type: string
          - type: 'null'
          title: Title
          description: Title of the recording/call
        url:
          anyOf:
          - type: string
          - type: 'null'
          title: Url
          description: Link to the recording on source platform
      type: object
      required:
      - type
      title: RecordingSource
      description: Source recording metadata for a moment.
    ListResponse_Moment_:
      properties:
        data:
          items:
            $ref: '#/components/schemas/Moment'
          type: array
          title: Data
          description: List of resources
        pagination:
          $ref: '#/components/schemas/PaginationInfo'
          description: Pagination information
      type: object
      required:
      - data
      - pagination
      title: ListResponse[Moment]
    LinkedAccount:
      properties:
        id:
          type: string
          title: Id
          description: Unique Peerbound identifier for the account
        name:
          type: string
          title: Name
          description: Name of the account
        salesforce_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Salesforce Id
          description: Salesforce Account ID if synced
        hubspot_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Hubspot Id
          description: HubSpot Company ID if synced
      type: object
      required:
      - id
      - name
      title: LinkedAccount
      description: 'Account (customer company) linked to a resource.


        Used for stories, reviews, and moments to reference the associated account.'
    ErrorResponse:
      properties:
        error:
          $ref: '#/components/schemas/ErrorDetail'
          description: Error details
      type: object
      required:
      - error
      title: ErrorResponse
      description: Standard error response format for all API errors.
    ErrorDetail:
      properties:
        code:
          type: string
          title: Code
          description: Machine-readable error code
        message:
          type: string
          title: Message
          description: Human-readable error message
      type: object
      required:
      - code
      - message
      title: ErrorDetail
      description: Details of an API error.
    LinkedContact:
      properties:
        id:
          type: string
          title: Id
          description: Unique Peerbound identifier for the contact
        name:
          anyOf:
          - type: string
          - type: 'null'
          title: Name
          description: Full name of the contact
        email:
          anyOf:
          - type: string
          - type: 'null'
          title: Email
          description: Email address of the contact
        salesforce_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Salesforce Id
          description: Salesforce Contact ID if synced
        hubspot_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Hubspot Id
          description: HubSpot Contact ID if synced
      type: object
      required:
      - id
      title: LinkedContact
      description: 'Contact (person) linked to a resource.


        Used for reviews and moments to reference the associated contact.'