---
title: "Record one founder answer or skip disposition"
method: POST
path: "/companies/{companyId}/onboarding/v3/questions/{questionId}/answer"
tags: ["Onboarding"]
---

# Record one founder answer or skip disposition

`POST /companies/{companyId}/onboarding/v3/questions/{questionId}/answer`

## Request

- Base URL: `https://api.medianfi.com/api/v1`
- URL: `https://api.medianfi.com/api/v1/companies/{companyId}/onboarding/v3/questions/{questionId}/answer`
- Auth: HTTP bearer

Atomically records exactly one choice, text answer, or skip and creates an accountant action. It performs no transaction categorization or other ledger mutation. #2019: a text answer to the deferred Business Basics "Fiscal year end" question must read as a real month-day ("06-30", "6/30", "June 30"); otherwise 422 and nothing is recorded. A valid one is written to companies.fiscal_year_end as MM-DD. Chips and skips never write it.

## Request body

- union
  - OnboardingV3QuestionChoiceAnswer
    - `choice` string, required
  - OnboardingV3QuestionTextAnswer
    - `text` string, required
  - OnboardingV3QuestionSkippedAnswer
    - `skipped` true, required

## Response `200`

Persisted question with its record-only answer

- OnboardingV3QuestionApiResponse
  - `success` true, required
  - `data` OnboardingV3Question, required
    - `id` string, uuid, required
    - `threadId` string, uuid, required
    - `companyId` string, uuid, required
    - `ask` string, required
    - `chips` string[], required
    - `transactionRef` OnboardingV3QuestionTransactionRef, required
      - `account` string, required
      - `date` string, date, required
      - `amountCents` integer, required
      - `description` string, required
    - `sourceKind` 'accountant' | 'business_basics_deferred', required
    - `sourceFieldId` string, nullable, required
    - `status` 'open' | 'answered' | 'skipped' | 'withdrawn', required
    - `answer` union, required
      - OnboardingV3QuestionChoiceAnswerRecord
        - `kind` 'choice', required
        - `value` string, required
        - `answeredAt` string, date-time, required
      - OnboardingV3QuestionTextAnswerRecord
        - `kind` 'text', required
        - `value` string, required
        - `answeredAt` string, date-time, required
      - OnboardingV3QuestionSkippedAnswerRecord
        - `kind` 'skipped', required
        - `value` unknown, required
        - `answeredAt` string, date-time, required
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required

## Other responses

- `400`: Onboarding request body is not valid JSON
- `401`: Authentication required
- `403`: Insufficient permissions or not a company member
- `404`: Resource not found
- `409`: Request conflicts with the durable onboarding state
- `413`: Onboarding setup request exceeds the 32768-byte route limit
- `415`: Onboarding request charset or content encoding is unsupported
- `422`: Validation error

---

[API](https://skmtc.dev/medianfi/apis/median-api.md) · [All operations](https://skmtc.dev/medianfi/apis/median-api/llms.txt) · [OpenAPI document](https://skmtc.dev/medianfi/apis/median-api/revisions/20090ea32b0d?raw)
