POST /v1/requests, every value in inputs is validated synchronously, before the request is created. If anything fails, the request is rejected with HTTP 400 and the uniform INVALID_INPUTS envelope. Nothing is queued and no call is placed. Fix the inputs and resubmit.
This page documents exactly which rules run. For the request body shape and the broader error taxonomy, see Creating a Request; to discover which keys a schema needs, see Schemas.
The error shape
All input failures collapse into a single response:A field only lands in
missingInputs if it’s required for your schema and you didn’t supply a usable value. A field lands in invalidInputs only when you did supply a non-empty value that broke a rule. Optional fields you leave out are never flagged; optional fields you do send are format-checked just like required ones.Required vs. empty
A required input is considered missing when its value isnull, absent, or a string that is empty or only whitespace after trimming. Which keys are required is schema-specific. Fetch them from GET /v1/schemas/{schemaId}/required-inputs. Two account features (below) can add more required keys at request time.
Universal value rules
These two checks run on every non-empty input value, regardless of the field’s type:Per-field type rules
Each input key has a type configured by SuperDial. When a value is supplied, it’s checked against the rule for its type. Fields whose key containsphonenumber (case-insensitive, e.g. phoneNumber) get the phone check on top of their type.
Dates: any value the parser can read unambiguously is accepted, but to be safe and explicit, send ISO
YYYY-MM-DD. Ambiguous values (e.g. 01/02/03) may resolve to a date you didn’t intend.{field} is invalid. The rules currently configured:
A few fields (e.g.
billingProviderNpi, memberId) don’t carry a custom message, so their failures fall back to the generic {field} is invalid. The memberId character rule above always runs on a supplied value; the richer, payer-aware Member ID validation below is a separate, feature-gated layer.Member ID validation
Off by default. These
memberId rules run only when your account has enforceMemberIdValidation enabled. Ask your account team. With the feature off, memberId is treated as an ordinary string and only the universal rules apply.memberId is checked against one of two rule sets, chosen by the payerName you send. Failures surface as invalidInputs.memberId. The validator picks the BCBS rules when payerName (spaces removed, lowercased) contains bcbs, bluecross, or blueshield; otherwise it applies the generic rules. Only the first failing rule is reported.
BCBS payers
Non-BCBS payers
Per-payer required inputs
Off by default. This runs only when your account has
enforcePayerRequiredInputs enabled, and it ramps independently of member-ID validation.details.missingInputs, exactly like schema-required fields. The set is payer- and request-type-specific; the cleanest way to avoid surprises is to send every field returned by the schema’s required-inputs endpoint plus any payer-specific fields your account team has called out.
Worked example
A request that gets several things wrong at once:dateOfService passed and providerNpi was simply absent (and required), so it shows up under missingInputs while the rest are format failures under invalidInputs. Read both buckets. A single resubmission should fix everything at once.