Cover Whale Submissions API

The Submissions API from Cover Whale — 4 operation(s) for submissions.

Operations 4

GET /submission/{displayId} Get Submission Status #
GET /submission/{displayId}/transactions List Submission Transactions #
POST /submission/{displayId}/public-reply Post a Public Reply #
GET /submission/{displayId}/notes/{id} Get a Public Reply Note #

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/coverwhaleinsurancesolutions:coverwhaleinsurancesolutions-submissions-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

coverwhaleinsurancesolutions-submissions-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Coverwhaleinsurancesolutions Submissions API
  version: '1.0'
  contact:
    name: Cover Whale API Team
  description: 'Operations tagged Submissions across 2 of this provider''s published API definitions: coverwhaleinsurancesolutions-openapi.json, coverwhaleinsurancesolutions-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.coverwhale.dev/v1
security:
- AccessToken: []
tags:
- name: Submissions
paths:
  /submission/{displayId}:
    get:
      tags:
      - Submissions
      summary: Get Submission Status
      description: 'Retrieve the current status and details of a submission by its display ID.


        The response uses a two-part model: `submissionStatus.status` reflects the **latest transaction** (which may be an in-progress endorsement), while `coverages`, `vehicles`, `drivers`, `insuredInformation`, and `premiumFinanceDetails` reflect the **effective (last-bound) policy**. This means a pending endorsement is visible in `status` without blanking out the coverage the bound policy still provides. `account_standing` reports whether that effective policy is `Active`, `Canceled`, or `Not In Force`.


        When a submission is pending cancellation/cancelled the cancellation reason is included in the `submissionStatus` fields returned.'
      operationId: getSubmissionStatus
      parameters:
      - name: Content-Type
        in: header
        required: true
        schema:
          type: string
        example: application/json
      - name: Accept
        in: header
        required: true
        schema:
          type: string
        example: application/json
      - name: AccessToken
        in: header
        required: true
        schema:
          type: string
        example: eyJraWQiOiJnRk5oTTh2RnRKWXVDVXU1S........
      - name: displayId
        in: path
        description: Submission display ID
        required: true
        schema:
          type: string
        example: '2261310'
      - name: include
        in: query
        required: false
        schema:
          type: string
          example: documents
        description: Comma-separated list of extra sections to include. When omitted, documents are NOT returned (faster — ideal for status polling). Pass `documents` to include a `documents` section with signed S3 download URLs keyed by transaction (`new_business`, `endorsement_1`, ...).
      responses:
        '200':
          description: quote success
          content:
            application/json:
              schema:
                properties:
                  insuredInformation:
                    description: Return the insured information
                    type: array
                    items:
                      properties:
                        legal_name:
                          type: string
                          example: Alexander & Alexander, Inc.
                        mailing_address:
                          type: string
                          example: 9524 N TRASK STREET
                        mailing_city:
                          type: string
                          example: TAMPA
                        mailing_state:
                          type: string
                          example: FL
                        mailing_zip:
                          type: string
                          example: '33624'
                      type: object
                  submissionStatus:
                    description: Current status of the submission. `status`, `calculated_status`, and `account_standing` are recomputed on every request (never cached) so they always reflect live state.
                    type: array
                    items:
                      properties:
                        submission_number:
                          type: string
                          example: '2261310'
                        status:
                          type: string
                          description: Status of the LATEST transaction, which may be an in-progress endorsement (e.g. `In Review`, `Quoted`) even while the bound policy remains in force. The `coverages`, `vehicles`, `drivers`, and `insuredInformation` sections continue to reflect the effective (last-bound) policy, so a pending endorsement never blanks them out.
                          example: Request to Bind
                        pending_status:
                          type: string
                          description: Pending action awaiting the partner/insured, or `None` when there is nothing pending.
                          example: None
                        calculated_status:
                          type: string
                          description: Human-readable status badge mirroring the Cover Whale agent portal (e.g. `Bound`, `Cancel Requested`, `Pending Cancellation`, `In progress`, `Expired`). Derived from the latest transaction and recomputed per request.
                          example: Bound
                        account_standing:
                          type: string
                          description: Standing of the effective policy, derived from the new-business record. `Active` = policy is bound and not canceled; `Canceled` = policy has been canceled; `Not In Force` = not yet bound (or no policy).
                          enum:
                          - Active
                          - Canceled
                          - Not In Force
                          example: Active
                        cancellation_reason:
                          type: string
                          description: 'Reason the policy is being, or has been, canceled. **Present only when `status` is `Request to Cancel` or `Canceled`** - for every other status the key is omitted from the response entirely, rather than returned empty.


                            This is the raw stored value, so parse it defensively. It is usually a single reason code (`non_payment`), but it can also be a comma-separated list of codes (`non_payment,insured_broker_request`) or a JSON-encoded array (`["non_payment"]`). An empty string means the canceling transaction carries no recorded reason.


                            Codes seen most often are `non_payment`, `insured_broker_request`, `material_changes`, `does_not_meet_uw_guidelines`, `binding_requirements` and `bind_documents_not_provided`. Treat the set as open rather than fixed.'
                          example: non_payment
                      type: object
                  coverages:
                    description: Return the coverages and the policy values and information
                    type: array
                    items:
                      properties:
                        al:
                          type: array
                          items:
                            properties:
                              limit:
                                type: number
                                example: '100000'
                              premium:
                                type: number
                                example: '0'
                              deductible:
                                type: number
                                example: '0'
                              policy_number:
                                type: string
                                example: CAY00000001-1
                              policy_effective_date:
                                type: string
                                example: '2022-12-15'
                                format: date
                              policy_expiration_date:
                                type: string
                                example: '2023-12-15'
                                format: date
                              carrier:
                                type: string
                                example: Everspan Indemnity Insurance Company
                              carrier_naic:
                                type: number
                                example: '0'
                            type: object
                        apd:
                          type: array
                          items:
                            properties:
                              limit:
                                type: number
                                example: '100000'
                              premium:
                                type: number
                                example: '0'
                              deductible:
                                type: number
                                example: '0'
                              policy_number:
                                type: string
                                example: CAY00000001-1
                              policy_effective_date:
                                type: string
                                example: '2022-12-15'
                                format: date
                              policy_expiration_date:
                                type: string
                                example: '2023-12-15'
                                format: date
                              carrier:
                                type: string
                                example: Everspan Indemnity Insurance Company
                              carrier_naic:
                                type: number
                                example: '0'
                            type: object
                        mtc:
                          type: array
                          items:
                            properties:
                              limit:
                                type: number
                                example: '100000'
                              premium:
                                type: number
                                example: '0'
                              deductible:
                                type: number
                                example: '0'
                              policy_number:
                                type: string
                                example: CAY00000001-1
                              policy_effective_date:
                                type: string
                                example: '2022-12-15'
                                format: date
                              policy_expiration_date:
                                type: string
                                example: '2023-12-15'
                                format: date
                              carrier:
                                type: string
                                example: Everspan Indemnity Insurance Company
                              carrier_naic:
                                type: number
                                example: '0'
                            type: object
                        tgl:
                          type: array
                          items:
                            properties:
                              limit:
                                type: number
                                example: '100000'
                              premium:
                                type: number
                                example: '0'
                              deductible:
                                type: number
                                example: '0'
                              policy_number:
                                type: string
                                example: CAY00000001-1
                              policy_effective_date:
                                type: string
                                example: '2022-12-15'
                                format: date
                              policy_expiration_date:
                                type: string
                                example: '2023-12-15'
                                format: date
                              carrier:
                                type: string
                                example: Everspan Indemnity Insurance Company
                              carrier_naic:
                                type: number
                                example: '0'
                            type: object
                        ntl:
                          type: array
                          items:
                            properties:
                              limit:
                                type: number
                                example: '100000'
                              premium:
                                type: number
                                example: '0'
                              deductible:
                                type: number
                                example: '0'
                              policy_number:
                                type: string
                                example: CAY00000001-1
                              policy_effective_date:
                                type: string
                                example: '2022-12-15'
                                format: date
                              policy_expiration_date:
                                type: string
                                example: '2023-12-15'
                                format: date
                              carrier:
                                type: string
                                example: Everspan Indemnity Insurance Company
                              carrier_naic:
                                type: number
                                example: '0'
                            type: object
                      type: object
                  vehicles:
                    description: Return the vehicles and trailers of the submission
                    type: array
                    items:
                      properties:
                        equipment_type:
                          type: string
                          example: Vehicle
                        vin:
                          type: string
                          example: 21S45D1S45
                        includeAPDTowing:
                          type: string
                          example: Y
                        make:
                          type: string
                          example: VOLVO TRUCK
                        year:
                          type: number
                          example: '2017'
                        model:
                          type: string
                          example: VNL
                        value:
                          type: number
                          example: '50000'
                        body_type:
                          type: string
                          example: box_truck
                        deductible:
                          type: number
                          example: '1000'
                        loss_payee:
                          type: number
                          example: '0'
                      type: object
                  broker:
                    description: Return the broker information
                    type: array
                    items:
                      properties:
                        first_name:
                          type: string
                          example: firstname_1041
                        last_name:
                          type: string
                          example: lastname_1041
                        agency_name:
                          type: string
                          example: M.J. Hall and Company
                        address:
                          type: string
                          example: user_1041@example.com
                        phone:
                          type: string
                          example: '8183371513'
                      type: object
                type: object
                example:
                  insuredInformation:
                    legal_name: Alexander & Alexander, Inc.
                    mailing_address: ''
                    mailing_city: null
                    mailing_state: CA
                    mailing_zip: null
                  submissionStatus:
                    submission_number: '2261310'
                    status: Request to Bind
                    pending_status: None
                    calculated_status: Bind Requested (Underwriting Review)
                    account_standing: Not In Force
                  coverages:
                    al:
                      limit: 1000000
                      premium: '17300.00'
                      deductible: null
                      policy_number: null
                      policy_effective_date: '2022-12-15'
                      policy_expiration_date: '2023-12-15'
                      carrier: Everspan Indemnity Insurance Company
                      carrier_naic: 0
                    apd:
                      limit: 50000
                      premium: '2500.00'
                      deductible: 1000
                      policy_number: null
                      policy_effective_date: '2022-12-15'
                      policy_expiration_date: '2023-12-15'
                      carrier: Everspan Indemnity Insurance Company
                      carrier_naic: 0
                    mtc:
                      limit: 100000
                      premium: '5000.00'
                      deductible: 100
                      policy_number: null
                      policy_effective_date: '2022-12-15'
                      policy_expiration_date: '2023-12-15'
                      carrier: Canopius US Insurance
                      carrier_naic: 0
                  vehicles:
                  - equipment_type: Vehicle
                    vin: 21S45D1S45
                    make: VOLVO TRUCK
                    year: 2017
                    model: VNL
                    value: 50000
                    body_type: box_truck
                    deductible: 1000
                    loss_payee: null
                  broker:
                    first_name: firstname_1041
                    last_name: lastname_1041
                    agency_name: M.J. Hall and Company
                    address: user_1041@example.com
                    phone: '8183371513'
                  retailAgent: []
        '404':
          description: error
          content:
            application/json:
              schema:
                properties:
                  error:
                    description: Submission not found.
                    type: string
                type: object
                example:
                  error: Submission not found.
    servers:
    - url: https://api.coverwhale.dev/v1
  /submission/{displayId}/transactions:
    get:
      tags:
      - Submissions
      summary: List Submission Transactions
      description: 'List every transaction on a submission (new business plus each endorsement, reinstatement, and cancellation) with a lightweight status summary. Use this to track how a policy has changed over time without pulling each transaction''s full detail.


        Results are scoped to the calling partner''s own submissions. A display ID that does not exist, or that belongs to another company, returns `404` — existence is never revealed to a non-owner.'
      operationId: getSubmissionTransactions
      parameters:
      - name: Content-Type
        in: header
        required: true
        schema:
          type: string
        example: application/json
      - name: Accept
        in: header
        required: true
        schema:
          type: string
        example: application/json
      - name: AccessToken
        in: header
        required: true
        schema:
          type: string
        example: eyJraWQiOiJnRk5oTTh2RnRKWXVDVXU1S........
      - name: displayId
        in: path
        description: Submission display ID
        required: true
        schema:
          type: string
        example: '2261310'
      responses:
        '200':
          description: Transaction list
          content:
            application/json:
              schema:
                properties:
                  display_id:
                    type: string
                    example: '2261310'
                  transaction_count:
                    description: Total number of transactions on the submission (new business + endorsements + reinstatements + cancellations).
                    type: integer
                    example: 3
                  endorsement_count:
                    description: Number of bound endorsement transactions (excludes in-progress/quoted endorsements).
                    type: integer
                    example: 2
                  transactions:
                    type: array
                    items:
                      properties:
                        transaction_number:
                          description: Sequential transaction index. `0` is always new business; `1`, `2`, ... are subsequent endorsements/reinstatements/cancellations.
                          type: integer
                          example: 0
                        transaction_type:
                          type: string
                          enum:
                          - NEW_BUSINESS
                          - RENEWAL
                          - ENDORSEMENT
                          - CANCELLATION
                          - REINSTATEMENT
                          example: NEW_BUSINESS
                        status:
                          description: Status of this transaction (e.g. `Bound`, `Quoted`, `In Review`, `Canceled`, `Reversed`).
                          type: string
                          example: Bound
                        effective_date:
                          type: string
                          format: date
                          example: '2025-10-03'
                      type: object
                type: object
                example:
                  display_id: '2261310'
                  transaction_count: 3
                  endorsement_count: 2
                  transactions:
                  - transaction_number: 0
                    transaction_type: NEW_BUSINESS
                    status: Bound
                    effective_date: '2025-10-03'
                  - transaction_number: 1
                    transaction_type: ENDORSEMENT
                    status: Bound
                    effective_date: '2025-11-04'
                  - transaction_number: 2
                    transaction_type: ENDORSEMENT
                    status: Quoted
                    effective_date: '2026-01-06'
        '404':
          description: Submission not found, or not owned by the calling partner
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                type: object
                example:
                  error: Submission not found
    servers:
    - url: https://api.coverwhale.dev/v1
  /submission/{displayId}/public-reply:
    post:
      tags:
      - Submissions
      summary: Post a Public Reply
      description: 'Post a public reply / note back onto a submission — the inbound counterpart to the outbound `submission.public_reply` webhook. The note is recorded on the submission and is visible to Cover Whale staff on the account''s Notes tab; it does not trigger a webhook back to you.


        Scoped to the calling partner''s own submissions. A display ID that does not exist, or that belongs to another company, returns `404` — existence is never revealed to a non-owner.'
      operationId: postSubmissionPublicReply
      parameters:
      - name: Content-Type
        in: header
        required: true
        schema:
          type: string
        example: application/json
      - name: Accept
        in: header
        required: true
        schema:
          type: string
        example: application/json
      - name: AccessToken
        in: header
        required: true
        schema:
          type: string
        example: eyJraWQiOiJnRk5oTTh2RnRKWXVDVXU1S........
      - name: displayId
        in: path
        description: Submission display ID
        required: true
        schema:
          type: string
        example: '2261310'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              properties:
                content:
                  description: The reply text to record on the submission. Required, up to 5000 characters. HTML is sanitized on write.
                  type: string
                  example: Please add the trailer VIN 1UYVS2538 to this policy.
              required:
              - content
              type: object
      responses:
        '201':
          description: Reply recorded
          content:
            application/json:
              schema:
                properties:
                  status:
                    type: string
                    example: success
                  note_id:
                    type: integer
                    example: 987654
                type: object
        '404':
          description: Submission not found, or not owned by the calling partner
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                type: object
                example:
                  error: Submission not found
        '422':
          description: Validation error (e.g. missing or empty content)
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                  errors:
                    type: object
                type: object
                example:
                  message: The content field is required.
                  errors:
                    content:
                    - The content field is required.
    servers:
    - url: https://api.coverwhale.dev/v1
  /submission/{displayId}/notes/{id}:
    get:
      tags:
      - Submissions
      summary: Get a Public Reply Note
      description: 'Retrieve the body of a single public reply note by its note ID — the pull counterpart to the content-free `submission.public_reply` webhook. The webhook tells you *that* a reply happened and gives you a `note_id`; this endpoint returns the text.


        **Only public replies are retrievable.** Internal notes are never returned. A note ID that does not exist, identifies an internal note, belongs to a different submission than the `displayId` you passed, or belongs to another company all return the same `404` with the same body — the responses are deliberately indistinguishable, so a non-public note''s existence is never revealed.


        Company scoping is an **exact** match on the calling partner''s own company, mirroring the webhook side: you can resolve exactly the note IDs you were pushed, and no others. A parent company cannot read a child company''s note even where broader visibility exists elsewhere in the platform.'
      operationId: getSubmissionNote
      parameters:
      - name: Accept
        in: header
        required: true
        schema:
          type: string
        example: application/json
      - name: AccessToken
        in: header
        required: true
        schema:
          type: string
        example: eyJraWQiOiJnRk5oTTh2RnRKWXVDVXU1S........
      - name: displayId
        in: path
        description: Submission display ID. Must be the submission the note belongs to.
        required: true
        schema:
          type: string
        example: '2261310'
      - name: id
        in: path
        description: Note ID, as delivered in the `note_id` field of a `submission.public_reply` webhook.
        required: true
        schema:
          type: string
        example: '884213'
      responses:
        '200':
          description: Public reply note
          content:
            application/json:
              schema:
                properties:
                  note_id:
                    description: The note's ID, echoed back as a string.
                    type: string
                    example: '884213'
                  display_id:
                    description: The submission the note belongs to.
                    type: string
                    example: '2261310'
                  body:
                    description: The reply text. There is no separate subject field.
                    type: string
                    example: Your down payment has been received — coverage is active.
                  occurred_at:
                    description: When the note was created. ISO 8601 with offset.
                    type: string
                    format: date-time
                    example: '2026-07-06T20:41:07+00:00'
                type: object
        '401':
          description: Unauthorized — missing or invalid AccessToken
        '404':
          description: Not found. Returned identically for a missing note, an internal (non-public) note, a display ID that does not match the note, and a note belonging to another company.
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                    example: Not found.
                type: object
    servers:
    - url: https://api.coverwhale.dev/v1
components:
  securitySchemes:
    AccessToken:
      type: apiKey
      description: JWT returned as AccessToken by the /authentication endpoint (the Cognito ID token carrying the email claim). It expires after 3600 seconds.
      name: AccessToken
      in: header
x-refined-from:
- coverwhaleinsurancesolutions-openapi.json
- coverwhaleinsurancesolutions-openapi.json