---
title: "Form Rows"
method: POST
path: "/v3.0/forms/{slug}/rows/"
tags: ["forms"]
---

# Form Rows

`POST /v3.0/forms/{slug}/rows/`

## Request

- Base URL: `https://api.formaloo.me`
- URL: `https://api.formaloo.me/v3.0/forms/{slug}/rows/`
- Auth: none declared. Required headers: `x-api-key`

# Add a row to a form

You can use this endpoint to submit a form. In order to do so, you should send a `post` request, containing a map from each field to an acceptable value for it. For example for a number field, `3319` is an acceptable value while a text (e.g. `"john doe"`) is not accepted. For the choice fields, you should send the desired choice's slug, and so on.

The mapping should look something like this:

``` json
{
    "{short_text_field_slug}": "some short text",
    "{long_text_field_slug}": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
    "{number_field_slug}": 50,
    "{yes_no_field_slug}": "no",
    "{boolean_field_slug}": false,
    "{choice_field_slug}": "{choice_1_slug}",
    "{multiple_select_field_slug}": [
        "{choice_3_slug}",
        "{choice_4_slug}"
    ],
    "{matrix_field_slug}": {
        "{group_1_slug}": "{choice_3_slug}",
        "{group_2_slug}": "{choice_2_slug}",
        "{group_3_slug}": "{choice_1_slug}"
    },
    "{time_field_slug}": "12:12:00",
    "{date_field_slug}": "1991-02-10",
    "{website_field_slug}": "http://www.google.com",
    "{phone_field_slug}": "+1-123-4567",
    "{email_field_slug}": "me@example.com"
}
```

Which with real values, looks like the following:

``` json
{
    "rzkxaWgNY7": "some short text",
    "9Yyju0CAEf": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
    "EqQAWBKdVA": 50,
    "HbyBQV04yU": "no",
    "KU6uPpZJkg": false,
    "Lb2J7AksMg": "choice_x8dNpnG1pV",
    "NPLtzA9eYc": [
        "choice_epvJJU5U5r",
        "choice_AsDazGzYYm"
    ],
    "BdIjoxh0Wz": {
        "group_bifpolzsZD": "choice_G8wRAk99XI",
        "group_eyF2bD68pE": "choice_G8wRAk99XI",
        "group_ktwpEWntIY": "choice_G8wRAk99XI"
    },
    "RzPA9X0nF5": 2319,
    "Sx4Z3GG28L": "12:12:00",
    "tuMqjNtSiE": "1991-02-10",
    "hHdVmLX7yz": "http://www.google.com",
    "ZpYvS3330a": "+1-123-4567",
    "6Qr5btT9ad": "me@example.com"
}
```

## Authorization and Authentication

In order to add a form to a row using this endpoint, you have to send both the `Authorization` and `x-api-key` headers to identify your use and application. You can only add rows to the forms that you have access to. If you don't want to send the `Authorization` header for any reason, you can use the form submission endpoint.

## Notes

Please make sure to use the fields' slug, not their title.

Although our service accepts most content types, like `form-data`, it's highly recommended to use `application/json` since it guarantees the correct format of values for the more complex fields (e.g. Matrix fields).

## Path parameters

- `slug` string, required

## Headers

- `x-api-key` string, required
- `x-workspace` string

## Request body

- AddRowRequest
  - `uuid` string: the uuid of verified phone number if any exists
  - `code` string: the token of verified phone number if any exists
  - `email_uuid` string: the uuid of verified email if any exists
  - `email_code` string: the token of verified email if any exists
  - `submitter_referer_address` string
  - `language` string, nullable: The language's slug.
  - `submit_time` string, time: time it took to fill this form
  - `row_tags` string[]
  - `submit_code` string, nullable: a submit code to provide to user.
  - `email_verification_state` 'not_required' | 'not_verified' | 'verified'
  - `calculation_score` object, nullable: shows the sum of scores for each field in row. it is null if there is not any calculations
  - `create_type` 'api' | 'excel' | 'google_forms' | 'google_sheets' | 'magic_import' | 'magic_create' | 'recurring_submission'
  - `status` 'draft' | 'submit' | 'expired'
  - `user` integer, nullable: the user who has submitted the form.

## Response `201`

- AddRow
  - `data` object, nullable: the form's submitted data, in json. a key value pair with fields's slug.
  - `slug` string, nullable
  - `created_at` string, date-time
  - `updated_at` string, date-time
  - `form` FormShort
    - `submit_start_time` string, date-time, nullable
    - `submit_end_time` string, date-time, nullable
    - `forward_submit_emails_to` object
    - `subdomain` string
    - `owner_custom_domain` string
    - `deleted` string, date-time
    - `created_at` string, date-time
    - `updated_at` string, date-time
    - `slug` string, nullable
    - `address` string, nullable: A unique string to identify form for users. It's auto-generated if not set by user.
    - `title` string, nullable: the form's display name.
    - `show_title` boolean: title visibility on form.
    - `description` string, nullable: a description about form.
    - `success_message` string, nullable: a messages to show if the form is successfully submitted.
    - `error_message` string, nullable: a messages to show if the form is not successfully submitted.
    - `button_text` string, nullable: a text to show on the form's submit button.
    - `localized_content` object, nullable: localized content
    - `needs_login` boolean: whether the users need to login to submit the form.
    - `time_limit` string, time, nullable: time limit to fill this form
    - `shuffle_fields` boolean: shows wether to shuffle the ordering of the form field on show.
    - `form_redirects_after_submit` string, nullable: Either null or the url of destination.
    - `include_data_on_redirect` boolean: if set true, the submitted data along with aliases will be included in the redirect url.
    - `has_recaptcha` boolean: defines if show a recaptcha on form or not
    - `row_update_email_notif` boolean: receive email notifications when a row is updated.
    - `generate_pdf_for_admin` boolean: whether to generate a pdf after each submit.
    - `generate_pdf_for_user` boolean: whether to generate a pdf after each submit.
    - `slack_accesses` object, nullable: List of slack access slugs.
    - `form_type` 'simple' | 'multi_step' | 'nps'
    - `thumbnail` string, uri, nullable: an optional thumbnail for the form
    - `logo` string, uri, nullable: the logo to be shown on the top of form
    - `logo_slug` string, nullable: the logo's slug.
    - `logo_url` string, nullable: the logo's url.
    - `logo_position` 'left' | 'center' | 'right'
    - `text_color` string, nullable: the form's text color.
    - `button_color` string, nullable: the form's button color.
    - `theme_color` string, nullable: the form's theme color.
    - `theme_name` string, nullable: the form's theme name.
    - `field_color` string, nullable: the form's field color.
    - `background_color` string, nullable: the form's background color.
    - `border_color` string, nullable: the form's border color.
    - `submit_text_color` string, nullable: the form's submit text color.
    - `background_image` string, uri, nullable: background image for this form.
    - `background_image_slug` string, nullable: the background image's slug.
    - `background_image_url` string, nullable: the background image's url.
    - `banner_slug` string, nullable: the banner's slug.
    - `banner_url` string, nullable: the banner's url.
    - `meta_image_slug` string, nullable: meta image's slug.
    - `meta_image_url` string, nullable: meta image's url.
    - `favicon_slug` string, nullable: favicon's slug.
    - `favicon_url` string, nullable: favicon's url.
    - `theme_config` object: the form's additional theme configuration.
    - `custom_js` string, nullable
    - `custom_css` string, nullable
    - `version` string: version of form
    - `config` string, nullable: the form's additional configuration.
    - `show_calculations_score_result` boolean: to show calculations result after user submits a form
    - `show_submit_tracking_code` boolean: whether to show the tracking code after user has submitted the form.
    - `assign_submit_number` boolean: if set to true, each new row will have an incremental submit number starting from 1.
    - `show_answers` boolean: whether to show the reslts page containing answers and answer sheet after form submit.
    - `form_currency_type` 'dollar' | 'USD' | 'EUR' | 'GBP' | 'AUD' | 'CAD' | 'CHF' | 'NOK' | 'SEK' | 'DKK' | 'MXN' | 'NZD' | 'BRL' | 'JPY' | 'INR' | 'AED' | 'IDR' | 'SGD'
    - `position` integer: forms position in relation to other forms.
    - `public_stats` boolean: if set true, form stats will be publicly shared by a link.
    - `public_rows` boolean: if set true, submitted data will be publicly shared by a link.
    - `address_is_universal` boolean: If set true, form's address should be universally unique, and the forms is accessible on the root domain, otherwise, it's only available on the user's domain and subdomain.
    - `custom_domain` string, nullable: user can set this on the form, if they want to show this form on a custom domain (e.g. https://example.co/).
    - `accept_draft_answers` boolean: users can have draft answers on this form or not.
    - `meta_tags` string, nullable: the form's meta tags, which will be added to all pages related to this form.
    - `ai_mode` boolean
    - `meta_description` string, nullable: Meta description for the form.
    - `auto_translation_enabled` boolean
    - `allow_indexing` boolean
    - `run_field_logics_on_update` boolean: Whether to run field logics on row update or not.
    - `spreadsheet_id` string, nullable: id for the corresponding google sheet.
    - `spreadsheet_url` string, nullable: url for the corresponding google sheet.
    - `is_google_integration_enabled` boolean: whether google sheets integration is enabled for this form.
    - `last_submit_time` string, date-time, nullable: when was the last submit on the form?
    - `total_submits_count` integer: shows how many submits the form has.
    - `total_size` integer: shows total size of the form and it's fields' fields in bytes.
    - `create_type` 'api' | 'excel' | 'google_forms' | 'google_sheets' | 'magic_import' | 'magic_create' | 'recurring_submission'
    - `primary_field` integer, nullable
  - `tracking_code` string, nullable: a tracking code to provide to end user. unique for each row in the form.
  - `submit_number` integer
  - `submitter_referer_address` string
  - `redirection_url` string, uri
  - `extra_response` object
  - `language` string, nullable: The language's slug.
  - `submit_time` string, time: time it took to fill this form
  - `readable_data` object
  - `rendered_data` object
  - `position` number, double, nullable: position of row in table.
  - `pdf_link` string, uri, nullable
  - `row_tags` string[]
  - `created_by` string
  - `updated_by` string
  - `submit_code` string, nullable: a submit code to provide to user.
  - `email_verification_state` 'not_required' | 'not_verified' | 'verified'
  - `calculation_score` object, nullable: shows the sum of scores for each field in row. it is null if there is not any calculations
  - `create_type` 'api' | 'excel' | 'google_forms' | 'google_sheets' | 'magic_import' | 'magic_create' | 'recurring_submission'
  - `status` 'draft' | 'submit' | 'expired'
  - `user` integer, nullable: the user who has submitted the form.

---

[API](https://skmtc.dev/formaloo/apis/formaloo-api-documentation.md) · [All operations](https://skmtc.dev/formaloo/apis/formaloo-api-documentation/llms.txt) · [OpenAPI document](https://skmtc.dev/formaloo/apis/formaloo-api-documentation/revisions/47b268aeb656?raw)
