Skip to content

Responses

Export responses as rows

POST/v1/submissions/export

A form's responses as spreadsheet rows, one page at a time, with the same filters and sort as GET /v1/submissions. To get the whole file at any size, use POST /v1/exports, which prepares it in the background. See Export columns and Pagination.

Body

JSON, with Content-Type: application/json.

  • formIdstringrequired

    The form whose responses to export.

  • statusenum

    complete for responses where the person finished the form, partial for the rest. Use state to tell people still filling it in from people who left.

    One of "partial", "complete"

  • stateenum

    started for people still filling in the form, left for people who left without finishing, finished for people who finished. See Response states.

    One of "started", "left", "finished"

  • endingIdstring

    Only finished responses that reached this ending. Use an ending id of the form, and pass formId too.

    1–64 chars

  • consentenum

    Only responses with this consent. agreed for people who agreed to be called and texted, not_agreed for people the form asked who haven't agreed, not_asked for forms with no consent field. See Consent.

    One of "agreed", "not_agreed", "not_asked"

  • fromnumber

    Only responses created at or after this time, in milliseconds since the epoch.

  • tonumber

    Only responses created before this time, in milliseconds since the epoch.

  • searchstring

    Words to find in the contact details or in any answer. It looks at the name, email and phone, the answers, the labels of picked options and file names. Every word must match, and case and accents don't matter. Digits also match phone numbers written in any format. With a search, each page checks limit responses and returns the ones that match. A page can be short or even empty while nextCursor is not null, so keep paging until it is null.

    max 200 chars

  • sortenum

    How to order the responses. createdAt is the default and sorts by when they were created. status puts left responses first, then started, then finished, and asc reverses that. ending sorts by the ending's name, with unfinished responses at one end. contact sorts by the person's name, or their email or phone when there's no name. Ties go by creation time. Every sort except createdAt needs formId.

    One of "createdAt", "status", "ending", "contact"

  • orderenum

    desc is the default. With the default sort, desc lists the newest responses first.

    One of "desc", "asc"

  • cursorstring

    The nextCursor from the previous page. Leave it out for the first page, and keep the same filters and sort on every page. See Pagination.

  • limitinteger

    How many rows a page holds, from 1 to 500. The default is 200. With a search, it's how many responses each page checks.

    1–500

Response

  • formNamestring or nullrequired

    The form's name. Null once the form is deleted.

  • columnsarray of objectrequired

    The columns, in order. Merge pages by column key, because a later page can add columns for answers to questions in older versions. See Export columns.

    Show 2 fields
    • keystringrequired

      The column's key, such as answers.crust. Each row uses these keys.

    • headerstringrequired

      The column's heading. For a question, it's the question's current label.

  • itemsarray of objectrequired

    One row per response, holding text by column key.

  • nextCursorstring or nullrequired

    Send it as cursor to get the next page, with the same filters and sort. It is null on the last page.

  • linksExpireAtnullrequired

    Always null, because file links in exports are permanent links into the app that ask for sign-in. To download a file over the API, use GET /v1/files/{fileId}.

Errors answer with a status and the error shape.