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

# List applications

> Every application your key can see, newest first: an agency key sees the whole agency, a broker key only its own broker's. Includes applications created in the portal and by email. Cursor-paginated with limit and starting_after.

Every application your key can see, newest first: an agency key sees the whole agency, a broker key only its own broker's. It includes applications your brokers started in the portal or that came in by email, so you can follow every deal, not only the ones you started.

* **Paging.** Up to `limit` applications (1 to 100, default 20). When `has_more` is `true`, pass `next_cursor` as `starting_after` to get the next page. A `starting_after` your key can't see is a [`400 INVALID_PAGINATION`](/errors/INVALID_PAGINATION).
* **Your own reference.** `client_reference_id` returns only the applications that carry it. It's set when a deal starts from a quote you accept through the API, which isn't available yet, so today this filter returns no applications. See [matching deals](/concepts/applications#pricing-and-the-quote).
* **Filtering by update time** (`updated[gte]`) isn't available yet; it arrives with events (see the [roadmap](/roadmap)). Any query parameter not listed here is a [`422 VALIDATION_FAILED`](/errors/VALIDATION_FAILED).

Each application is the same object [retrieve](/api-reference/applications/retrieve) returns. Test keys don't see applications yet, so they get an empty list.

<RequestExample>
  ```bash cURL theme={null}
  curl "https://portal.bridgelinepf.com/api/v1/applications?limit=2" \
    -H "Authorization: Bearer $BRIDGELINE_API_KEY"
  ```

  ```javascript Node theme={null}
  async function* allApplications() {
    let cursor = null
    do {
      const url = new URL('https://portal.bridgelinepf.com/api/v1/applications')
      url.searchParams.set('limit', '100')
      if (cursor) url.searchParams.set('starting_after', cursor)
      const res = await fetch(url, {
        headers: { Authorization: `Bearer ${process.env.BRIDGELINE_API_KEY}` },
      })
      const page = await res.json()
      yield* page.data
      cursor = page.has_more ? page.next_cursor : null
    } while (cursor)
  }
  ```

  ```python Python theme={null}
  import os
  import requests

  def all_applications():
      cursor = None
      while True:
          params = {"limit": 100}
          if cursor:
              params["starting_after"] = cursor
          page = requests.get(
              "https://portal.bridgelinepf.com/api/v1/applications",
              headers={"Authorization": f"Bearer {os.environ['BRIDGELINE_API_KEY']}"},
              params=params,
              timeout=30,
          ).json()
          yield from page["data"]
          if not page["has_more"]:
              break
          cursor = page["next_cursor"]
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "object": "list",
    "data": [
      {
        "id": "app_0q6Kvneenku3L3654QM2e6",
        "object": "application",
        "livemode": true,
        "status": "processing",
        "created_via": "portal",
        "quote_id": null,
        "accepted_option_id": null,
        "pricing": null,
        "insured": {
          "name": "Hill Country Dental PLLC",
          "address": {"line1": null, "city": null, "state": "TX", "postal_code": null}
        },
        "broker": {"email": "maria@lonestarrisk.example"},
        "policies": [],
        "requirements": {
          "blocking": [
            {
              "code": "BROKER_REVIEW_REQUIRED",
              "param": null,
              "description": "The broker has not finished reviewing the policy details in the portal yet.",
              "due_by": null
            },
            {
              "code": "NO_POLICIES",
              "param": "policies",
              "description": "The application has no policies yet.",
              "due_by": null
            },
            {
              "code": "INSURED_ADDRESS_INCOMPLETE",
              "param": "insured.address",
              "description": "The insured's mailing address is incomplete (street, city, state and ZIP code). Statutory notices are mailed to it.",
              "due_by": null
            }
          ],
          "outstanding": []
        },
        "portal_url": "https://portal.bridgelinepf.com/application/1b9c8d7e-6f5a-4b3c-8d2e-1f0a9b8c7d6e",
        "client_reference_id": null,
        "metadata": {},
        "created_at": "2026-10-14T09:12:44Z"
      },
      {
        "id": "app_1rvJBK4j6przAMoe6NxpXJ",
        "object": "application",
        "livemode": true,
        "status": "ready_for_agreement",
        "created_via": "portal",
        "quote_id": null,
        "accepted_option_id": null,
        "pricing": {
          "option_id": "opt_25_10",
          "down_payment_rate": 0.25,
          "term_months": 10,
          "apr": 0.1198,
          "down_payment": "12146.46",
          "amount_financed": "36439.39",
          "monthly_payment": "3847.13",
          "finance_charge": "2031.91",
          "total_of_payments": "38471.30",
          "total_cost": "50617.76",
          "selected_by": "broker"
        },
        "insured": {
          "name": "Lone Star Fabrication LLC",
          "address": {"line1": "1200 Industrial Blvd", "city": "Houston", "state": "TX", "postal_code": "77002"}
        },
        "broker": {"email": "maria@lonestarrisk.example"},
        "policies": [
          {
            "id": "pol_2o9fj1oLkchQ9qNzyigGf8",
            "carrier": {"name": "Scottsdale Insurance Company", "match": "matched"},
            "total": "48585.85",
            "effective_date": "2026-10-15",
            "expiration_date": "2027-10-15",
            "document_type": "binder",
            "policy_number": "CPS7712045"
          }
        ],
        "requirements": {"blocking": [], "outstanding": []},
        "portal_url": "https://portal.bridgelinepf.com/application/3d6f1c2e-9a3b-4d4c-8e5f-60718293a4b5",
        "client_reference_id": null,
        "metadata": {},
        "created_at": "2026-10-12T15:04:05Z"
      }
    ],
    "has_more": true,
    "next_cursor": "app_1rvJBK4j6przAMoe6NxpXJ"
  }
  ```

  ```json 400 theme={null}
  {
    "error": {
      "type": "invalid_request",
      "code": "INVALID_PAGINATION",
      "message": "starting_after must be the id of an application your key can see.",
      "param": "starting_after",
      "doc_url": "https://docs.bridgelinepf.com/errors#INVALID_PAGINATION",
      "request_id": "req_3kL9qT2wXc7VbN1mZp4RsYhd"
    }
  }
  ```
</ResponseExample>


## OpenAPI

````yaml GET /v1/applications
openapi: 3.1.0
info:
  title: Bridgeline Public API
  version: '2026-09-23'
  description: >-
    Premium finance quotes and applications for agencies. Authenticate with an
    API key from Agency Portal → API Keys. Scopes: `quotes:read` (Read quotes),
    `quotes:write` (Create quotes), `applications:read` (Read applications),
    `applications:write` (Create and edit applications and policies),
    `agreements:write` (Send and void agreements, attest down payments),
    `loans:read` (Read agreements, loans and payouts), `webhooks:manage` (Manage
    webhook endpoints).
servers:
  - url: https://portal.bridgelinepf.com/api
    description: Production (base URL not final, see D2)
security:
  - bearerAuth: []
paths:
  /v1/applications:
    get:
      tags:
        - Applications
      summary: List applications
      description: >-
        Every application your key can see, newest first: an agency key sees the
        whole agency, a broker key only its own broker's. Includes applications
        created in the portal and by email. Cursor-paginated with limit and
        starting_after.
      operationId: listApplications
      parameters:
        - name: limit
          in: query
          required: false
          schema:
            description: How many applications to return, 1 to 100. Default 20.
            type: string
          description: How many applications to return, 1 to 100. Default 20.
        - name: starting_after
          in: query
          required: false
          schema:
            description: >-
              An application id (app_…) from the previous page (its
              next_cursor). Returns the applications created before it.
            type: string
          description: >-
            An application id (app_…) from the previous page (its next_cursor).
            Returns the applications created before it.
        - name: client_reference_id
          in: query
          required: false
          schema:
            description: Only applications with this client_reference_id.
            type: string
          description: Only applications with this client_reference_id.
        - name: Bridgeline-Version
          in: header
          required: false
          description: >-
            API version (a date). Defaults to 2026-09-23; echoed on every
            response.
          schema:
            type: string
            pattern: ^\d{4}-\d{2}-\d{2}$
      responses:
        '200':
          description: A page of applications.
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                    const: list
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          description: app_…
                        object:
                          type: string
                          const: application
                        livemode:
                          type: boolean
                        status:
                          type: string
                          enum:
                            - processing
                            - requires_information
                            - ready_for_agreement
                            - awaiting_signature
                            - pending_activation
                            - active
                            - canceled
                          description: >-
                            processing, requires_information (an item in
                            requirements.blocking holds the agreement back),
                            ready_for_agreement, awaiting_signature (the
                            agreement was sent), pending_activation (the
                            borrower signed; the loan goes live once the down
                            payment settles and the agreement is countersigned),
                            active (final), canceled (final). New values may be
                            added: treat an unknown one as "in progress".
                        created_via:
                          type: string
                          enum:
                            - api
                            - portal
                            - email
                          description: >-
                            api: accepted from a quote through the API. portal:
                            created in the Bridgeline portal. email: created
                            from an email to an intake address.
                        quote_id:
                          description: >-
                            The application's current quote (qte_…), or null
                            when it has none.
                          type:
                            - string
                            - 'null'
                        accepted_option_id:
                          description: >-
                            The option the agency accepted through the API
                            (opt_…), or null.
                          type:
                            - string
                            - 'null'
                        pricing:
                          anyOf:
                            - type: object
                              properties:
                                option_id:
                                  description: >-
                                    opt_<down payment percent>_<term months>;
                                    null when the down payment is not a whole
                                    percent.
                                  type:
                                    - string
                                    - 'null'
                                down_payment_rate:
                                  type: number
                                  description: 'A fraction: 0.25 means 25%.'
                                term_months:
                                  type: integer
                                  minimum: -9007199254740991
                                  maximum: 9007199254740991
                                apr:
                                  type: number
                                  description: 'A fraction: 0.25 means 25%.'
                                down_payment:
                                  type: string
                                  pattern: ^-?\d+\.\d{2}$
                                  description: >-
                                    US dollars, a decimal string with two
                                    decimal places.
                                amount_financed:
                                  type: string
                                  pattern: ^-?\d+\.\d{2}$
                                  description: >-
                                    US dollars, a decimal string with two
                                    decimal places.
                                monthly_payment:
                                  type: string
                                  pattern: ^-?\d+\.\d{2}$
                                  description: >-
                                    US dollars, a decimal string with two
                                    decimal places.
                                finance_charge:
                                  type: string
                                  pattern: ^-?\d+\.\d{2}$
                                  description: >-
                                    US dollars, a decimal string with two
                                    decimal places.
                                total_of_payments:
                                  type: string
                                  pattern: ^-?\d+\.\d{2}$
                                  description: >-
                                    US dollars, a decimal string with two
                                    decimal places.
                                total_cost:
                                  type: string
                                  pattern: ^-?\d+\.\d{2}$
                                  description: >-
                                    US dollars, a decimal string with two
                                    decimal places.
                                selected_by:
                                  type: string
                                  enum:
                                    - broker
                                    - system
                                  description: >-
                                    broker: the broker picked these terms in the
                                    portal. system: our recommended option,
                                    which the broker kept.
                              required:
                                - option_id
                                - down_payment_rate
                                - term_months
                                - apr
                                - down_payment
                                - amount_financed
                                - monthly_payment
                                - finance_charge
                                - total_of_payments
                                - total_cost
                                - selected_by
                            - type: 'null'
                          description: >-
                            The terms the broker has priced in the portal, which
                            the agreement will carry; once the agreement is
                            sent, its own terms. null until the application
                            reaches pricing. total_of_payments is
                            amount_financed + finance_charge, as on the
                            agreement; total_cost is down_payment +
                            total_of_payments.
                        insured:
                          type: object
                          properties:
                            name:
                              type:
                                - string
                                - 'null'
                            address:
                              type: object
                              properties:
                                line1:
                                  type:
                                    - string
                                    - 'null'
                                city:
                                  type:
                                    - string
                                    - 'null'
                                state:
                                  type:
                                    - string
                                    - 'null'
                                postal_code:
                                  type:
                                    - string
                                    - 'null'
                              required:
                                - line1
                                - city
                                - state
                                - postal_code
                          required:
                            - name
                            - address
                        broker:
                          type: object
                          properties:
                            email:
                              type: string
                          required:
                            - email
                          description: The broker who owns the application.
                        policies:
                          type: array
                          items:
                            type: object
                            properties:
                              id:
                                type: string
                                description: >-
                                  pol_… (22 characters on an application; a
                                  quote's policy ids are 8).
                              carrier:
                                type: object
                                properties:
                                  name:
                                    type:
                                      - string
                                      - 'null'
                                  match:
                                    type: string
                                    enum:
                                      - matched
                                      - pending
                                    description: >-
                                      matched once the carrier is linked to our
                                      carrier records.
                                required:
                                  - name
                                  - match
                              total:
                                anyOf:
                                  - type: string
                                    pattern: ^-?\d+\.\d{2}$
                                    description: >-
                                      US dollars, a decimal string with two
                                      decimal places.
                                  - type: 'null'
                                description: >-
                                  Premium plus all taxes and fees; null when not
                                  known yet.
                              effective_date:
                                anyOf:
                                  - type: string
                                    description: A calendar date, YYYY-MM-DD.
                                  - type: 'null'
                              expiration_date:
                                anyOf:
                                  - type: string
                                    description: A calendar date, YYYY-MM-DD.
                                  - type: 'null'
                              document_type:
                                anyOf:
                                  - type: string
                                    enum:
                                      - quote
                                      - binder
                                      - policy
                                  - type: 'null'
                              policy_number:
                                description: >-
                                  null when missing, or when only a placeholder
                                  such as "TBD" is on file.
                                type:
                                  - string
                                  - 'null'
                            required:
                              - id
                              - carrier
                              - total
                              - effective_date
                              - expiration_date
                              - document_type
                              - policy_number
                        requirements:
                          type: object
                          properties:
                            blocking:
                              type: array
                              items:
                                type: object
                                properties:
                                  code:
                                    type: string
                                    description: >-
                                      Stable, machine-readable code. Branch on
                                      this, never on description.
                                  param:
                                    description: >-
                                      Where the fix goes, e.g.
                                      policies[pol_…].policy_number,
                                      insured.address, signer.borrower or
                                      pricing; null when no single field
                                      applies.
                                    type:
                                      - string
                                      - 'null'
                                  description:
                                    type: string
                                  due_by:
                                    anyOf:
                                      - type: string
                                        description: A calendar date, YYYY-MM-DD.
                                      - type: 'null'
                                    description: >-
                                      The date an outstanding policy number or
                                      document is owed by: 30 days after the
                                      agreement is executed (the carrier notice
                                      deadline); null before execution. Always
                                      null for blocking items, and for
                                      CARRIER_UNMATCHED and
                                      INSURED_ADDRESS_INCOMPLETE, which have no
                                      deadline of their own.
                                required:
                                  - code
                                  - param
                                  - description
                                  - due_by
                              description: >-
                                Must clear before the agreement can be sent.
                                CARRIER_UNMATCHED and INSURED_ADDRESS_INCOMPLETE
                                are listed here early but do not hold the status
                                back yet. Empty once the agreement is sent
                                (except AGREEMENT_DECLINED).
                            outstanding:
                              type: array
                              items:
                                type: object
                                properties:
                                  code:
                                    type: string
                                    description: >-
                                      Stable, machine-readable code. Branch on
                                      this, never on description.
                                  param:
                                    description: >-
                                      Where the fix goes, e.g.
                                      policies[pol_…].policy_number,
                                      insured.address, signer.borrower or
                                      pricing; null when no single field
                                      applies.
                                    type:
                                      - string
                                      - 'null'
                                  description:
                                    type: string
                                  due_by:
                                    anyOf:
                                      - type: string
                                        description: A calendar date, YYYY-MM-DD.
                                      - type: 'null'
                                    description: >-
                                      The date an outstanding policy number or
                                      document is owed by: 30 days after the
                                      agreement is executed (the carrier notice
                                      deadline); null before execution. Always
                                      null for blocking items, and for
                                      CARRIER_UNMATCHED and
                                      INSURED_ADDRESS_INCOMPLETE, which have no
                                      deadline of their own.
                                required:
                                  - code
                                  - param
                                  - description
                                  - due_by
                              description: >-
                                Owed after signing, by due_by. Never blocks the
                                agreement.
                          required:
                            - blocking
                            - outstanding
                          description: >-
                            What's left on the deal. New codes may be added:
                            show description for a code you don't know.
                        portal_url:
                          type: string
                          description: >-
                            Where the broker works on this application in the
                            Bridgeline portal (requires a portal login).
                        client_reference_id:
                          type:
                            - string
                            - 'null'
                        metadata:
                          type: object
                          propertyNames:
                            type: string
                          additionalProperties:
                            type: string
                        created_at:
                          type: string
                      required:
                        - id
                        - object
                        - livemode
                        - status
                        - created_via
                        - quote_id
                        - accepted_option_id
                        - pricing
                        - insured
                        - broker
                        - policies
                        - requirements
                        - portal_url
                        - client_reference_id
                        - metadata
                        - created_at
                      description: >-
                        A deal in progress toward a signed premium finance
                        agreement and loan.
                  has_more:
                    type: boolean
                  next_cursor:
                    description: >-
                      Pass as starting_after for the next page; null on the last
                      page.
                    type:
                      - string
                      - 'null'
                required:
                  - object
                  - data
                  - has_more
                  - next_cursor
                description: A page of applications, newest first.
        '400':
          description: Malformed request (bad JSON, version or header).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Missing, invalid, revoked or expired API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: >-
            API access not enabled for this agency (API_ACCESS_NOT_ENABLED for a
            live key, TEST_MODE_NOT_ENABLED for a test key), missing scope, or
            the acting broker is not active.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: Validation failed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Rate limited. See Retry-After.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal error. Safe to retry with the same Idempotency-Key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '503':
          description: >-
            Temporarily unable to serve the request (e.g. pricing inputs
            unavailable). Retry later.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - bearerAuth: []
components:
  schemas:
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - type
            - code
            - message
            - doc_url
            - request_id
          properties:
            type:
              type: string
              enum:
                - invalid_request
                - authentication
                - permission
                - not_found
                - conflict
                - rate_limit
                - api_error
            code:
              type: string
              description: >-
                Stable, machine-readable error code. Branch on this, never on
                `message`.
              examples:
                - INVALID_REQUEST
                - INVALID_JSON
                - INVALID_API_VERSION
                - INVALID_PAGINATION
                - IDEMPOTENCY_KEY_REQUIRED
                - IDEMPOTENCY_KEY_INVALID
                - VALIDATION_FAILED
                - INVALID_API_KEY
                - KEY_REVOKED
                - KEY_EXPIRED
                - MISSING_SCOPE
                - BROKER_NOT_ACTIVE
                - DEFAULT_BROKER_INACTIVE
                - ACTING_BROKER_NOT_ALLOWED
                - API_ACCESS_NOT_ENABLED
                - TEST_MODE_NOT_ENABLED
                - TEST_MODE_ONLY
                - NOT_FOUND
                - METHOD_NOT_ALLOWED
                - IDEMPOTENCY_KEY_REUSED
                - IDEMPOTENCY_REQUEST_IN_PROGRESS
                - QUOTE_EXPIRED
                - QUOTE_ALREADY_INTERESTED
                - RATE_LIMITED
                - INTERNAL
                - IDEMPOTENCY_RECORD_LOST
                - SERVICE_UNAVAILABLE
            message:
              type: string
            param:
              type: string
            details:
              type: array
              items:
                type: object
                required:
                  - code
                  - message
                properties:
                  code:
                    type: string
                  message:
                    type: string
                  param:
                    type: string
            doc_url:
              type: string
              format: uri
            request_id:
              type: string
              pattern: ^req_
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: bl_live_… or bl_test_… API key.

````

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