---
title: "Quote an interview batch"
method: POST
path: "/api/v1/interview-batch-quotes"
tags: ["Batches"]
---

# Quote an interview batch

`POST /api/v1/interview-batch-quotes`

## Request

- Base URL: `https://app.probbai.com`
- URL: `https://app.probbai.com/api/v1/interview-batch-quotes`
- Auth: HTTP bearer

Review per-item prices and fingerprints before creating an interview batch. Use this to separate items ready for submission from items that need attention.

## Before you call

Send 1–20 quote inputs with unique itemKey values. Each item follows the same prerequisites as a single quote.

**Required scope:** `interviews:write`.

## What happens next

Only items with a non-null quote are ready to include in a submission. total is informational; admissionGuaranteed is always false. Quoting reserves neither capacity nor allowance.

## Recovery

Inspect each errorCode and correct that item before quoting again. Include the returned fingerprint in each admitted item; do not use the aggregate total as authorization for a batch.

[Follow the complete workflow](/integration-bulk/) · [Errors and retries](/api-errors/)

## Request body

- InterviewBatchQuoteInput
  - `items` object[], required: Page or batch entries. An empty list is valid; use the cursor or individual item states to decide what happens next.
    - `itemKey` string, required: Your unique identifier within this batch, used to match each outcome to its input. It is not the HTTP idempotency key.
    - `input` object, required: The request for this individual batch item, using the corresponding single-operation fields.
      - `reportId` string, required: Report ID returned by upload preparation, admission, discovery, or an event. It must belong to the API key's workspace.
      - `candidateEmail` string, email, required: Email address of the intended candidate. The quote and invitation must use the same address.
      - `sendEmail` boolean: True (default) asks ProBB AI to email the invitation. False returns a private link credential for your system to deliver. Invitation batches require true.

## Response `200`

Only items with a non-null quote are ready to include in a submission. total is informational; admissionGuaranteed is always false. Quoting reserves neither capacity nor allowance.

- object
  - `data` InterviewBatchQuote, required
    - `total` object, required: Informational aggregate across successfully quoted items. Each submission is still checked independently.
      - `creditUnits` integer, required: Applicable price in integer units for the assigned configuration. This is a quote, not a reservation; example prices are illustrative.
      - `creditScale` integer, required: Number of integer units per displayed credit. Divide creditUnits by this value; use the scale returned by the API.
      - `quotedItems` integer, required: Number of items successfully quoted; excludes items with errors.
      - `failedItems` integer, required: Number of items that could not be quoted; their quote is null and errorCode explains why.
      - `admissionGuaranteed` false, required: Always false: a quote reserves neither capacity nor allowance.
    - `items` object[], required: Page or batch entries. An empty list is valid; use the cursor or individual item states to decide what happens next.
      - `itemKey` string, required: Your unique identifier within this batch, used to match each outcome to its input. It is not the HTTP idempotency key.
      - `quote` object, nullable, required: This item's quote, or null when quoting failed. Copy its fingerprint into the matching submission item.
        - `reportId` string, required: Report ID returned by upload preparation, admission, discovery, or an event. It must belong to the API key's workspace.
        - `creditUnits` integer, required: Applicable price in integer units for the assigned configuration. This is a quote, not a reservation; example prices are illustrative.
        - `creditScale` integer, required: Number of integer units per displayed credit. Divide creditUnits by this value; use the scale returned by the API.
        - `fingerprint` string, required: Opaque quote fingerprint. Copy it unchanged into quoteFingerprint on the corresponding submission.
        - `interviewSystemVersion` string, required: Assigned interview version captured for this quote or attempt. Existing attempts retain their version.
      - `errorCode` string, nullable, required: Reason this item failed. Null when no item error is present; inspect item state too.

## Other responses

- `400`: Invalid input or cursor
- `401`: Invalid, expired, or revoked API key
- `403`: Disabled organisation or missing scope
- `405`: Method not allowed; consult Allow for supported methods
- `429`: Request limit exceeded
- `500`: Unexpected failure
- `503`: Service unavailable

---

[API](https://skmtc.dev/probbai/apis/probb-ai-customer-api.md) · [All operations](https://skmtc.dev/probbai/apis/probb-ai-customer-api/llms.txt) · [OpenAPI document](https://skmtc.dev/probbai/apis/probb-ai-customer-api/revisions/33a3294530e4?raw)
