Page submit

Submit one page of a Product Studio product from your own front end. It does what the applicant's Continue button does in the hosted application: it checks the page's values, saves them to the application, runs the page's providers and decision trees, and moves the application on.

Product Studio's Page APIs tab has a ready-made cURL command for each page, with the right product_referral, label and data keys.

Start or continue an application

  • On the first page, send session as the string "null". This creates a new application, and the response returns its session.
  • On every later page, send that session.
  • If no application has that session, the response is code -106. A session that isn't a UUID returns 500.

Send every field on the page

Each submit is checked against the page with this label in the product's default version. Every input field on that page must be a key in data. This includes fields that are not marked Required in Product Studio: the check counts every field that has a Required setting, whether it is on or off.

  • Hidden, conditional and inactive fields are not skipped.
  • Values saved on earlier pages don't count. Only this request is checked.
  • Controls (such as checkboxes and text blocks) and widgets are not part of this check.

If a key is missing, the call returns 400 and names the missing keys in page order, for example Missing required fields: annual_income, employment_status.

Only the key has to be present, but its value is still type-checked (see below). null fails for number, text, true/false and date variables, so send an empty string for a text field you have no value for.

Value types

Keys in data that match one of your variables are checked against the variable's type:

Variable typeSendError when wrong
NumberA JSON number, such as 85000. A string such as "85000" fails.Invalid type for annual_income. Expected numeric value.
TextA string.Invalid type for first_name. Expected string value.
True/falsetrue, false, "true" or "false"Invalid type for has_cosigner. Expected boolean value.
DateA string in MM/DD/YYYY format, such as "01/15/1990"Invalid type for birth_date. Expected date in MM/DD/YYYY format.

A date that isn't a string returns Error validating data type for birth_date. Send ssn as a string of at most 12 characters, such as "123-45-6789".

Read code, not only the HTTP status

Once the request passes the checks above, the result comes back as HTTP 200 with a code. Only 1 means the page was accepted. session, email and next_step_label are filled in only when code is 1.

A code of 1 doesn't mean the application was approved. The message is Success, success (when the page ran a decision tree) or Application declined (when a provider declined it). Use Get an application to read its status.

codemessageWhen
1Success, success or Application declinedThe page was accepted.
-1Product not published yet.The product has no published version.
-2Invalid product. Please refresh the page and try again.The product is inactive.
-6Email Restricted - Contact SupportThe email is on your blocked list.
-9The email check's messageThe email failed the email check.
-10, -107Email already in use - try anotherThe email is already used by another application.
-103No PO Box address allowed.address contains a PO box.
-104Choose an alpha numeric passwordpassword is shorter than 8 characters or lacks an uppercase letter, a lowercase letter, a number or a symbol.
-105Email already in use - try anotherThe email belongs to a user who is not an applicant.
-106Email already in useNo application has this session, or the email already has an application and your account doesn't allow more than one.
-108For example Maximum attempts exceeded for this email in the last 30 daysA velocity rule blocked the submit.
-110, -111The error's messageSetting up co-applicants failed.
-112Access Denied.The page is limited to staff and the key belongs to a sub-tenant.

A provider on the page can also return its own negative code and message.

Fields that must always be sent

Always send product_referral, label, session and data, even when data is an empty object. If one of them is missing, or data is not a JSON object, the call returns 500 with Error in Page Submission. instead of a 400.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…

Submit one page of a Product Studio product from your own front end. It does what the applicant's Continue button does in the hosted application: it checks the page's values, saves them to the application, runs the page's providers and decision trees, and moves the application on.

Product Studio's Page APIs tab has a ready-made cURL command for each page, with the right product_referral, label and data keys.

Start or continue an application

  • On the first page, send session as the string "null". This creates a new application, and the response returns its session.
  • On every later page, send that session.
  • If no application has that session, the response is code -106. A session that isn't a UUID returns 500.

Send every field on the page

Each submit is checked against the page with this label in the product's default version. Every input field on that page must be a key in data. This includes fields that are not marked Required in Product Studio: the check counts every field that has a Required setting, whether it is on or off.

  • Hidden, conditional and inactive fields are not skipped.
  • Values saved on earlier pages don't count. Only this request is checked.
  • Controls (such as checkboxes and text blocks) and widgets are not part of this check.

If a key is missing, the call returns 400 and names the missing keys in page order, for example Missing required fields: annual_income, employment_status.

Only the key has to be present, but its value is still type-checked (see below). null fails for number, text, true/false and date variables, so send an empty string for a text field you have no value for.

Value types

Keys in data that match one of your variables are checked against the variable's type:

Variable typeSendError when wrong
NumberA JSON number, such as 85000. A string such as "85000" fails.Invalid type for annual_income. Expected numeric value.
TextA string.Invalid type for first_name. Expected string value.
True/falsetrue, false, "true" or "false"Invalid type for has_cosigner. Expected boolean value.
DateA string in MM/DD/YYYY format, such as "01/15/1990"Invalid type for birth_date. Expected date in MM/DD/YYYY format.

A date that isn't a string returns Error validating data type for birth_date. Send ssn as a string of at most 12 characters, such as "123-45-6789".

Read code, not only the HTTP status

Once the request passes the checks above, the result comes back as HTTP 200 with a code. Only 1 means the page was accepted. session, email and next_step_label are filled in only when code is 1.

A code of 1 doesn't mean the application was approved. The message is Success, success (when the page ran a decision tree) or Application declined (when a provider declined it). Use Get an application to read its status.

codemessageWhen
1Success, success or Application declinedThe page was accepted.
-1Product not published yet.The product has no published version.
-2Invalid product. Please refresh the page and try again.The product is inactive.
-6Email Restricted - Contact SupportThe email is on your blocked list.
-9The email check's messageThe email failed the email check.
-10, -107Email already in use - try anotherThe email is already used by another application.
-103No PO Box address allowed.address contains a PO box.
-104Choose an alpha numeric passwordpassword is shorter than 8 characters or lacks an uppercase letter, a lowercase letter, a number or a symbol.
-105Email already in use - try anotherThe email belongs to a user who is not an applicant.
-106Email already in useNo application has this session, or the email already has an application and your account doesn't allow more than one.
-108For example Maximum attempts exceeded for this email in the last 30 daysA velocity rule blocked the submit.
-110, -111The error's messageSetting up co-applicants failed.
-112Access Denied.The page is limited to staff and the key belongs to a sub-tenant.

A provider on the page can also return its own negative code and message.

Fields that must always be sent

Always send product_referral, label, session and data, even when data is an empty object. If one of them is missing, or data is not a JSON object, the call returns 500 with Error in Page Submission. instead of a 400.

Body Params
string
required

The product's code from Product Studio. The product must belong to your API key's account and have a published version, or the call returns 400 Invalid or unpublished product.

string
required

The page's label, as shown in the product's Page APIs tab. This is the page's stored label, not its display title. It must match a page in the product's default version, or the call returns 400 Invalid label.

string
required

The string "null" on the first page, to create a new application. On later pages, the session returned by the first call.

data
object
required

The page's values, keyed by variable code. Include a key for every input field on the page. Send an empty object only for a page with no input fields.

Checkbox consents given on this page, keyed by the checkbox control's ID. For each key that matches a checkbox on the page, a consent entry is added to the application's activity. Values are not read. To save a checkbox's value to its mapped variable, send that variable in data.

string

The branch's referral code (from the branch's product URL), not the branch code. Used only when this call creates the application, for a sub-tenant with Branches turned on. An unknown or inactive referral leaves the application unassigned, with no error.

string

A device fingerprint collected on your page. It is passed to the page's providers.

Responses

Language
Credentials
Bearer
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json