Responses
List responses
/v1/submissionsList the workspace's responses, newest first, or only one form's or brand's. Filter them by state, ending, time and text. A key limited to some brands only gets those brands' responses. See Pagination, Response states, Brand access and Plan history and retention.
Query parameters
workspaceIdstringOptional. Your API key already belongs to one workspace.
formIdstringOnly this form's responses. Every sort except
createdAtneeds it, and so doesendingId.brandIdstringOnly this brand's responses.
statusenumcompletefor responses where the person finished the form,partialfor the rest. Usestateto tell people still filling it in from people who left.One of
"partial","complete"stateenumstartedfor people still filling in the form,leftfor people who left without finishing,finishedfor people who finished. See Response states.One of
"started","left","finished"endingIdstringOnly finished responses that reached this ending. Use an ending id of the form, and pass
formIdtoo.1–64 chars
consentenumOnly responses with this
consent.agreedfor people who agreed to be called and texted,not_agreedfor people the form asked who haven't agreed,not_askedfor forms with no consent field. See Consent.One of
"agreed","not_agreed","not_asked"fromnumberOnly responses created at or after this time, in milliseconds since the epoch.
tonumberOnly responses created before this time, in milliseconds since the epoch.
searchstringWords 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
limitresponses and returns the ones that match. A page can be short or even empty whilenextCursoris not null, so keep paging until it is null.max 200 chars
sortenumHow to order the responses.
createdAtis the default and sorts by when they were created.statusputs left responses first, then started, then finished, andascreverses that.endingsorts by the ending's name, with unfinished responses at one end.contactsorts by the person's name, or their email or phone when there's no name. Ties go by creation time. Every sort exceptcreatedAtneedsformId.One of
"createdAt","status","ending","contact"orderenumdescis the default. With the default sort,desclists the newest responses first.One of
"desc","asc"cursorstringThe
nextCursorfrom the previous page. Leave it out for the first page, and keep the same filters and sort on every page. See Pagination.limitintegerHow many responses a page holds, from 1 to 200. The default is 50. With a search, it's how many responses each page checks.
1–200
Response
itemsarray of objectrequiredThe responses on this page, in the order you asked for.
Show 30 fieldsHide 30 fields
idstringrequiredThe response's id.
formIdstringrequiredThe form the person answered.
brandIdstringrequiredThe form's brand.
versionnumberrequiredThe number of the published version the person answered.
sessionIdstringrequiredThe visitor's session on the page.
statusenumrequiredcompleteonce the person finishes the form, otherwisepartial. For a partial response,leftAttells you whether the person is still filling it in or left. See Response states.One of
"partial","complete"endingone of 2requiredThe ending the person reached. Null until they finish.
Show 2 optionsHide 2 options
Option 1
idstringrequiredThe ending's id in the form. Pass it as
endingIdto filterGET /v1/submissions.namestringrequiredThe ending's name at the time the response reached it, such as "Order placed".
countsAsLeadbooleanrequiredWhether reaching this ending counts as a lead for ad tracking. Reaching an ending that doesn't count means the person was disqualified.
null
answersobjectrequiredThe answers by field id, as stored. Choices are their option values, not labels. A money answer is a plain number in its currency's major unit, and
currenciesnames the currency. Afile_uploadanswer is a list of files, each withfileId,name,size,typeandapiUrl. Call theapiUrlwith your API key to get a download link.currenciesobjectrequiredThe currency of each money answer by field id, as an ISO 4217 code, such as
{ "tip": "USD" }. It is the currency the form used when the person answered. The answer itself is a plain number in that currency's major unit.contactobjectrequiredThe contact details the form's contact questions collected.
Show 6 fieldsHide 6 fields
emailstringphonestringtelegramstringThe Telegram username, without the "@".
firstNamestringlastNamestringaddressobjectShow 6 fieldsHide 6 fields
line1stringrequiredcitystringrequiredstatestringrequiredThe region, such as a state, province or county.
zipstringrequiredThe postal code.
line2stringcountrystringThe country as an ISO 3166-1 alpha-2 code. Missing on responses saved before addresses had a country.
attributionanyrequiredWhere the visitor came from. It holds the UTM parameters, landing page, referrer and ad click IDs.
leadidTokenstring or nullrequiredThe Jornaya LeadiD token, or null.
trustedFormCertUrlstring or nullrequiredThe TrustedForm certificate URL, which starts with https://cert.trustedform.com/. It is set when the brand has TrustedForm on, or the page runs it, and its script had loaded. Null otherwise.
trustedFormPingUrlstring or nullrequiredThe TrustedForm ping URL. It is set under the same conditions as
trustedFormCertUrl, and null otherwise.eventIdstringrequiredThe Meta event id sent with the lead. Meta uses it to match the browser and server events for the same lead.
phoneVerifiedbooleanrequiredWhether the phone was verified with a code.
emailCheckenum or nullrequiredThe result of checking email fields marked
validate.validmeans the address exists andinvalidmeans it doesn't.disposableis a throwaway address.catchallmeans the domain accepts any address.unknownmeans its mail server didn't answer.skippedmeans it wasn't checked, because the workspace was out of credits or the check was unavailable. With several emails, you get the least sure result. A check never turns a lead away. Null when the response has no checked email or is unfinished.telegramCheckenum or nullrequiredThe result of checking Telegram fields marked
check.foundis a personal account.not_foundmeans Telegram didn't find it, which doesn't prove it doesn't exist.channel,groupandbotsay what the username belongs to.skippedmeans it wasn't checked, because the workspace was out of credits or Telegram didn't answer. With several usernames, you get the least sure result. Null when the response has no checked username or is unfinished.ipstring or nullrequiredThe visitor's IP address, or null.
userAgentstring or nullrequiredThe visitor's browser user agent, or null.
createdAtnumberrequiredCreated, in milliseconds since the epoch.
completedAtnumber or nullrequiredWhen the person finished, in milliseconds since the epoch. Null until then.
leftAtnumber or nullrequiredWhen the person left without finishing, in milliseconds since the epoch. A person has left when they close the page or do nothing for 5 minutes. Null while they're still filling it in, and once the response is complete. See Response states.
earlierSubmissionIdstring or nullrequiredAn earlier unfinished response on this form from the same email or phone, within the last 30 days. Null when there is none. It's only a link, and neither response is changed.
updatedAtnumberrequiredThe last time the person's answers were saved, in milliseconds since the epoch.
readableAnswersobjectrequiredEach answer as the person saw it, by field id, from the version of the form they answered. For example
{ "crust": { "question": "Which crust?", "type": "single_choice", "answer": "Thin crust" } }. Choices show their option labels rather than values, with several joined by ", ". Yes/no answers read "Yes" or "No". Names and addresses are one line, and files are their names.consentenumrequiredWhether the person agreed to be called and texted.
agreedmeans they agreed to every consent they got to.not_agreedmeans the form asks for consent and they haven't given it: they left before submitting that step, changed the number since, or left a box unticked.not_askedmeans the form asks for none. It says nothing about the phone being verified: that'sphoneVerified. See Consent.One of
"agreed","not_agreed","not_asked"consentAtnumber or nullrequiredWhen the person agreed, in milliseconds since the epoch. With several consent fields, it's the last one they agreed to. Null unless
consentisagreed.consentTextstring or nullrequiredThe wording the person agreed to, exactly as shown. With several consent fields, each one in form order with a blank line between. Null unless
consentisagreed.consentsarray of objectrequiredEach consent the person agreed to. A phone consent counts only for the number still answered, and a box they unticked again is left out.
Show 5 fieldsHide 5 fields
fieldIdstringrequiredThe field that asked: a phone question with consent, or a consent question.
atnumberrequiredWhen the person agreed, in milliseconds since the epoch.
textstringrequiredThe wording, exactly as shown.
byenumrequiredHow they agreed.
checkboxmeans they ticked the box.submitmeans they submitted its step with Continue, Submit or Enter.One of
"checkbox","submit"phonestring or nullrequiredThe number the consent covers, in E.164 format. For a phone question, the number they agreed for. For a consent question, the response's phone at that moment, or null.
nextCursorstring or nullrequiredSend it as
cursorto get the next page, with the same filters and sort. It is null on the last page.olderHiddenbooleanrequiredTrue on an empty first page when the form, brand or workspace has responses older than the plan shows. The plan's history is
retentionDaysinGET /v1/workspaces/{workspaceId}/entitlements. Older responses are kept, and they come back on a plan that shows them. See Plan history and retention.
Errors answer with a status and the error shape.