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

# Retrieve an application

> Returns one application: its status, the terms the broker has priced, its policies and requirements (what is left before the agreement can be sent, and what is owed after signing). Computed fresh on every request. Applications created in the portal or by email are included; their quote_id is null.

Returns one application as it stands right now: its [status](/concepts/applications#status), the terms your broker has priced, its policies and its [requirements](/concepts/applications#requirements). It's computed from the same records the portal uses on every request, never cached.

* Applications your brokers started in the portal, or that came in by email, are included. Their `quote_id` is `null`.
* `pricing` is `null` until your broker reaches the pricing step in the portal.
* There's no `updated_at` yet. To follow a deal, retrieve it again; events that tell you when something changed are on the [roadmap](/roadmap).

An application your key can't see is the same `404` as an id that doesn't exist: one from another agency, or, for a broker key, one that belongs to a colleague. Test keys don't see applications yet.

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

  ```javascript Node theme={null}
  const res = await fetch(`https://portal.bridgelinepf.com/api/v1/applications/${applicationId}`, {
    headers: {
      Authorization: `Bearer ${process.env.BRIDGELINE_API_KEY}`,
    },
  })
  const application = await res.json()
  ```

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

  res = requests.get(
      f"https://portal.bridgelinepf.com/api/v1/applications/{application_id}",
      headers={
          "Authorization": f"Bearer {os.environ['BRIDGELINE_API_KEY']}",
      },
      timeout=30,
  )
  application = res.json()
  ```
</RequestExample>

<ResponseExample>
  ```json 200 requires_information theme={null}
  {
    "id": "app_1rvJBK4j6przAMoe6NxpXJ",
    "object": "application",
    "livemode": true,
    "status": "requires_information",
    "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": null
      }
    ],
    "requirements": {
      "blocking": [
        {
          "code": "MISSING_POLICY_NUMBER",
          "param": "policies[pol_2o9fj1oLkchQ9qNzyigGf8].policy_number",
          "description": "This policy has no usable policy number. Add it in the portal, or have the broker confirm there that it will follow once the carrier binds.",
          "due_by": null
        },
        {
          "code": "SIGNER_MISSING",
          "param": "signer.borrower",
          "description": "The borrower's signer (first name, last name and email) is missing. The broker adds it in the portal.",
          "due_by": null
        }
      ],
      "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"
  }
  ```

  ```json 200 active theme={null}
  {
    "id": "app_4CijAmhQKac0sXiUn7iEiD",
    "object": "application",
    "livemode": true,
    "status": "active",
    "created_via": "email",
    "quote_id": null,
    "accepted_option_id": null,
    "pricing": {
      "option_id": "opt_20_9",
      "down_payment_rate": 0.2,
      "term_months": 9,
      "apr": 0.1209,
      "down_payment": "9220.00",
      "amount_financed": "36880.00",
      "monthly_payment": "4306.98",
      "finance_charge": "1882.86",
      "total_of_payments": "38762.86",
      "total_cost": "47982.86",
      "selected_by": "system"
    },
    "insured": {
      "name": "Brazos Valley Logistics Inc",
      "address": {
        "line1": "88 Commerce St",
        "city": "Waco",
        "state": "TX",
        "postal_code": "76701"
      }
    },
    "broker": {"email": "dev@lonestarrisk.example"},
    "policies": [
      {
        "id": "pol_3qZ0gfBxfB7Kx4WsdBjLK4",
        "carrier": {"name": "Evanston Insurance Company", "match": "matched"},
        "total": "46100.00",
        "effective_date": "2026-10-01",
        "expiration_date": "2027-10-01",
        "document_type": "quote",
        "policy_number": null
      }
    ],
    "requirements": {
      "blocking": [],
      "outstanding": [
        {
          "code": "QUOTE_ONLY_DOCUMENT",
          "param": "policies[pol_3qZ0gfBxfB7Kx4WsdBjLK4].document_type",
          "description": "The binder or policy for this quoted policy is still owed. Send it once the carrier binds.",
          "due_by": "2026-11-04"
        }
      ]
    },
    "portal_url": "https://portal.bridgelinepf.com/application/8a2b4c6d-1e3f-4a5b-9c7d-0e1f2a3b4c5d",
    "client_reference_id": null,
    "metadata": {},
    "created_at": "2026-09-28T13:20:00Z"
  }
  ```

  ```json 404 theme={null}
  {
    "error": {
      "type": "not_found",
      "code": "NOT_FOUND",
      "message": "No such application.",
      "param": "id",
      "doc_url": "https://docs.bridgelinepf.com/errors#NOT_FOUND",
      "request_id": "req_8fJ2kQ9xLm4TzW7nB3cY5pDv"
    }
  }
  ```
</ResponseExample>


## OpenAPI

````yaml GET /v1/applications/{id}
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/{id}:
    get:
      tags:
        - Applications
      summary: Retrieve an application
      description: >-
        Returns one application: its status, the terms the broker has priced,
        its policies and requirements (what is left before the agreement can be
        sent, and what is owed after signing). Computed fresh on every request.
        Applications created in the portal or by email are included; their
        quote_id is null.
      operationId: getApplication
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            description: The application id (app_…).
          description: The application id (app_…).
        - 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: The application.
          content:
            application/json:
              schema:
                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.
        '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'
        '404':
          description: Not found (also returned for other agencies' ids).
          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.