---
title: "Upload declarations for the consumer umbrella post-choose flow."
method: POST
path: "/api/intake/{uid}/attach"
---

# Upload declarations for the consumer umbrella post-choose flow.

`POST /api/intake/{uid}/attach`

## Request

- Base URL: `https://api.coveragecat.com`
- URL: `https://api.coveragecat.com/api/intake/{uid}/attach`
- Auth: HTTP bearer

Use this only after the consumer umbrella follow-up reports `documents_needed`. Authenticate with `Authorization: Bearer <intake_access_token>` from the latest consumer-prefill follow-up response. Coverage Cat accepts base64-encoded PDF or image uploads and reuses the same attachment validation and OCR flow as the delegated umbrella checkout. If both the home and auto declarations are already available, prefer one attach call with `attachments[]` so the shopper only approves one upload turn. If your runtime already has the files on disk or can stream raw bytes, prefer the binary `/api/intake/{uid}/attach-upload` fallback instead of hand-building base64. Once the declarations uploads are on file for Monoline or Markel, `documents_pending_review` usually advances to `payment_needed` with a secure `payment_url` within about 5-10 minutes while declarations verification continues in parallel.

## Path parameters

- `uid` string, required

## Headers

- `Coverage-Cat-API-Version` 'v1'
- `Idempotency-Key` string

## Request body

- union
  - object
    - `attachments` object[]: Upload multiple declarations in one call when both files are already available.
      - `content` string, required: Base64-encoded file bytes.
      - `filename` string, required
      - `type` 'declarations' | 'auto_declarations', required
    - `content` string, required: Base64-encoded file bytes.
    - `filename` string, required
    - `type` 'declarations' | 'auto_declarations', required
  - object
    - `attachments` object[], required: Upload multiple declarations in one call when both files are already available.
      - `content` string, required: Base64-encoded file bytes.
      - `filename` string, required
      - `type` 'declarations' | 'auto_declarations', required
    - `content` string: Base64-encoded file bytes.
    - `filename` string
    - `type` 'declarations' | 'auto_declarations'

## Response `200`

Document attached successfully.

- IntakeAssistantResponse: REST consumer follow-up payload for the `/api/intake/{uid}` surface.
  - `poll_after_seconds` integer
  - `documents` object[]
    - `content_type` string
    - `download_url` string, uri: Short-lived browser continuation for this policy document.
    - `label` string
    - `name` string
    - `type` string
  - `payment_setup` object
    - `environment` 'test' | 'live'
    - `payment_method_types` string[]
    - `provider` string
    - `setup_intent_id` string
    - `usage` string
  - `detail_status` 'abandoned' | 'blocked' | 'bound' | 'cancelled' | 'chosen' | 'credit_consent_pending' | 'credit_consent_required' | 'dev_success' | 'documents_needed' | 'documents_pending_review' | 'email_sent' | 'in_review' | 'ineligible' | 'info_requested' | 'needs_more_info' | 'needs_more_info_to_bind' | 'no_policy' | 'no_chosen_offer' | 'no_quotes' | 'no_selection' | 'ok' | 'payment_collection_ready' | 'payment_needed' | 'pending' | 'pending_quotes' | 'queued' | 'quote_rate_limited' | 'quoted' | 'ready_for_review' | 'ready_for_submission' | 'ready_to_finalize' | 'review_pending' | 'service_preview' | 'service_requested' | 'sandbox_unsupported' | 'stale_selection' | 'verifying_documents' | 'waiting_on_carrier' | 'waiting_on_documents' | 'waiting_on_payment'
  - `required_upload_types` string[]
  - `payment_ui` object
    - `availability` 'ready' | 'unknown' | 'unsupported'
    - `fallback_reason` string
    - `mode` string
  - `uid` string, required: Coverage Cat intake uid for the current handoff.
  - `payment_url` string, uri: Coverage Cat browser URL for secure payment fallback.
  - `known_summary` object: Structured facts Coverage Cat can safely summarize at this stage.
  - `compare_details_url` string, uri: Coverage Cat browser URL for compare-details follow-up.
  - `uploaded_count` integer
  - `response_summary` string
  - `schema` object: Supplemental schema hints for homeowners review payloads.
  - `user_action_required` string
  - `expires_at` string, date-time: When the current consumer handoff expires.
  - `agent_instructions` string[]
  - `review_token` string: Opaque review token for delegated review-style submit paths.
  - `status` 'abandoned' | 'blocked' | 'bound' | 'cancelled' | 'chosen' | 'credit_consent_pending' | 'credit_consent_required' | 'dev_success' | 'documents_needed' | 'documents_pending_review' | 'email_sent' | 'in_review' | 'ineligible' | 'info_requested' | 'needs_more_info' | 'needs_more_info_to_bind' | 'no_policy' | 'no_chosen_offer' | 'no_quotes' | 'no_selection' | 'ok' | 'payment_collection_ready' | 'payment_needed' | 'pending' | 'pending_quotes' | 'queued' | 'quote_rate_limited' | 'quoted' | 'ready_for_review' | 'ready_for_submission' | 'ready_to_finalize' | 'review_pending' | 'service_preview' | 'service_requested' | 'sandbox_unsupported' | 'stale_selection' | 'verifying_documents' | 'waiting_on_carrier' | 'waiting_on_documents' | 'waiting_on_payment', required
  - `intake_access_token` string: Short-lived follow-up bearer. On REST, send it back as Authorization for the next `/api/intake/{uid}` call. On MCP, retry the same follow-up tool with this token only when your host cannot preserve Coverage Cat's hidden shopper session. Never display it to the shopper.
  - `selected_offer` object
    - `address` object
      - `city` string
      - `state` string
      - `street` string
      - `zip` string
    - `annual_price` number
    - `carrier` string
    - `coverage_limit` string
    - `coverage_summary` object: Homeowners or umbrella coverage details Coverage Cat can safely summarize.
    - `deductible` number
    - `dwelling_coverage` number
    - `is_estimate` boolean
    - `minimum_auto_limits` object: Underlying auto-limit requirements for this offer.
    - `personal_liability` number
    - `policy_subtype` string
    - `policy_subtype_display` string
    - `price_range` object
      - `high` number
      - `low` number
    - `quote_number` string
    - `recommended` boolean
    - `sample_policy_url` string, uri
    - `selection_guidance` object: Offer-specific same-reply requirements and guidance.
    - `selection_token` string
    - `um_uim_selection` object: Optional excess UM/UIM election details for this offer.
  - `line` 'umbrella' | 'homeowners'
  - `support` object
    - `contact_url` string, uri: Coverage Cat support route for billing, cancellations, and quote follow-up.
    - `email` string
    - `phone` string
  - `purchase_preview` object
    - `action_summary` string
    - `approval_required` boolean
    - `carrier_conditions` string[]
    - `coverage_summary` object: Coverage details tied to the current previewed offer.
    - `effective_date` string, date
    - `effective_period` object
      - `ends_on` string, date
      - `starts_on` string, date
    - `payment_timing` string
    - `price` object
      - `annual_premium` number
      - `currency` string
      - `payment_method` string
    - `status` string
    - `uncertainty` string
  - `service_request` object
    - `action_summary` string
    - `billing_effect` string
    - `carrier_conditions` string[]
    - `coverage_effect` string
    - `details` string
    - `estimated_refund_status` 'not_applicable' | 'unknown_pending_review'
    - `final_outcome` object: Final carrier or billing outcome once Coverage Cat can confirm it.
    - `reason` string
    - `request_id` string
    - `request_type` 'policy_cancellation' | 'refund_request' | 'support_case'
    - `requested_at` string, date-time
    - `requested_effective_date` string, date
    - `status` 'pending_review' | 'completed'
    - `uncertainty` string
  - `conversation` object
    - `messages` object[]
      - `author_label` string
      - `delivery_state` 'received' | 'queued' | 'sent'
      - `direction` 'incoming' | 'outgoing'
      - `medium` 'email' | 'app' | 'sms'
      - `message_id` integer
      - `subject` string
      - `text` string
      - `timestamp` string, date-time
    - `reply_pending` boolean
    - `reply_supported` boolean
    - `reply_to_message_id` integer
    - `reply_via` string
  - `offers_url` string, uri: Coverage Cat browser URL for the selected offer or offer-tracking page.
  - `service_requests` object[]
    - `action_summary` string
    - `billing_effect` string
    - `carrier_conditions` string[]
    - `coverage_effect` string
    - `details` string
    - `estimated_refund_status` 'not_applicable' | 'unknown_pending_review'
    - `final_outcome` object: Final carrier or billing outcome once Coverage Cat can confirm it.
    - `reason` string
    - `request_id` string
    - `request_type` 'policy_cancellation' | 'refund_request' | 'support_case'
    - `requested_at` string, date-time
    - `requested_effective_date` string, date
    - `status` 'pending_review' | 'completed'
    - `uncertainty` string
  - `payment_collection_supported` boolean
  - `review_estimates` object[]
  - `notification_channel` object
    - `customer_owned_inbox_required` boolean
    - `destination_hint` string
    - `events` string[]
    - `registered` boolean
    - `role` string
    - `type` string
  - `credit_consent_question` string
  - `next_action` object: A structured hint for the next allowed tool or endpoint action.
  - `application_submitted` boolean
  - `uploaded` object[]
    - `filename` string
    - `type` string
  - `review` object: Structured review card or selected-offer review block.
  - `missing_fields` object[]: Structured missing-value hints for homeowners pre-submit review.
  - `next_question` object: The current shopper-owned question bundle or bind-stage question.
  - `sandbox` boolean: True when Coverage Cat is returning consumer sandbox test data rather than a live shopper workflow.
  - `selection_guidance` object: Guidance for completing an offer choice in one shopper-facing reply.
  - `review_items` object[]
    - `description` string
    - `display_value` string
    - `enum` string[]
    - `label` string
    - `number` integer
    - `path` union[]
      - union
        - string
        - integer
    - `suggested_value` unknown
  - `payment_status` object
    - `channel` string
    - `customer_owned_inbox_required` boolean
    - `destination_hint` string
    - `payment_intent_id` string
    - `payment_method_saved_at` string, date-time
    - `provider` string
    - `state` string
    - `timing` string
  - `preview_token` string: Opaque bind-preview token for the next homeowners bind confirmation.
  - `offers` object[]
    - `address` object
      - `city` string
      - `state` string
      - `street` string
      - `zip` string
    - `annual_price` number
    - `carrier` string
    - `coverage_limit` string
    - `coverage_summary` object: Homeowners or umbrella coverage details Coverage Cat can safely summarize.
    - `deductible` number
    - `dwelling_coverage` number
    - `is_estimate` boolean
    - `minimum_auto_limits` object: Underlying auto-limit requirements for this offer.
    - `personal_liability` number
    - `policy_subtype` string
    - `policy_subtype_display` string
    - `price_range` object
      - `high` number
      - `low` number
    - `quote_number` string
    - `recommended` boolean
    - `sample_policy_url` string, uri
    - `selection_guidance` object: Offer-specific same-reply requirements and guidance.
    - `selection_token` string
    - `um_uim_selection` object: Optional excess UM/UIM election details for this offer.
  - `service_preview` object
    - `action_summary` string
    - `approval_required` boolean
    - `billing_effect` string
    - `carrier_conditions` string[]
    - `coverage_effect` string
    - `details` string
    - `estimated_refund_status` 'not_applicable' | 'unknown_pending_review'
    - `reason` string
    - `request_type` 'policy_cancellation' | 'refund_request' | 'support_case'
    - `requested_effective_date` string, date
    - `status` 'preview'
    - `uncertainty` string
  - `post_choose` object: Structured post-choose state after a quoted umbrella offer is selected.
  - `pending_fields` object[]: Structured missing-value hints for umbrella pre-submit review.
  - `offer_summary` object
    - `cheapest_annual_premium` number
    - `cheapest_carrier` string
    - `quote_count` integer
    - `recommended_annual_premium` number
    - `recommended_carrier` string
  - `policy` object
    - `cancellation_note` string
    - `cancelled_at` string, date
    - `carrier` string
    - `confirmation_timestamp` string, date-time
    - `coverage_summary` object: Carrier-confirmed policy coverage details Coverage Cat can safely return.
    - `effective_date` string, date
    - `effective_period` object
      - `ends_on` string, date
      - `starts_on` string, date
    - `policy_number` string
    - `state` 'bound' | 'cancelled'
  - `field_estimates` object[]

## Other responses

- `400`: Invalid attachment body or file type.
- `401`: Invalid, missing, or stale intake access token.
- `404`: No intake exists for that uid.
- `409`: Declarations uploads are not currently allowed for this intake state.
- `429`: Too many consumer intake follow-up requests. Honor the Retry-After header before retrying, and always retry with the newest intake access token.

---

[API](https://skmtc.dev/coveragecat/apis/coverage-cat-delegated-insurance-purchase-apis.md) · [All operations](https://skmtc.dev/coveragecat/apis/coverage-cat-delegated-insurance-purchase-apis/llms.txt) · [OpenAPI document](https://skmtc.dev/coveragecat/apis/coverage-cat-delegated-insurance-purchase-apis/revisions/b80fe29790dc?raw)
