{"openapi":"3.1.0","info":{"title":"Fill Out This Form API","version":"1.0.0","description":"Read your forms, shared links and responses, and (with Pro) manage webhooks that send each new response as it comes in.\n\nAuthenticate with an API key from Settings → API: `Authorization: Bearer fotf_live_…`.\nFree: 1 key, 30 requests/minute, 1,000 requests and 10,000 responses a day.\nPro: 10 keys, 300 requests/minute, 50,000 requests and 1,000,000 responses a day.\nDaily quotas reset at 00:00 UTC. Every response has X-Request-Id, and errors include it as error.request_id.\n\nResponses are anonymous: nothing identifies who submitted them. Answers are keyed by question id (`answers`, raw values, where choices are option ids) and also given as text (`display`, as the respondent saw the questions). Question and option ids never change, so build on them rather than labels."},"externalDocs":{"description":"Guide and examples","url":"https://docs.filloutthisform.com/api"},"servers":[{"url":"https://api.filloutthisform.com/v1"}],"security":[{"apiKey":[]}],"paths":{"/me":{"get":{"summary":"Your account, plan, limits and today's usage","operationId":"getMe","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Me"}}}},"401":{"description":"Missing, invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Key disabled (over the plan's key allowance), or Pro needed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or not readable with this key)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit or daily quota reached. See Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/forms":{"get":{"summary":"List forms","operationId":"listForms","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Form"}}}}}}},"401":{"description":"Missing, invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Key disabled (over the plan's key allowance), or Pro needed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or not readable with this key)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit or daily quota reached. See Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/forms/{formId}":{"get":{"summary":"A form and its current elements","operationId":"getForm","parameters":[{"name":"formId","in":"path","required":true,"description":"Form id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FormDetail"}}}},"401":{"description":"Missing, invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Key disabled (over the plan's key allowance), or Pro needed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or not readable with this key)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit or daily quota reached. See Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/forms/{formId}/columns":{"get":{"summary":"Columns for tabular output (current questions, then removed ones)","operationId":"listColumns","parameters":[{"name":"formId","in":"path","required":true,"description":"Form id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Column"}}}}}}},"401":{"description":"Missing, invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Key disabled (over the plan's key allowance), or Pro needed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or not readable with this key)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit or daily quota reached. See Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/forms/{formId}/links":{"get":{"summary":"The form's shared links","operationId":"listLinks","parameters":[{"name":"formId","in":"path","required":true,"description":"Form id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Link"}}}}}}},"401":{"description":"Missing, invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Key disabled (over the plan's key allowance), or Pro needed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or not readable with this key)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit or daily quota reached. See Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/forms/{formId}/responses":{"get":{"summary":"Responses through every link of the form","operationId":"listFormResponses","parameters":[{"name":"formId","in":"path","required":true,"description":"Form id","schema":{"type":"string"}},{"name":"limit","in":"query","description":"Page size. JSON: default 50, at most 50 (Free) / 100 (Pro). CSV/NDJSON: default and at most 500 / 1000. Larger values are capped.","schema":{"type":"integer","minimum":1}},{"name":"cursor","in":"query","description":"next_cursor from a previous page: returns responses after it. Keep the last one and poll with it to get only new responses.","schema":{"type":"string"}},{"name":"since","in":"query","description":"Only responses submitted at or after this ISO 8601 date/time.","schema":{"type":"string","format":"date-time"}},{"name":"order","in":"query","description":"asc (oldest first, for syncing) or desc (newest first).","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}},{"name":"format","in":"query","description":"json, csv (header row + one row per response, readable answers) or ndjson (one response object per line). Also chosen by the Accept header. CSV and NDJSON pages give the cursor in X-Next-Cursor and X-Has-More.","schema":{"type":"string","enum":["json","csv","ndjson"],"default":"json"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponsePage"}},"text/csv":{"schema":{"type":"string"}},"application/x-ndjson":{"schema":{"type":"string"}}}},"401":{"description":"Missing, invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Key disabled (over the plan's key allowance), or Pro needed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or not readable with this key)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit or daily quota reached. See Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/links/{linkId}":{"get":{"summary":"A shared link","operationId":"getLink","parameters":[{"name":"linkId","in":"path","required":true,"description":"Link id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Link"}}}},"401":{"description":"Missing, invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Key disabled (over the plan's key allowance), or Pro needed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or not readable with this key)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit or daily quota reached. See Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/links/{linkId}/responses":{"get":{"summary":"Responses through one link","operationId":"listLinkResponses","parameters":[{"name":"linkId","in":"path","required":true,"description":"Link id","schema":{"type":"string"}},{"name":"limit","in":"query","description":"Page size. JSON: default 50, at most 50 (Free) / 100 (Pro). CSV/NDJSON: default and at most 500 / 1000. Larger values are capped.","schema":{"type":"integer","minimum":1}},{"name":"cursor","in":"query","description":"next_cursor from a previous page: returns responses after it. Keep the last one and poll with it to get only new responses.","schema":{"type":"string"}},{"name":"since","in":"query","description":"Only responses submitted at or after this ISO 8601 date/time.","schema":{"type":"string","format":"date-time"}},{"name":"order","in":"query","description":"asc (oldest first, for syncing) or desc (newest first).","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}},{"name":"format","in":"query","description":"json, csv (header row + one row per response, readable answers) or ndjson (one response object per line). Also chosen by the Accept header. CSV and NDJSON pages give the cursor in X-Next-Cursor and X-Has-More.","schema":{"type":"string","enum":["json","csv","ndjson"],"default":"json"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponsePage"}},"text/csv":{"schema":{"type":"string"}},"application/x-ndjson":{"schema":{"type":"string"}}}},"401":{"description":"Missing, invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Key disabled (over the plan's key allowance), or Pro needed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or not readable with this key)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit or daily quota reached. See Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/responses/{responseId}":{"get":{"summary":"One response","operationId":"getResponse","parameters":[{"name":"responseId","in":"path","required":true,"description":"Response id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Response"}}}},"401":{"description":"Missing, invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Key disabled (over the plan's key allowance), or Pro needed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or not readable with this key)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit or daily quota reached. See Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/responses/{responseId}/files/{fileId}":{"get":{"summary":"A file uploaded with a response","description":"Sends the file itself, as a download. A File upload question's answer is a list of { id, name, size, type }; use an id from it as fileId.","operationId":"getResponseFile","parameters":[{"name":"responseId","in":"path","required":true,"description":"Response id","schema":{"type":"string"}},{"name":"fileId","in":"path","required":true,"description":"File id, from the response's answers","schema":{"type":"string"}}],"responses":{"200":{"description":"The file","content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"401":{"description":"Missing, invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Key disabled (over the plan's key allowance), or Pro needed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or not readable with this key)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit or daily quota reached. See Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/webhooks":{"get":{"summary":"List webhooks (Pro)","operationId":"listWebhooks","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Webhook"}}}}}}},"401":{"description":"Missing, invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Key disabled (over the plan's key allowance), or Pro needed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or not readable with this key)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit or daily quota reached. See Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"summary":"Add a webhook (Pro)","description":"Each new response to its forms is POSTed to url as a response.created event. The signing secret is only in this response (and on the API page).","operationId":"createWebhook","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","format":"uri","description":"A public HTTPS address"},"form_ids":{"type":["array","null"],"items":{"type":"string"},"description":"Only these forms. Null for all forms, including new ones. Left out: the forms the key can read"}}}}}},"responses":{"201":{"description":"Added","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewWebhook"}}}},"400":{"description":"The body or address isn't right","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Key disabled (over the plan's key allowance), or Pro needed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or not readable with this key)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The account has as many webhooks as it can","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit or daily quota reached. See Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/webhooks/{webhookId}":{"get":{"summary":"A webhook (Pro)","operationId":"getWebhook","parameters":[{"name":"webhookId","in":"path","required":true,"description":"Webhook id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Webhook"}}}},"401":{"description":"Missing, invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Key disabled (over the plan's key allowance), or Pro needed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or not readable with this key)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit or daily quota reached. See Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"summary":"Delete a webhook","operationId":"deleteWebhook","parameters":[{"name":"webhookId","in":"path","required":true,"description":"Webhook id","schema":{"type":"string"}}],"responses":{"204":{"description":"Deleted"},"401":{"description":"Missing, invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Key disabled (over the plan's key allowance), or Pro needed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or not readable with this key)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit or daily quota reached. See Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/openapi.json":{"get":{"summary":"This document (no key needed)","operationId":"getOpenApi","security":[],"responses":{"200":{"description":"OK"}}}}},"webhooks":{"response.created":{"post":{"summary":"A new response","description":"Sent to each of your webhooks that covers the form, signed the Standard Webhooks way: webhook-id (the same on retries), webhook-timestamp and webhook-signature headers. Answer with any 2xx within 10 seconds. Failed deliveries are retried for about a day and a half, then the webhook is turned off.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookEvent"}}}},"responses":{"200":{"description":"Received"}}}}},"components":{"securitySchemes":{"apiKey":{"type":"http","scheme":"bearer","description":"An API key from Settings → API"}},"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","request_id"],"properties":{"code":{"type":"string","enum":["invalid_request","unauthorized","key_disabled","pro_required","not_found","method_not_allowed","limit_reached","rate_limited","quota_exceeded","internal_error"]},"message":{"type":"string"},"request_id":{"type":"string"}}}}},"Me":{"type":"object","properties":{"account":{"type":"object","properties":{"email":{"type":"string"}}},"plan":{"type":"string","enum":["free","pro"]},"key":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"form_ids":{"type":["array","null"],"items":{"type":"string"},"description":"Forms this key can read (null = all)"}}},"limits":{"type":"object","properties":{"keys":{"type":"integer"},"requests_per_minute":{"type":"integer"},"requests_per_day":{"type":"integer"},"responses_per_day":{"type":"integer"},"max_page_size_json":{"type":"integer"},"max_page_size_csv":{"type":"integer"}}},"usage":{"type":"object","properties":{"day":{"type":"string","format":"date"},"requests":{"type":"integer"},"responses":{"type":"integer"}}}}},"Form":{"type":"object","required":["id","name","color","link_count","response_count","created_at","updated_at"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"color":{"type":"string"},"link_count":{"type":"integer"},"response_count":{"type":"integer"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"FormDetail":{"allOf":[{"$ref":"#/components/schemas/Form"},{"type":"object","properties":{"elements":{"type":"array","items":{"$ref":"#/components/schemas/Element"},"description":"Questions and display elements, in reading order"},"rows":{"type":"array","items":{"type":"array","items":{"type":"string"}},"description":"Layout: rows of 1–3 element ids"}}}]},"Element":{"anyOf":[{"oneOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1},"label":{"type":"string","minLength":1,"maxLength":500},"description":{"type":"string","maxLength":2000},"required":{"default":false,"type":"boolean"},"background":{"type":"string","pattern":"^#[0-9a-f]{6}$"},"showIf":{"type":"object","properties":{"questionId":{"type":"string","minLength":1},"op":{"type":"string","enum":["is","is_not","answered","not_answered"]},"value":{"type":"string","maxLength":500}},"required":["questionId","op"],"additionalProperties":false},"type":{"type":"string","const":"short_text"},"maxLength":{"default":255,"type":"integer","exclusiveMinimum":0,"maximum":1000},"minLength":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"characters":{"type":"string","enum":["letters","numbers","phone","currency"]},"allowed":{"minItems":1,"maxItems":500,"type":"array","items":{"type":"string","minLength":1,"maxLength":255}},"maxUses":{"type":"integer","minimum":1,"maximum":100000}},"required":["id","label","required","type","maxLength"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1},"label":{"type":"string","minLength":1,"maxLength":500},"description":{"type":"string","maxLength":2000},"required":{"default":false,"type":"boolean"},"background":{"type":"string","pattern":"^#[0-9a-f]{6}$"},"showIf":{"type":"object","properties":{"questionId":{"type":"string","minLength":1},"op":{"type":"string","enum":["is","is_not","answered","not_answered"]},"value":{"type":"string","maxLength":500}},"required":["questionId","op"],"additionalProperties":false},"type":{"type":"string","const":"long_text"},"maxLength":{"default":5000,"type":"integer","exclusiveMinimum":0,"maximum":20000},"minLength":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["id","label","required","type","maxLength"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1},"label":{"type":"string","minLength":1,"maxLength":500},"description":{"type":"string","maxLength":2000},"required":{"default":false,"type":"boolean"},"background":{"type":"string","pattern":"^#[0-9a-f]{6}$"},"showIf":{"type":"object","properties":{"questionId":{"type":"string","minLength":1},"op":{"type":"string","enum":["is","is_not","answered","not_answered"]},"value":{"type":"string","maxLength":500}},"required":["questionId","op"],"additionalProperties":false},"type":{"type":"string","const":"email"},"verify":{"type":"boolean"},"maxUses":{"type":"integer","minimum":1,"maximum":100000}},"required":["id","label","required","type"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1},"label":{"type":"string","minLength":1,"maxLength":500},"description":{"type":"string","maxLength":2000},"required":{"default":false,"type":"boolean"},"background":{"type":"string","pattern":"^#[0-9a-f]{6}$"},"showIf":{"type":"object","properties":{"questionId":{"type":"string","minLength":1},"op":{"type":"string","enum":["is","is_not","answered","not_answered"]},"value":{"type":"string","maxLength":500}},"required":["questionId","op"],"additionalProperties":false},"type":{"type":"string","const":"number"},"min":{"type":"number"},"max":{"type":"number"},"maxUses":{"type":"integer","minimum":1,"maximum":100000}},"required":["id","label","required","type"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1},"label":{"type":"string","minLength":1,"maxLength":500},"description":{"type":"string","maxLength":2000},"required":{"default":false,"type":"boolean"},"background":{"type":"string","pattern":"^#[0-9a-f]{6}$"},"showIf":{"type":"object","properties":{"questionId":{"type":"string","minLength":1},"op":{"type":"string","enum":["is","is_not","answered","not_answered"]},"value":{"type":"string","maxLength":500}},"required":["questionId","op"],"additionalProperties":false},"type":{"type":"string","const":"date"},"min":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"max":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"from":{"type":"string","enum":["future","past"]},"maxUses":{"type":"integer","minimum":1,"maximum":100000}},"required":["id","label","required","type"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1},"label":{"type":"string","minLength":1,"maxLength":500},"description":{"type":"string","maxLength":2000},"required":{"default":false,"type":"boolean"},"background":{"type":"string","pattern":"^#[0-9a-f]{6}$"},"showIf":{"type":"object","properties":{"questionId":{"type":"string","minLength":1},"op":{"type":"string","enum":["is","is_not","answered","not_answered"]},"value":{"type":"string","maxLength":500}},"required":["questionId","op"],"additionalProperties":false},"type":{"type":"string","const":"single_choice"},"options":{"minItems":1,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"label":{"type":"string","minLength":1,"maxLength":200},"value":{"type":"number","minimum":-1000000000,"maximum":1000000000}},"required":["id","label"],"additionalProperties":false}},"showResults":{"type":"boolean"},"maxUses":{"type":"integer","minimum":1,"maximum":100000}},"required":["id","label","required","type","options"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1},"label":{"type":"string","minLength":1,"maxLength":500},"description":{"type":"string","maxLength":2000},"required":{"default":false,"type":"boolean"},"background":{"type":"string","pattern":"^#[0-9a-f]{6}$"},"showIf":{"type":"object","properties":{"questionId":{"type":"string","minLength":1},"op":{"type":"string","enum":["is","is_not","answered","not_answered"]},"value":{"type":"string","maxLength":500}},"required":["questionId","op"],"additionalProperties":false},"type":{"type":"string","const":"dropdown"},"options":{"minItems":1,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"label":{"type":"string","minLength":1,"maxLength":200},"value":{"type":"number","minimum":-1000000000,"maximum":1000000000}},"required":["id","label"],"additionalProperties":false}},"showResults":{"type":"boolean"},"maxUses":{"type":"integer","minimum":1,"maximum":100000}},"required":["id","label","required","type","options"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1},"label":{"type":"string","minLength":1,"maxLength":500},"description":{"type":"string","maxLength":2000},"required":{"default":false,"type":"boolean"},"background":{"type":"string","pattern":"^#[0-9a-f]{6}$"},"showIf":{"type":"object","properties":{"questionId":{"type":"string","minLength":1},"op":{"type":"string","enum":["is","is_not","answered","not_answered"]},"value":{"type":"string","maxLength":500}},"required":["questionId","op"],"additionalProperties":false},"type":{"type":"string","const":"multi_choice"},"options":{"minItems":1,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"label":{"type":"string","minLength":1,"maxLength":200},"value":{"type":"number","minimum":-1000000000,"maximum":1000000000}},"required":["id","label"],"additionalProperties":false}},"maxSelections":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"showResults":{"type":"boolean"},"maxUses":{"type":"integer","minimum":1,"maximum":100000}},"required":["id","label","required","type","options"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1},"label":{"type":"string","minLength":1,"maxLength":500},"description":{"type":"string","maxLength":2000},"required":{"default":false,"type":"boolean"},"background":{"type":"string","pattern":"^#[0-9a-f]{6}$"},"showIf":{"type":"object","properties":{"questionId":{"type":"string","minLength":1},"op":{"type":"string","enum":["is","is_not","answered","not_answered"]},"value":{"type":"string","maxLength":500}},"required":["questionId","op"],"additionalProperties":false},"type":{"type":"string","const":"matrix"},"rows":{"minItems":1,"maxItems":30,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"label":{"type":"string","minLength":1,"maxLength":200}},"required":["id","label"],"additionalProperties":false}},"columns":{"minItems":2,"maxItems":10,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"label":{"type":"string","minLength":1,"maxLength":200}},"required":["id","label"],"additionalProperties":false}},"multiple":{"default":false,"type":"boolean"}},"required":["id","label","required","type","rows","columns","multiple"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1},"label":{"type":"string","minLength":1,"maxLength":500},"description":{"type":"string","maxLength":2000},"required":{"default":false,"type":"boolean"},"background":{"type":"string","pattern":"^#[0-9a-f]{6}$"},"showIf":{"type":"object","properties":{"questionId":{"type":"string","minLength":1},"op":{"type":"string","enum":["is","is_not","answered","not_answered"]},"value":{"type":"string","maxLength":500}},"required":["questionId","op"],"additionalProperties":false},"type":{"type":"string","const":"calculation"},"operation":{"default":"sum","type":"string","enum":["sum","product","average","min","max","days_between"]},"fieldIds":{"default":[],"maxItems":30,"type":"array","items":{"type":"string","minLength":1}},"prefix":{"default":"","type":"string","maxLength":10},"suffix":{"default":"","type":"string","maxLength":10},"decimals":{"default":2,"type":"integer","minimum":0,"maximum":4}},"required":["id","label","required","type","operation","fieldIds","prefix","suffix","decimals"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1},"label":{"type":"string","minLength":1,"maxLength":500},"description":{"type":"string","maxLength":2000},"required":{"default":false,"type":"boolean"},"background":{"type":"string","pattern":"^#[0-9a-f]{6}$"},"showIf":{"type":"object","properties":{"questionId":{"type":"string","minLength":1},"op":{"type":"string","enum":["is","is_not","answered","not_answered"]},"value":{"type":"string","maxLength":500}},"required":["questionId","op"],"additionalProperties":false},"type":{"type":"string","const":"signature"}},"required":["id","label","required","type"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1},"label":{"type":"string","minLength":1,"maxLength":500},"description":{"type":"string","maxLength":2000},"required":{"default":false,"type":"boolean"},"background":{"type":"string","pattern":"^#[0-9a-f]{6}$"},"showIf":{"type":"object","properties":{"questionId":{"type":"string","minLength":1},"op":{"type":"string","enum":["is","is_not","answered","not_answered"]},"value":{"type":"string","maxLength":500}},"required":["questionId","op"],"additionalProperties":false},"type":{"type":"string","const":"file_upload"},"maxFiles":{"default":1,"type":"integer","minimum":1,"maximum":5}},"required":["id","label","required","type","maxFiles"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1},"label":{"type":"string","minLength":1,"maxLength":500},"description":{"type":"string","maxLength":2000},"required":{"default":false,"type":"boolean"},"background":{"type":"string","pattern":"^#[0-9a-f]{6}$"},"showIf":{"type":"object","properties":{"questionId":{"type":"string","minLength":1},"op":{"type":"string","enum":["is","is_not","answered","not_answered"]},"value":{"type":"string","maxLength":500}},"required":["questionId","op"],"additionalProperties":false},"type":{"type":"string","const":"lookup"},"mode":{"default":"suggest","type":"string","enum":["pick","suggest","exact"]},"columns":{"default":[],"maxItems":6,"type":"array","items":{"type":"string","maxLength":100}},"rows":{"default":[],"maxItems":1000,"type":"array","items":{"minItems":1,"maxItems":6,"type":"array","items":{"type":"string","maxLength":100}}},"fills":{"default":{},"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"integer","minimum":1,"maximum":5}}},"required":["id","label","required","type","mode","columns","rows","fills"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1},"label":{"type":"string","minLength":1,"maxLength":500},"description":{"type":"string","maxLength":2000},"required":{"default":false,"type":"boolean"},"background":{"type":"string","pattern":"^#[0-9a-f]{6}$"},"showIf":{"type":"object","properties":{"questionId":{"type":"string","minLength":1},"op":{"type":"string","enum":["is","is_not","answered","not_answered"]},"value":{"type":"string","maxLength":500}},"required":["questionId","op"],"additionalProperties":false},"type":{"type":"string","const":"draw_image"},"imageId":{"type":"string","minLength":1},"width":{"type":"integer","exclusiveMinimum":0,"maximum":100000},"height":{"type":"integer","exclusiveMinimum":0,"maximum":100000}},"required":["id","label","required","type"],"additionalProperties":false}]},{"oneOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","const":"heading"},"label":{"type":"string","minLength":1,"maxLength":200},"background":{"type":"string","pattern":"^#[0-9a-f]{6}$"},"showIf":{"type":"object","properties":{"questionId":{"type":"string","minLength":1},"op":{"type":"string","enum":["is","is_not","answered","not_answered"]},"value":{"type":"string","maxLength":500}},"required":["questionId","op"],"additionalProperties":false}},"required":["id","type","label"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","const":"paragraph"},"label":{"type":"string","minLength":1,"maxLength":2000},"background":{"type":"string","pattern":"^#[0-9a-f]{6}$"},"showIf":{"type":"object","properties":{"questionId":{"type":"string","minLength":1},"op":{"type":"string","enum":["is","is_not","answered","not_answered"]},"value":{"type":"string","maxLength":500}},"required":["questionId","op"],"additionalProperties":false}},"required":["id","type","label"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","const":"divider"},"background":{"type":"string","pattern":"^#[0-9a-f]{6}$"},"showIf":{"type":"object","properties":{"questionId":{"type":"string","minLength":1},"op":{"type":"string","enum":["is","is_not","answered","not_answered"]},"value":{"type":"string","maxLength":500}},"required":["questionId","op"],"additionalProperties":false}},"required":["id","type"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","const":"spacer"},"background":{"type":"string","pattern":"^#[0-9a-f]{6}$"},"showIf":{"type":"object","properties":{"questionId":{"type":"string","minLength":1},"op":{"type":"string","enum":["is","is_not","answered","not_answered"]},"value":{"type":"string","maxLength":500}},"required":["questionId","op"],"additionalProperties":false}},"required":["id","type"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","const":"page_break"},"background":{"type":"string","pattern":"^#[0-9a-f]{6}$"},"autoSave":{"type":"boolean"}},"required":["id","type"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1},"type":{"type":"string","const":"image"},"imageId":{"type":"string","minLength":1},"width":{"type":"integer","exclusiveMinimum":0,"maximum":100000},"height":{"type":"integer","exclusiveMinimum":0,"maximum":100000},"alt":{"default":"","type":"string","maxLength":500},"size":{"default":"auto","type":"string","enum":["auto","small","medium","large","full"]},"background":{"type":"string","pattern":"^#[0-9a-f]{6}$"},"showIf":{"type":"object","properties":{"questionId":{"type":"string","minLength":1},"op":{"type":"string","enum":["is","is_not","answered","not_answered"]},"value":{"type":"string","maxLength":500}},"required":["questionId","op"],"additionalProperties":false}},"required":["id","type","alt","size"],"additionalProperties":false}]}]},"Column":{"type":"object","properties":{"id":{"type":"string","description":"Question id (the key in answers)"},"label":{"type":"string"},"type":{"type":"string"},"removed":{"type":"boolean","description":"Deleted from the form since"}}},"Link":{"type":"object","properties":{"id":{"type":"string"},"form_id":{"type":"string"},"name":{"type":"string"},"share_url":{"type":"string","format":"uri"},"vanity_url":{"type":["string","null"],"format":"uri","description":"The link's vanity address (Pro), or null if it has none"},"status":{"type":"string","enum":["open","suspended","off","paused","scheduled","ended","outside_hours","full","archived"],"description":"archived: kept for its responses from an earlier version of the form. It never takes responses again"},"accepting":{"type":"boolean"},"archived_at":{"type":["string","null"],"format":"date-time"},"response_count":{"type":"integer"},"max_responses":{"type":["integer","null"]},"max_per_respondent":{"type":["integer","null"]},"has_password":{"type":"boolean"},"has_email_allowlist":{"type":"boolean"},"created_at":{"type":"string","format":"date-time"}}},"Response":{"type":"object","required":["id","form_id","link_id","sequence","submitted_at","answers","display","verified"],"properties":{"id":{"type":"string"},"form_id":{"type":"string"},"link_id":{"type":"string"},"sequence":{"type":"integer","description":"Increases with every response and is never reused"},"submitted_at":{"type":"string","format":"date-time"},"answers":{"type":"object","additionalProperties":true,"description":"Raw values by question id (choice answers are option ids)"},"display":{"type":"object","additionalProperties":{"type":"string"},"description":"Readable values by question id"},"verified":{"type":"array","items":{"type":"string"},"description":"Ids of the email questions whose address the respondent confirmed with a code"},"encryption":{"type":"null","description":"Reserved for end-to-end encrypted forms"}}},"Webhook":{"type":"object","required":["id","url","form_ids","enabled","disabled_at","created_at"],"properties":{"id":{"type":"string"},"url":{"type":"string","format":"uri"},"form_ids":{"type":["array","null"],"items":{"type":"string"},"description":"Null = all forms"},"enabled":{"type":"boolean","description":"False once a delivery failed every retry. Turn it back on from the API page"},"disabled_at":{"type":["string","null"],"format":"date-time"},"created_at":{"type":"string","format":"date-time"}}},"NewWebhook":{"allOf":[{"$ref":"#/components/schemas/Webhook"},{"type":"object","required":["secret"],"properties":{"secret":{"type":"string","description":"The signing secret (whsec_…)"}}}]},"WebhookEvent":{"type":"object","required":["type","timestamp","data"],"properties":{"type":{"type":"string","enum":["response.created","webhook.test"]},"timestamp":{"type":"string","format":"date-time"},"data":{"$ref":"#/components/schemas/Response"}}},"ResponsePage":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Response"}},"has_more":{"type":"boolean"},"next_cursor":{"type":["string","null"],"description":"Pass as cursor for the next page, or keep to poll for new responses"}}}}}}