{"__v":1,"_id":"56d6cfe32417921500c46829","api":{"auth":"required","params":[],"results":{"codes":[]},"settings":"","url":""},"body":"Welcome to the documentation for the Typeform Build API. Here we will explain to you how to authenticate your API calls, what error codes we use, how we do versioning, and how you can use the Build API. We will also provide a detailed explanation of each field / question type you can use within the typeforms you create.\n\nWithout further ado, let's try creating your first typeform via Typeform I/O! Simply copy-and-paste the cURL command below into your terminal and run it.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl -X POST https://api.typeform.io/v0.4/forms -H \\\"X-API-TOKEN: 61b315aead2aac9be58448727f21ccdc\\\" --data '{\\\"title\\\": \\\"My first form! It just got born.\\\", \\\"fields\\\": [{\\\"type\\\": \\\"yes_no\\\", \\\"question\\\": \\\"No way. Did I really just make a typeform?\\\"}]}' -s | python -mjson.tool\",\n      \"language\": \"curl\"\n    }\n  ]\n}\n[/block]\nTake a look at the `\"_links\"` array in the JSON response, and try visiting the URL (`\"href\"`) in the object with `\"rel\": \"form_render\"`. You should be able to see your first typeform. Congratulations! \n[block:callout]\n{\n  \"type\": \"info\",\n  \"body\": \"If this is your first time using Typeform I/O, we recommend you read our [\\\"Getting Started\\\"-guide](doc:getting-started) to get a good overview of how to use the API and what you can do with it.\",\n  \"title\": \"First time here?\"\n}\n[/block]\nWe are continuously working on and improving Typeform I/O, and we're heavily focused on making the API as simple as possible, but also feature-rich so you can make good use of it. We would be forever grateful if you can leave us feedback. We welcome all questions, and we'd love to talk to you about how you're using Typeform I/O, what you hope for from us in the future, or anything else!\n\nYou can contact us at [support@typeform.io](mailto:support@typeform.io).","category":"56d6cfdf2417921500c4680e","createdAt":"2015-02-27T13:21:30.843Z","excerpt":"","githubsync":"","hidden":false,"isReference":false,"link_external":false,"link_url":"","order":0,"project":"54f06f596210dd21004627ce","slug":"getting-started-with-typeform-io","sync_unique":"","title":"Getting Started with Typeform I/O","type":"basic","updates":[],"user":"54f06f1ca17a1521003180f3","version":"56d6cfdf2417921500c4680d","childrenPages":[]}

Getting Started with Typeform I/O


Welcome to the documentation for the Typeform Build API. Here we will explain to you how to authenticate your API calls, what error codes we use, how we do versioning, and how you can use the Build API. We will also provide a detailed explanation of each field / question type you can use within the typeforms you create. Without further ado, let's try creating your first typeform via Typeform I/O! Simply copy-and-paste the cURL command below into your terminal and run it. [block:code] { "codes": [ { "code": "curl -X POST https://api.typeform.io/v0.4/forms -H \"X-API-TOKEN: 61b315aead2aac9be58448727f21ccdc\" --data '{\"title\": \"My first form! It just got born.\", \"fields\": [{\"type\": \"yes_no\", \"question\": \"No way. Did I really just make a typeform?\"}]}' -s | python -mjson.tool", "language": "curl" } ] } [/block] Take a look at the `"_links"` array in the JSON response, and try visiting the URL (`"href"`) in the object with `"rel": "form_render"`. You should be able to see your first typeform. Congratulations! [block:callout] { "type": "info", "body": "If this is your first time using Typeform I/O, we recommend you read our [\"Getting Started\"-guide](doc:getting-started) to get a good overview of how to use the API and what you can do with it.", "title": "First time here?" } [/block] We are continuously working on and improving Typeform I/O, and we're heavily focused on making the API as simple as possible, but also feature-rich so you can make good use of it. We would be forever grateful if you can leave us feedback. We welcome all questions, and we'd love to talk to you about how you're using Typeform I/O, what you hope for from us in the future, or anything else! You can contact us at [support@typeform.io](mailto:support@typeform.io).
Welcome to the documentation for the Typeform Build API. Here we will explain to you how to authenticate your API calls, what error codes we use, how we do versioning, and how you can use the Build API. We will also provide a detailed explanation of each field / question type you can use within the typeforms you create. Without further ado, let's try creating your first typeform via Typeform I/O! Simply copy-and-paste the cURL command below into your terminal and run it. [block:code] { "codes": [ { "code": "curl -X POST https://api.typeform.io/v0.4/forms -H \"X-API-TOKEN: 61b315aead2aac9be58448727f21ccdc\" --data '{\"title\": \"My first form! It just got born.\", \"fields\": [{\"type\": \"yes_no\", \"question\": \"No way. Did I really just make a typeform?\"}]}' -s | python -mjson.tool", "language": "curl" } ] } [/block] Take a look at the `"_links"` array in the JSON response, and try visiting the URL (`"href"`) in the object with `"rel": "form_render"`. You should be able to see your first typeform. Congratulations! [block:callout] { "type": "info", "body": "If this is your first time using Typeform I/O, we recommend you read our [\"Getting Started\"-guide](doc:getting-started) to get a good overview of how to use the API and what you can do with it.", "title": "First time here?" } [/block] We are continuously working on and improving Typeform I/O, and we're heavily focused on making the API as simple as possible, but also feature-rich so you can make good use of it. We would be forever grateful if you can leave us feedback. We welcome all questions, and we'd love to talk to you about how you're using Typeform I/O, what you hope for from us in the future, or anything else! You can contact us at [support@typeform.io](mailto:support@typeform.io).
{"category":"56d6cfdf2417921500c4680e","project":"54f06f596210dd21004627ce","user":"54f06f1ca17a1521003180f3","version":"56d6cfdf2417921500c4680d","updates":["56810c594047cf0d0041211a"],"_id":"56d6cfe32417921500c4682a","createdAt":"2015-03-15T21:21:58.289Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","auth":"required","params":[],"url":""},"order":1,"body":"To be able to authenticate your API calls, you need to [sign up for an API-key](http://docs.typeform.io/page/signup). It's a painless step and this documentation will be here waiting for you when you come back.\n\nYou authenticate your API calls by adding a header to the requests you make. At this point in time, you will only be able to have a single API key per account. Be sure to keep your API key secret, since it will have access to perform actions on your behalf.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl \\\"https://api.typeform.io/v0.4/\\\" --header 'X-API-TOKEN: YOUR_TOKEN'\",\n      \"language\": \"curl\"\n    }\n  ],\n  \"sidebar\": true\n}\n[/block]","excerpt":"","slug":"authentication","type":"basic","title":"Authentication","__v":0,"childrenPages":[]}

Authentication


To be able to authenticate your API calls, you need to [sign up for an API-key](http://docs.typeform.io/page/signup). It's a painless step and this documentation will be here waiting for you when you come back. You authenticate your API calls by adding a header to the requests you make. At this point in time, you will only be able to have a single API key per account. Be sure to keep your API key secret, since it will have access to perform actions on your behalf. [block:code] { "codes": [ { "code": "curl \"https://api.typeform.io/v0.4/\" --header 'X-API-TOKEN: YOUR_TOKEN'", "language": "curl" } ], "sidebar": true } [/block]
To be able to authenticate your API calls, you need to [sign up for an API-key](http://docs.typeform.io/page/signup). It's a painless step and this documentation will be here waiting for you when you come back. You authenticate your API calls by adding a header to the requests you make. At this point in time, you will only be able to have a single API key per account. Be sure to keep your API key secret, since it will have access to perform actions on your behalf. [block:code] { "codes": [ { "code": "curl \"https://api.typeform.io/v0.4/\" --header 'X-API-TOKEN: YOUR_TOKEN'", "language": "curl" } ], "sidebar": true } [/block]
{"category":"56d6cfdf2417921500c4680e","project":"54f06f596210dd21004627ce","user":"54f06f1ca17a1521003180f3","version":"56d6cfdf2417921500c4680d","updates":[],"_id":"56d6cfe32417921500c4682b","createdAt":"2015-03-15T21:22:12.205Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"auth":"required","params":[],"url":""},"order":2,"body":"Errors will be provided when you either send us a malformed request, a construction problem in your typeform or an authentication issue.\n[block:parameters]\n{\n  \"data\": {\n    \"0-0\": \"**2XX** - Success\",\n    \"0-1\": \"Everything worked as expected\",\n    \"1-0\": \"**400** - Bad Request\",\n    \"1-1\": \"Often missing a required parameter or malformed JSON.\",\n    \"2-0\": \"**401** - Unauthorized\",\n    \"2-1\": \"No valid API key provided or header is completely missing.\",\n    \"3-0\": \"**404** - Not Found\",\n    \"3-1\": \"The requested item doesn't exist.\",\n    \"4-0\": \"**5XX** - Server Errors\",\n    \"4-1\": \"Something went wrong on our end.\",\n    \"h-0\": \"Status Code\",\n    \"h-1\": \"Description\"\n  },\n  \"cols\": 2,\n  \"rows\": 5\n}\n[/block]","excerpt":"","slug":"errors","type":"basic","title":"Errors","__v":0,"childrenPages":[]}

Errors


Errors will be provided when you either send us a malformed request, a construction problem in your typeform or an authentication issue. [block:parameters] { "data": { "0-0": "**2XX** - Success", "0-1": "Everything worked as expected", "1-0": "**400** - Bad Request", "1-1": "Often missing a required parameter or malformed JSON.", "2-0": "**401** - Unauthorized", "2-1": "No valid API key provided or header is completely missing.", "3-0": "**404** - Not Found", "3-1": "The requested item doesn't exist.", "4-0": "**5XX** - Server Errors", "4-1": "Something went wrong on our end.", "h-0": "Status Code", "h-1": "Description" }, "cols": 2, "rows": 5 } [/block]
Errors will be provided when you either send us a malformed request, a construction problem in your typeform or an authentication issue. [block:parameters] { "data": { "0-0": "**2XX** - Success", "0-1": "Everything worked as expected", "1-0": "**400** - Bad Request", "1-1": "Often missing a required parameter or malformed JSON.", "2-0": "**401** - Unauthorized", "2-1": "No valid API key provided or header is completely missing.", "3-0": "**404** - Not Found", "3-1": "The requested item doesn't exist.", "4-0": "**5XX** - Server Errors", "4-1": "Something went wrong on our end.", "h-0": "Status Code", "h-1": "Description" }, "cols": 2, "rows": 5 } [/block]
{"__v":1,"_id":"56d6cfe32417921500c4682c","api":{"auth":"required","params":[],"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","url":""},"body":"Until the API has reached a stable state, we will at times, make some backwards-incompatible changes.\n\nWe are doing versioning via the URL, which means that with the current 0.4 version, you would access the API by making a request to `https://api.typeform.io/v0.4/`\n\nDuring development, you can also use the version `latest` to use the latest version available. The final URL would look like this: `https://api.typeform.io/latest/`\n\nIf you have signed up to Typeform I/O, you will be notified before any breaking changes happen.","category":"56d6cfdf2417921500c4680e","createdAt":"2015-03-15T21:50:02.187Z","excerpt":"","githubsync":"","hidden":false,"isReference":false,"link_external":false,"link_url":"","order":3,"project":"54f06f596210dd21004627ce","slug":"versioning","sync_unique":"","title":"Versioning","type":"basic","updates":[],"user":"54f06f1ca17a1521003180f3","version":"56d6cfdf2417921500c4680d","childrenPages":[]}

Versioning


Until the API has reached a stable state, we will at times, make some backwards-incompatible changes. We are doing versioning via the URL, which means that with the current 0.4 version, you would access the API by making a request to `https://api.typeform.io/v0.4/` During development, you can also use the version `latest` to use the latest version available. The final URL would look like this: `https://api.typeform.io/latest/` If you have signed up to Typeform I/O, you will be notified before any breaking changes happen.
Until the API has reached a stable state, we will at times, make some backwards-incompatible changes. We are doing versioning via the URL, which means that with the current 0.4 version, you would access the API by making a request to `https://api.typeform.io/v0.4/` During development, you can also use the version `latest` to use the latest version available. The final URL would look like this: `https://api.typeform.io/latest/` If you have signed up to Typeform I/O, you will be notified before any breaking changes happen.
{"__v":2,"_id":"56d6cfe32417921500c4682d","api":{"auth":"required","params":[],"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","url":""},"body":"[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"\",\n  \"body\": \"Typeform I/O is for programmers and people who want to generate a lot of typeforms.\\n\\nTypeform.com is the version which lets you create a typeform via a friendly interface.\\n\\nIf you just have one form you want to send to a lot of users, you are better off using Typeform.com.\\n\\nIf you have one form per user, and a lot of users, Typeform I/O is more suitable.\\n\\nYou can contact us at [support@typeform.io](mailto:support@typeform.io).\"\n}\n[/block]\nHere's a list of features from Typeform that Typeform I/O hasn't implemented yet. We aim to implement *most* of Typeform's functionality over time.\n[block:parameters]\n{\n  \"data\": {\n    \"0-0\": \"Fields\",\n    \"2-0\": \"Configure panel\",\n    \"h-0\": \"Category\",\n    \"h-1\": \"Missing features\",\n    \"0-1\": \"Date field\\nPayment field  \\nFile upload field  \\nQuestion group  \\nFull field customization _\\\\*1_\",\n    \"2-1\": \"Self notifications  \\nUser notifications  \\nProgress widget customization  \\nPrivate forms  \\nLanguage settings  \\nBranding settings  \\nIntegrations _\\\\*2_  \\nCustom messages\",\n    \"1-0\": \"Build panel\",\n    \"1-1\": \"Logic jumps  \\nPiping  \\nCalculator (score and price)  \\nHidden fields\",\n    \"3-0\": \"Analyze panel\",\n    \"3-1\": \"Results storage _\\\\*3_  \\nMetrics  \\nGoogle Analytics  \\nReports\"\n  },\n  \"cols\": 2,\n  \"rows\": 4\n}\n[/block]\n__\\*1__: Except for question, description, required, and choices (on fields where applicable)  \n__\\*2__: You could implement them manually through webhooks; see \"Results\"  \n__\\*3__: We will send the results to your server directly through webhooks; see \"Results\"","category":"56d6cfdf2417921500c4680e","createdAt":"2015-04-02T10:36:24.688Z","excerpt":"","githubsync":"","hidden":false,"isReference":false,"link_external":false,"link_url":"","order":4,"project":"54f06f596210dd21004627ce","slug":"already-use-typeform","sync_unique":"","title":"Already using Typeform?","type":"basic","updates":["56d4cfafde84300b002e4cac"],"user":"54f47632a510f81900ac1a0d","version":"56d6cfdf2417921500c4680d","childrenPages":[]}

Already using Typeform?


[block:callout] { "type": "info", "title": "", "body": "Typeform I/O is for programmers and people who want to generate a lot of typeforms.\n\nTypeform.com is the version which lets you create a typeform via a friendly interface.\n\nIf you just have one form you want to send to a lot of users, you are better off using Typeform.com.\n\nIf you have one form per user, and a lot of users, Typeform I/O is more suitable.\n\nYou can contact us at [support@typeform.io](mailto:support@typeform.io)." } [/block] Here's a list of features from Typeform that Typeform I/O hasn't implemented yet. We aim to implement *most* of Typeform's functionality over time. [block:parameters] { "data": { "0-0": "Fields", "2-0": "Configure panel", "h-0": "Category", "h-1": "Missing features", "0-1": "Date field\nPayment field \nFile upload field \nQuestion group \nFull field customization _\\*1_", "2-1": "Self notifications \nUser notifications \nProgress widget customization \nPrivate forms \nLanguage settings \nBranding settings \nIntegrations _\\*2_ \nCustom messages", "1-0": "Build panel", "1-1": "Logic jumps \nPiping \nCalculator (score and price) \nHidden fields", "3-0": "Analyze panel", "3-1": "Results storage _\\*3_ \nMetrics \nGoogle Analytics \nReports" }, "cols": 2, "rows": 4 } [/block] __\*1__: Except for question, description, required, and choices (on fields where applicable) __\*2__: You could implement them manually through webhooks; see "Results" __\*3__: We will send the results to your server directly through webhooks; see "Results"
[block:callout] { "type": "info", "title": "", "body": "Typeform I/O is for programmers and people who want to generate a lot of typeforms.\n\nTypeform.com is the version which lets you create a typeform via a friendly interface.\n\nIf you just have one form you want to send to a lot of users, you are better off using Typeform.com.\n\nIf you have one form per user, and a lot of users, Typeform I/O is more suitable.\n\nYou can contact us at [support@typeform.io](mailto:support@typeform.io)." } [/block] Here's a list of features from Typeform that Typeform I/O hasn't implemented yet. We aim to implement *most* of Typeform's functionality over time. [block:parameters] { "data": { "0-0": "Fields", "2-0": "Configure panel", "h-0": "Category", "h-1": "Missing features", "0-1": "Date field\nPayment field \nFile upload field \nQuestion group \nFull field customization _\\*1_", "2-1": "Self notifications \nUser notifications \nProgress widget customization \nPrivate forms \nLanguage settings \nBranding settings \nIntegrations _\\*2_ \nCustom messages", "1-0": "Build panel", "1-1": "Logic jumps \nPiping \nCalculator (score and price) \nHidden fields", "3-0": "Analyze panel", "3-1": "Results storage _\\*3_ \nMetrics \nGoogle Analytics \nReports" }, "cols": 2, "rows": 4 } [/block] __\*1__: Except for question, description, required, and choices (on fields where applicable) __\*2__: You could implement them manually through webhooks; see "Results" __\*3__: We will send the results to your server directly through webhooks; see "Results"
{"category":"56d6cfdf2417921500c4680f","project":"54f06f596210dd21004627ce","user":"54f06f1ca17a1521003180f3","version":"56d6cfdf2417921500c4680d","updates":["559e979dc713ef0d000282bf","55b274ba88093a21008beef4","561e7399efcf8217003adfdf","56266793d0f87e190014c59e"],"_id":"56d6cfe52417921500c4683a","createdAt":"2015-03-18T12:56:15.528Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","auth":"required","params":[],"url":""},"order":5,"body":"This introduction will teach you what Typeform I/O is, how you would use it and what you can build with it. We will go through everything from signup to successfully creating typeforms dynamically.\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"What is Typeform I/O?\"\n}\n[/block]\nTypeform I/O is a form creation and rendering service. Imagine, you have a couple of questions you want to ask to your users and those questions are different, depending on the user. Instead of creating every typeform manually or building an automated service, you can use Typeform I/O to manage this for you. You will get beautiful forms that are easy to create and that your users will love to fill out!\n\nBelow you'll find a short animation that describes the typical flow of creating a typeform, sending it to the user and waiting for the user to submit the typeform so you can get a hold of the data.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/dz6uLLGmSxKvxBqQAwDp_typeform_io_beginning.gif\",\n        \"typeform_io_beginning.gif\",\n        \"1024\",\n        \"1024\",\n        \"#a8755c\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]\nIf you would like to include images in your typeform (for example, by using Picture Choice Field), the flow would be slightly different. Please read about the [Design endpoint](http://docs.typeform.io/v0.4/docs/images).\n\nFor the sake of this tutorial, we will be doing the examples with the Chrome extension [Postman](https://www.getpostman.com/) but you can use whatever client/GUI as you like.\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Signup\"\n}\n[/block]\nThe first thing you will need to use the API is an API-key. Make sure you keep your API-key secret. Visit our [\"signup page\"](http://docs.typeform.io/page/signup) page to register for an API-key. As soon as you have the API-key, you can start using Typeform I/O.\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"title\": \"If you forget your API-key or your API-key has been compromised\",\n  \"body\": \"We are all human beings and sometimes we make mistakes. Sometimes we even forget things! Sometimes, other people are evil and steal things from you. If these things happens to your API-key, you will have to reset your API-key.\\n\\nIn the future, you will be able to manage this by yourself, but for the time being, you will have to email support@typeform.io so we can reset your key for you.\"\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Authentication\"\n}\n[/block]\nWe use a simple way of doing authentication. Basically, you would use add a `X-API-TOKEN` header to your request, with the value being your API-key. \n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Test & Metadata Information\"\n}\n[/block]\nIf you want to make sure your authentication and connection to Typeform I/O works, make a `GET` request to `https://api.typeform.io/latest/`. The `/latest/` part is the version you're gonna use of the API.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"curl -X GET https://api.typeform.io/latest/ -H \\\"X-API-TOKEN: your_api_token\\\"\",\n      \"language\": \"shell\",\n      \"name\": \"cURL\"\n    }\n  ]\n}\n[/block]\nIf your authentication is working, you should receive something similar to the metadata below. Otherwise you'll receive a 403 Forbidden.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"name\\\": \\\"Typeform I/O Build API\\\",\\n  \\\"description\\\": \\\"Build API for creating forms awesomely\\\",\\n  \\\"version\\\": \\\"v0.4\\\",\\n  \\\"documentation\\\": \\\"https://docs.typeform.io/\\\",\\n  \\\"support\\\": \\\"support@typeform.io\\\",\\n  \\\"time\\\": \\\"2015-05-26 17:55:23 +0000\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Creating your first typeform\"\n}\n[/block]\nNow we get to the fun stuff, let's create a typeform that you can send to your users!\n\nThe endpoint you will use for creating forms is `https://api.typeform.io/latest/forms`. Forms is the resource you are creating. You can read more about the endpoint in our [/forms reference](http://docs.typeform.io/v0.4/docs/forms)\n\nYou make a `POST` request with the JSON example below to create a new typeform.\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"title\": \"Parameters\",\n  \"body\": \"The typeform has to have at least one title and one field in the JSON\"\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n\\t\\\"title\\\": \\\"My first typeform\\\",\\n  \\\"fields\\\": [\\n    {\\n    \\t\\\"type\\\": \\\"short_text\\\",\\n      \\\"question\\\": \\\"What is your name?\\\"\\n    }\\n  ]\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nWe recommend using our [Sandbox application](http://docs.typeform.io/page/sandbox) or Postman for Chrome to make test requests.\n\nThe response you get from making a request containing the data above, will look something like this:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"id\\\": \\\"keEwsGeuC\\\",\\n  \\\"title\\\": \\\"My first typeform\\\",\\n  \\\"fields\\\": [\\n    {\\n      \\\"type\\\": \\\"short_text\\\",\\n      \\\"question\\\": \\\"What is your name?\\\"\\n    }\\n  ],\\n\\t\\\"_links\\\": [\\n  \\t{\\n    \\t\\\"rel\\\": \\\"self\\\",\\n    \\t\\\"href\\\": \\\"https://api.typeform.io/latest/forms/keEwsGeuC\\\"\\n   \\t},\\n   \\t{\\n   \\t  \\\"rel\\\": \\\"form_render\\\",\\n   \\t  \\\"href\\\": \\\"https://forms.typeform.io/to/keEwsGeuC\\\"\\n    }\\n  ]\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nYou can see that two things have been added to your typeform, if you compare the request with the response.\n\n**id**\n\nThe first is an ID, it is the internal ID for your typeform. You would use in the future if you want to evaluate the typeform structure again. The ID is a SecureRandom generated string that also indicates where your users can access the typeform by going to `https://forms.typeform.io/to/ID` but instead or constructing the URL manually, try make use of the links `form_render` object that gives you the full URL for free.\n\n**_links**\n\nLinks is an array of objects that contains relevant links (also known as Hypermedia) to different resources associated to your typeform and also a link you can send your respondents to. `form_render` is the link that you will use to show the typeform for your users. You can embed the form in an iframe ([read about typeform embedding](http://docs.typeform.io/v0.4/docs/embedding-typeforms)), ask the user to navigate to the typeform or simply redirect the user.\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Rendering the typeform for your users\"\n}\n[/block]\nThere are different ways of showing the typeform to your users. Depending on the context, different ways makes sense.\n\nIf you only have an email address for your user, sending the email with a link to the typeform makes most sense.\n\nIf you have a user is logged into your application, it might make more sense to display the typeform directly inside your webpage by using an `<iframe>` or using a Modal window  ([read about typeform embedding](http://docs.typeform.io/docs/embedding-introduction)).","excerpt":"This is a quick introduction to Typeform I/O, how to use it and what you can do with the API","slug":"getting-started","type":"basic","title":"Getting Started","__v":0,"childrenPages":[]}

Getting Started

This is a quick introduction to Typeform I/O, how to use it and what you can do with the API

This introduction will teach you what Typeform I/O is, how you would use it and what you can build with it. We will go through everything from signup to successfully creating typeforms dynamically. [block:api-header] { "type": "basic", "title": "What is Typeform I/O?" } [/block] Typeform I/O is a form creation and rendering service. Imagine, you have a couple of questions you want to ask to your users and those questions are different, depending on the user. Instead of creating every typeform manually or building an automated service, you can use Typeform I/O to manage this for you. You will get beautiful forms that are easy to create and that your users will love to fill out! Below you'll find a short animation that describes the typical flow of creating a typeform, sending it to the user and waiting for the user to submit the typeform so you can get a hold of the data. [block:image] { "images": [ { "image": [ "https://files.readme.io/dz6uLLGmSxKvxBqQAwDp_typeform_io_beginning.gif", "typeform_io_beginning.gif", "1024", "1024", "#a8755c", "" ] } ] } [/block] If you would like to include images in your typeform (for example, by using Picture Choice Field), the flow would be slightly different. Please read about the [Design endpoint](http://docs.typeform.io/v0.4/docs/images). For the sake of this tutorial, we will be doing the examples with the Chrome extension [Postman](https://www.getpostman.com/) but you can use whatever client/GUI as you like. [block:api-header] { "type": "basic", "title": "Signup" } [/block] The first thing you will need to use the API is an API-key. Make sure you keep your API-key secret. Visit our ["signup page"](http://docs.typeform.io/page/signup) page to register for an API-key. As soon as you have the API-key, you can start using Typeform I/O. [block:callout] { "type": "warning", "title": "If you forget your API-key or your API-key has been compromised", "body": "We are all human beings and sometimes we make mistakes. Sometimes we even forget things! Sometimes, other people are evil and steal things from you. If these things happens to your API-key, you will have to reset your API-key.\n\nIn the future, you will be able to manage this by yourself, but for the time being, you will have to email support@typeform.io so we can reset your key for you." } [/block] [block:api-header] { "type": "basic", "title": "Authentication" } [/block] We use a simple way of doing authentication. Basically, you would use add a `X-API-TOKEN` header to your request, with the value being your API-key. [block:api-header] { "type": "basic", "title": "Test & Metadata Information" } [/block] If you want to make sure your authentication and connection to Typeform I/O works, make a `GET` request to `https://api.typeform.io/latest/`. The `/latest/` part is the version you're gonna use of the API. [block:code] { "codes": [ { "code": "curl -X GET https://api.typeform.io/latest/ -H \"X-API-TOKEN: your_api_token\"", "language": "shell", "name": "cURL" } ] } [/block] If your authentication is working, you should receive something similar to the metadata below. Otherwise you'll receive a 403 Forbidden. [block:code] { "codes": [ { "code": "{\n \"name\": \"Typeform I/O Build API\",\n \"description\": \"Build API for creating forms awesomely\",\n \"version\": \"v0.4\",\n \"documentation\": \"https://docs.typeform.io/\",\n \"support\": \"support@typeform.io\",\n \"time\": \"2015-05-26 17:55:23 +0000\"\n}", "language": "json" } ] } [/block] [block:api-header] { "type": "basic", "title": "Creating your first typeform" } [/block] Now we get to the fun stuff, let's create a typeform that you can send to your users! The endpoint you will use for creating forms is `https://api.typeform.io/latest/forms`. Forms is the resource you are creating. You can read more about the endpoint in our [/forms reference](http://docs.typeform.io/v0.4/docs/forms) You make a `POST` request with the JSON example below to create a new typeform. [block:callout] { "type": "warning", "title": "Parameters", "body": "The typeform has to have at least one title and one field in the JSON" } [/block] [block:code] { "codes": [ { "code": "{\n\t\"title\": \"My first typeform\",\n \"fields\": [\n {\n \t\"type\": \"short_text\",\n \"question\": \"What is your name?\"\n }\n ]\n}", "language": "json" } ] } [/block] We recommend using our [Sandbox application](http://docs.typeform.io/page/sandbox) or Postman for Chrome to make test requests. The response you get from making a request containing the data above, will look something like this: [block:code] { "codes": [ { "code": "{\n \"id\": \"keEwsGeuC\",\n \"title\": \"My first typeform\",\n \"fields\": [\n {\n \"type\": \"short_text\",\n \"question\": \"What is your name?\"\n }\n ],\n\t\"_links\": [\n \t{\n \t\"rel\": \"self\",\n \t\"href\": \"https://api.typeform.io/latest/forms/keEwsGeuC\"\n \t},\n \t{\n \t \"rel\": \"form_render\",\n \t \"href\": \"https://forms.typeform.io/to/keEwsGeuC\"\n }\n ]\n}", "language": "json" } ] } [/block] You can see that two things have been added to your typeform, if you compare the request with the response. **id** The first is an ID, it is the internal ID for your typeform. You would use in the future if you want to evaluate the typeform structure again. The ID is a SecureRandom generated string that also indicates where your users can access the typeform by going to `https://forms.typeform.io/to/ID` but instead or constructing the URL manually, try make use of the links `form_render` object that gives you the full URL for free. **_links** Links is an array of objects that contains relevant links (also known as Hypermedia) to different resources associated to your typeform and also a link you can send your respondents to. `form_render` is the link that you will use to show the typeform for your users. You can embed the form in an iframe ([read about typeform embedding](http://docs.typeform.io/v0.4/docs/embedding-typeforms)), ask the user to navigate to the typeform or simply redirect the user. [block:api-header] { "type": "basic", "title": "Rendering the typeform for your users" } [/block] There are different ways of showing the typeform to your users. Depending on the context, different ways makes sense. If you only have an email address for your user, sending the email with a link to the typeform makes most sense. If you have a user is logged into your application, it might make more sense to display the typeform directly inside your webpage by using an `<iframe>` or using a Modal window ([read about typeform embedding](http://docs.typeform.io/docs/embedding-introduction)).
This introduction will teach you what Typeform I/O is, how you would use it and what you can build with it. We will go through everything from signup to successfully creating typeforms dynamically. [block:api-header] { "type": "basic", "title": "What is Typeform I/O?" } [/block] Typeform I/O is a form creation and rendering service. Imagine, you have a couple of questions you want to ask to your users and those questions are different, depending on the user. Instead of creating every typeform manually or building an automated service, you can use Typeform I/O to manage this for you. You will get beautiful forms that are easy to create and that your users will love to fill out! Below you'll find a short animation that describes the typical flow of creating a typeform, sending it to the user and waiting for the user to submit the typeform so you can get a hold of the data. [block:image] { "images": [ { "image": [ "https://files.readme.io/dz6uLLGmSxKvxBqQAwDp_typeform_io_beginning.gif", "typeform_io_beginning.gif", "1024", "1024", "#a8755c", "" ] } ] } [/block] If you would like to include images in your typeform (for example, by using Picture Choice Field), the flow would be slightly different. Please read about the [Design endpoint](http://docs.typeform.io/v0.4/docs/images). For the sake of this tutorial, we will be doing the examples with the Chrome extension [Postman](https://www.getpostman.com/) but you can use whatever client/GUI as you like. [block:api-header] { "type": "basic", "title": "Signup" } [/block] The first thing you will need to use the API is an API-key. Make sure you keep your API-key secret. Visit our ["signup page"](http://docs.typeform.io/page/signup) page to register for an API-key. As soon as you have the API-key, you can start using Typeform I/O. [block:callout] { "type": "warning", "title": "If you forget your API-key or your API-key has been compromised", "body": "We are all human beings and sometimes we make mistakes. Sometimes we even forget things! Sometimes, other people are evil and steal things from you. If these things happens to your API-key, you will have to reset your API-key.\n\nIn the future, you will be able to manage this by yourself, but for the time being, you will have to email support@typeform.io so we can reset your key for you." } [/block] [block:api-header] { "type": "basic", "title": "Authentication" } [/block] We use a simple way of doing authentication. Basically, you would use add a `X-API-TOKEN` header to your request, with the value being your API-key. [block:api-header] { "type": "basic", "title": "Test & Metadata Information" } [/block] If you want to make sure your authentication and connection to Typeform I/O works, make a `GET` request to `https://api.typeform.io/latest/`. The `/latest/` part is the version you're gonna use of the API. [block:code] { "codes": [ { "code": "curl -X GET https://api.typeform.io/latest/ -H \"X-API-TOKEN: your_api_token\"", "language": "shell", "name": "cURL" } ] } [/block] If your authentication is working, you should receive something similar to the metadata below. Otherwise you'll receive a 403 Forbidden. [block:code] { "codes": [ { "code": "{\n \"name\": \"Typeform I/O Build API\",\n \"description\": \"Build API for creating forms awesomely\",\n \"version\": \"v0.4\",\n \"documentation\": \"https://docs.typeform.io/\",\n \"support\": \"support@typeform.io\",\n \"time\": \"2015-05-26 17:55:23 +0000\"\n}", "language": "json" } ] } [/block] [block:api-header] { "type": "basic", "title": "Creating your first typeform" } [/block] Now we get to the fun stuff, let's create a typeform that you can send to your users! The endpoint you will use for creating forms is `https://api.typeform.io/latest/forms`. Forms is the resource you are creating. You can read more about the endpoint in our [/forms reference](http://docs.typeform.io/v0.4/docs/forms) You make a `POST` request with the JSON example below to create a new typeform. [block:callout] { "type": "warning", "title": "Parameters", "body": "The typeform has to have at least one title and one field in the JSON" } [/block] [block:code] { "codes": [ { "code": "{\n\t\"title\": \"My first typeform\",\n \"fields\": [\n {\n \t\"type\": \"short_text\",\n \"question\": \"What is your name?\"\n }\n ]\n}", "language": "json" } ] } [/block] We recommend using our [Sandbox application](http://docs.typeform.io/page/sandbox) or Postman for Chrome to make test requests. The response you get from making a request containing the data above, will look something like this: [block:code] { "codes": [ { "code": "{\n \"id\": \"keEwsGeuC\",\n \"title\": \"My first typeform\",\n \"fields\": [\n {\n \"type\": \"short_text\",\n \"question\": \"What is your name?\"\n }\n ],\n\t\"_links\": [\n \t{\n \t\"rel\": \"self\",\n \t\"href\": \"https://api.typeform.io/latest/forms/keEwsGeuC\"\n \t},\n \t{\n \t \"rel\": \"form_render\",\n \t \"href\": \"https://forms.typeform.io/to/keEwsGeuC\"\n }\n ]\n}", "language": "json" } ] } [/block] You can see that two things have been added to your typeform, if you compare the request with the response. **id** The first is an ID, it is the internal ID for your typeform. You would use in the future if you want to evaluate the typeform structure again. The ID is a SecureRandom generated string that also indicates where your users can access the typeform by going to `https://forms.typeform.io/to/ID` but instead or constructing the URL manually, try make use of the links `form_render` object that gives you the full URL for free. **_links** Links is an array of objects that contains relevant links (also known as Hypermedia) to different resources associated to your typeform and also a link you can send your respondents to. `form_render` is the link that you will use to show the typeform for your users. You can embed the form in an iframe ([read about typeform embedding](http://docs.typeform.io/v0.4/docs/embedding-typeforms)), ask the user to navigate to the typeform or simply redirect the user. [block:api-header] { "type": "basic", "title": "Rendering the typeform for your users" } [/block] There are different ways of showing the typeform to your users. Depending on the context, different ways makes sense. If you only have an email address for your user, sending the email with a link to the typeform makes most sense. If you have a user is logged into your application, it might make more sense to display the typeform directly inside your webpage by using an `<iframe>` or using a Modal window ([read about typeform embedding](http://docs.typeform.io/docs/embedding-introduction)).
{"category":"56d6cfdf2417921500c46810","project":"54f06f596210dd21004627ce","user":"54f06f1ca17a1521003180f3","version":"56d6cfdf2417921500c4680d","updates":["56bb8c4eb234da21004195af"],"_id":"56d6cfe32417921500c4682e","createdAt":"2015-03-18T11:12:23.317Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"examples":{"codes":[{"code":"","language":"text"}]},"results":{"codes":[{"name":"","code":"{\n\t\"name\": \"Typeform I/O Build API\",\n  \"description\": \"Build API for creating forms awesomely\",\n  \"version\": \"v0.4\",\n  \"documentation\": \"typeform.io/docs\",\n  \"support\": \"support@typeform.io\",\n  \"time: \"2014-03-18 12:07:10\"\n}","language":"json","status":200}]},"settings":"","auth":"never","params":[],"url":"/"},"order":7,"body":"The base endpoint response contains information about the API. It is useful for testing or making sure you have access. \n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Authentication\",\n  \"body\": \"Just like every endpoint in the API, the base endpoint requires you to authenticate. If you haven't, read our [documentation on how to authenticate your API requests](doc:authentication).\"\n}\n[/block]","excerpt":"","slug":"base","type":"get","title":"base","__v":0,"childrenPages":[]}

getbase


The base endpoint response contains information about the API. It is useful for testing or making sure you have access. [block:callout] { "type": "info", "title": "Authentication", "body": "Just like every endpoint in the API, the base endpoint requires you to authenticate. If you haven't, read our [documentation on how to authenticate your API requests](doc:authentication)." } [/block]

Definition

{{ api_url }}{{ page_api_url }}

Result Format



The base endpoint response contains information about the API. It is useful for testing or making sure you have access. [block:callout] { "type": "info", "title": "Authentication", "body": "Just like every endpoint in the API, the base endpoint requires you to authenticate. If you haven't, read our [documentation on how to authenticate your API requests](doc:authentication)." } [/block]
{"__v":2,"_id":"56d6cfe32417921500c4682f","api":{"auth":"required","examples":{"codes":[{"language":"json","code":"{\n  \"title\": \"My new Typeform\",\n  \"tags\": [\"first-forms\"],\n  \"webhook_submit_url\": \"http://example.com/webhook\",\n  \"fields\": [\n    {\n      \"type\": \"short_text\",\n      \"question\": \"How is the weather down in Barcelona today?\"\n    }\n  ]\n}","name":""}]},"params":[{"_id":"55095ab51c38c50d006118ed","required":true,"desc":"The title of the typeform","default":"NULL","type":"string","name":"title","in":"body"},{"_id":"55095ab51c38c50d006118ec","required":true,"desc":"An array of Field objects","default":"[]","type":"array_mixed","name":"fields","in":"body"},{"_id":"55e042636bad670d0081f212","required":false,"desc":"An array of Tags","default":"[]","type":"array_string","name":"tags","in":"body"},{"_id":"5547991d6807510d00b46969","required":false,"desc":"The ID of the Design object you want to use","default":"NULL","type":"string","name":"design_id","in":"body"},{"_id":"5511ea7bc1b13537009f5cee","required":false,"desc":"Where you want the responses to go to when a respondent submits the typeform","default":"","type":"string","name":"webhook_submit_url","in":"body"},{"_id":"565f226e413e06170093de79","required":false,"desc":"The IDs of the URLs you want your form to be displayed at","default":"A randomly generated URL","type":"array_string","name":"url_ids","in":"body"},{"_id":"56d6d0c536dd840b00cef013","required":false,"desc":"Enables or disables the Typeform branding for the form","default":"true","type":"boolean","name":"branding","in":"body"}],"results":{"codes":[{"status":201,"language":"json","code":"{\n  \"id\": \"BRSgoNH6vdLBZw\",\n  \"title\": \"My new Typeform\",\n  \"tags\": [\"first-forms\"],\n  \"webhook_submit_url\": \"http://example.com/webhook\",\n  \"fields\": [\n    {\n      \"id\": 3439,\n      \"type\": \"short_text\",\n      \"question\": \"How is the weather down in Barcelona today?\"\n    }\n  ],\n  \"urls\": [\n    {\n      \"id\": \"hJ4tEqGWXF0qzr\",\n      \"form_id\": \"BRSgoNH6vdLBZw\",\n      \"version\": \"v0.4\"\n    }\n  ],\n  \"_links\": [\n    {\n      \"rel\": \"self\",\n      \"href\": \"https://api.typeform.io/latest/forms/BRSgoNH6vdLBZw\"\n    },\n    {\n      \"rel\": \"url\",\n      \"href\": \"https://api.typeform.io/latest/urls/hJ4tEqGWXF0qzr\"\n    },\n    {\n      \"rel\": \"form_render\",\n      \"href\": \"https://forms.typeform.io/to/hJ4tEqGWXF0qzr\"\n    }\n  ],\n  \"version\": \"v0.4\"\n}","name":""}]},"settings":"","url":"/forms"},"body":"The form endpoint is the main endpoint that you will be dealing with. It is the endpoint you use to create new typeforms. You have parameters to set the title, webhook URL and of course, the fields. The form endpoint will also return you a hash of URLs that you can use to distribute your typeform or delete it.","category":"56d6cfdf2417921500c46810","createdAt":"2015-03-15T21:50:32.630Z","editedParams":true,"editedParams2":true,"excerpt":"","githubsync":"","hidden":false,"isReference":false,"link_external":false,"link_url":"","order":8,"project":"54f06f596210dd21004627ce","slug":"forms","sync_unique":"","title":"forms","type":"post","updates":["570be4c19ca0ae1700fdb5b2"],"user":"54f06f1ca17a1521003180f3","version":"56d6cfdf2417921500c4680d","childrenPages":[]}

postforms


Body JSON

title:
required
stringNULL
The title of the typeform
fields:
required
array of mixed[]
An array of Field objects
tags:
array of strings[]
An array of Tags
design_id:
stringNULL
The ID of the Design object you want to use
webhook_submit_url:
string
Where you want the responses to go to when a respondent submits the typeform
url_ids:
array of stringsA randomly generated URL
The IDs of the URLs you want your form to be displayed at
branding:
booleantrue
Enables or disables the Typeform branding for the form
The form endpoint is the main endpoint that you will be dealing with. It is the endpoint you use to create new typeforms. You have parameters to set the title, webhook URL and of course, the fields. The form endpoint will also return you a hash of URLs that you can use to distribute your typeform or delete it.

Definition

{{ api_url }}{{ page_api_url }}

Examples


Result Format



The form endpoint is the main endpoint that you will be dealing with. It is the endpoint you use to create new typeforms. You have parameters to set the title, webhook URL and of course, the fields. The form endpoint will also return you a hash of URLs that you can use to distribute your typeform or delete it.
{"category":"56d6cfdf2417921500c46810","project":"54f06f596210dd21004627ce","user":"54f06f1ca17a1521003180f3","version":"56d6cfdf2417921500c4680d","updates":[],"_id":"56d6cfe32417921500c46830","createdAt":"2015-07-22T09:47:26.956Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"examples":{"codes":[{"language":"text","code":""}]},"results":{"codes":[{"name":"","code":"{\n  \"id\": \"tb3S10omcrpVDg\",\n  \"title\": \"Hello World\",\n  \"webhook_submit_url\": \"http://requestb.in/1ao9lh91\",\n  \"fields\": [\n    {\n      \"question\": \"Is it sunny in Barcelona today?\",\n      \"type\": \"yes_no\",\n      \"id\": 900638\n    }\n  ],\n  \"urls\": [\n    {\n      \"id\": \"SHLXyTcYuSbjjb\",\n      \"form_id\": \"tb3S10omcrpVDg\",\n      \"version\": \"v0.4\"\n    }\n  ],\n  \"_links\": [\n    {\n      \"rel\": \"self\",\n      \"href\": \"https://api.typeform.io/latest/forms/tb3S10omcrpVDg\"\n    },\n    {\n      \"rel\": \"url\",\n      \"href\": \"https://api.typeform.io/latest/urls/SHLXyTcYuSbjjb\"\n    },\n    {\n      \"rel\": \"form_render\",\n      \"href\": \"https://forms.typeform.io/to/SHLXyTcYuSbjjb\"\n    }\n  ]\n}","language":"json","status":200}]},"settings":"","auth":"required","params":[],"url":"/forms/:form_id"},"order":9,"body":"This is the endpoint you would use to get the structure back of a typeform.","excerpt":"","slug":"forms-1","type":"get","title":"forms/:form_id","__v":0,"childrenPages":[]}

getforms/:form_id


This is the endpoint you would use to get the structure back of a typeform.

Definition

{{ api_url }}{{ page_api_url }}

Result Format



This is the endpoint you would use to get the structure back of a typeform.
{"__v":0,"_id":"56d6cfe32417921500c46831","api":{"auth":"required","examples":{"codes":[{"language":"json","code":"{\n\t\"url\": \"http://example.com/original_img.png\"\n}","name":""}]},"params":[{"_id":"551bccdf944d6b2f00479d89","default":"","desc":"The url of the string","name":"url","ref":"","required":true,"type":"string","in":"body"}],"results":{"codes":[{"name":"","code":"{\n    \"id\": \"RmjsH92Zps4VvW\", \n    \"original_url\": \"http://example.com/original_img.png\", \n    \"type\": \"choice\",\n    \"version\": \"v0.4\"\n}\n","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","url":"/images"},"body":"Due to existing constraints, we cannot process all images on the fly when creating typeforms containing the 'Picture Choice' question type. Therefore, we provide an endpoint for creating images for Picture Choices before creating your typeform.\n\nTypeforms can also have a background image and fields can have images below the question text. This will require you to follow the same process as with Picture Choices and then reuse the images when creating the form. \n[block:callout]\n{\n  \"type\": \"warning\",\n  \"title\": \"Background and Field images\",\n  \"body\": \"We are still working on this feature. We would love to get any feedback about how you see it fit your needs. You can contact us at [support@typeform.io](mailto:support@typeform.io).\"\n}\n[/block]","category":"56d6cfdf2417921500c46810","createdAt":"2015-03-15T21:51:14.516Z","editedParams":true,"editedParams2":true,"excerpt":"","githubsync":"","hidden":false,"isReference":false,"link_external":false,"link_url":"","order":10,"project":"54f06f596210dd21004627ce","slug":"images","sync_unique":"","title":"images","type":"post","updates":[],"user":"54f06f1ca17a1521003180f3","version":"56d6cfdf2417921500c4680d","childrenPages":[]}

postimages


Body JSON

url:
required
string
The url of the string
Due to existing constraints, we cannot process all images on the fly when creating typeforms containing the 'Picture Choice' question type. Therefore, we provide an endpoint for creating images for Picture Choices before creating your typeform. Typeforms can also have a background image and fields can have images below the question text. This will require you to follow the same process as with Picture Choices and then reuse the images when creating the form. [block:callout] { "type": "warning", "title": "Background and Field images", "body": "We are still working on this feature. We would love to get any feedback about how you see it fit your needs. You can contact us at [support@typeform.io](mailto:support@typeform.io)." } [/block]

Definition

{{ api_url }}{{ page_api_url }}

Examples


Result Format



Due to existing constraints, we cannot process all images on the fly when creating typeforms containing the 'Picture Choice' question type. Therefore, we provide an endpoint for creating images for Picture Choices before creating your typeform. Typeforms can also have a background image and fields can have images below the question text. This will require you to follow the same process as with Picture Choices and then reuse the images when creating the form. [block:callout] { "type": "warning", "title": "Background and Field images", "body": "We are still working on this feature. We would love to get any feedback about how you see it fit your needs. You can contact us at [support@typeform.io](mailto:support@typeform.io)." } [/block]
{"category":"56d6cfdf2417921500c46810","project":"54f06f596210dd21004627ce","user":"54f47632a510f81900ac1a0d","version":"56d6cfdf2417921500c4680d","updates":[],"_id":"56d6cfe32417921500c46832","createdAt":"2015-12-14T10:18:15.211Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"examples":{"codes":[{"language":"text","code":""}]},"results":{"codes":[{"name":"","code":"{\n    \"filename\": \"choice-d3Pr766Q2ZjyVyS9QnnM7WUfS9F6QsAv-default\", \n    \"height\": 230, \n    \"id\": \"BdWe856bUv\", \n    \"type\": \"choice\", \n    \"url\": \"http://foobar\", \n    \"version\": \"v0.4\", \n    \"width\": 230\n}","language":"json","status":200}]},"settings":"","auth":"required","params":[],"url":"/images/:image_id"},"order":11,"body":"This is the endpoint you would use to get the structure back of an image.","excerpt":"","slug":"imagesimage_id","type":"get","title":"images/:image_id","__v":0,"childrenPages":[]}

getimages/:image_id


This is the endpoint you would use to get the structure back of an image.

Definition

{{ api_url }}{{ page_api_url }}

Result Format



This is the endpoint you would use to get the structure back of an image.
{"__v":0,"_id":"56d6cfe32417921500c46833","api":{"examples":{"codes":[{"language":"text","code":"{\n\t\"colors\": {\n  \t\"question\": \"#3D3D3D\",\n    \"button\": \"#4FB0AE\",\n    \"answer\": \"#4FB0AE\",\n    \"background\": \"#FFFFFF\"\n  },\n  \"font\": \"Source Sans Pro\"\n}","name":""}]},"results":{"codes":[{"name":"","code":"{\n  \"id\": \"RmjsH92Zps4VvW\",\n\t\"colors\": {\n  \t\"question\": \"#3D3D3D\",\n    \"button\": \"#4FB0AE\",\n    \"answer\": \"#4FB0AE\",\n    \"background\": \"#FFFFFF\"\n  },\n  \"font\": \"Source Sans Pro\",\n  \"version\": \"v0.4\"\n}","language":"json","status":200},{"name":"","code":"{\n\t\"message\": \"There is an issue in your enpoint\"\n}","language":"json","status":400}]},"settings":"","auth":"required","params":[{"_id":"55096fa72dd6a11900e6e790","required":false,"desc":"Colors of your design","default":"{   \t\"question\": \"#3D3D3D\",     \"button\": \"#4FB0AE\",     \"answer\": \"#4FB0AE\",     \"background\": \"#FFFFFF\"   }","type":"object","name":"colors","in":"body"},{"_id":"55096fa72dd6a11900e6e78f","required":false,"desc":"The font for the form","default":"Source Sans Pro","type":"string","name":"font","in":"body"}],"url":"/designs"},"body":"A design is what you see when you load your typeform. It contains information that is related to the styling of your typeform.\n\nEach design you create can be used in any number of typeforms by specifying the *design_id* property on the typeform when you create it.\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Live preview of Design\",\n  \"body\": \"If you are not sure about what colors/fonts you would like to use, we recommend you use a [www.typeform.com ](http://typeform.com)account (WYSYWIG editor) to build a design to your liking.\\n\\nOnce you are done, you can copy and paste your values into the API calls you'll be making.\"\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Available Fonts\",\n  \"sidebar\": true\n}\n[/block]\nAll fonts are taken from Google Webfonts.\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Font\",\n    \"0-0\": \"Acme\",\n    \"1-0\": \"Arial\",\n    \"2-0\": \"Arvo\",\n    \"3-0\": \"Bangers\",\n    \"4-0\": \"Cabin\",\n    \"5-0\": \"Cabin Condensed\",\n    \"6-0\": \"Courier\",\n    \"7-0\": \"Crete Round\",\n    \"8-0\": \"Dancing Script\",\n    \"9-0\": \"Exo\",\n    \"10-0\": \"Georgia\",\n    \"11-0\": \"Handlee\",\n    \"12-0\": \"Karla\",\n    \"13-0\": \"Lato\",\n    \"14-0\": \"\",\n    \"15-0\": \"\",\n    \"16-0\": \"\",\n    \"17-0\": \"\",\n    \"18-0\": \"\",\n    \"19-0\": \"\",\n    \"h-1\": \"Font\",\n    \"0-1\": \"Lobster\",\n    \"1-1\": \"Lora\",\n    \"2-1\": \"McLaren\",\n    \"3-1\": \"Monsterrat\",\n    \"4-1\": \"Nixie\",\n    \"0-2\": \"ffdsf\",\n    \"0-3\": \"sdfsdf\",\n    \"5-1\": \"Old Standard TT\",\n    \"6-1\": \"Open Sans\",\n    \"7-1\": \"Oswald\",\n    \"8-1\": \"Playfair\",\n    \"9-1\": \"Quicksand\",\n    \"10-1\": \"Raleway\",\n    \"11-1\": \"Signika\",\n    \"12-1\": \"Sniglet\",\n    \"13-1\": \"Source Sans Pro\",\n    \"14-1\": \"Vollkorn\"\n  },\n  \"cols\": 2,\n  \"rows\": 15\n}\n[/block]","category":"56d6cfdf2417921500c46810","createdAt":"2015-03-15T21:51:04.929Z","editedParams":true,"editedParams2":true,"excerpt":"","githubsync":"","hidden":false,"link_external":false,"link_url":"","order":12,"project":"54f06f596210dd21004627ce","slug":"designs","sync_unique":"","title":"designs","type":"post","updates":["5509df74dfed731900b81816"],"user":"54f06f1ca17a1521003180f3","version":"56d6cfdf2417921500c4680d","childrenPages":[]}

postdesigns


Body JSON

colors:
object{ "question": "#3D3D3D", "button": "#4FB0AE", "answer": "#4FB0AE", "background": "#FFFFFF" }
Colors of your design
font:
stringSource Sans Pro
The font for the form
A design is what you see when you load your typeform. It contains information that is related to the styling of your typeform. Each design you create can be used in any number of typeforms by specifying the *design_id* property on the typeform when you create it. [block:callout] { "type": "info", "title": "Live preview of Design", "body": "If you are not sure about what colors/fonts you would like to use, we recommend you use a [www.typeform.com ](http://typeform.com)account (WYSYWIG editor) to build a design to your liking.\n\nOnce you are done, you can copy and paste your values into the API calls you'll be making." } [/block] [block:api-header] { "type": "basic", "title": "Available Fonts", "sidebar": true } [/block] All fonts are taken from Google Webfonts. [block:parameters] { "data": { "h-0": "Font", "0-0": "Acme", "1-0": "Arial", "2-0": "Arvo", "3-0": "Bangers", "4-0": "Cabin", "5-0": "Cabin Condensed", "6-0": "Courier", "7-0": "Crete Round", "8-0": "Dancing Script", "9-0": "Exo", "10-0": "Georgia", "11-0": "Handlee", "12-0": "Karla", "13-0": "Lato", "14-0": "", "15-0": "", "16-0": "", "17-0": "", "18-0": "", "19-0": "", "h-1": "Font", "0-1": "Lobster", "1-1": "Lora", "2-1": "McLaren", "3-1": "Monsterrat", "4-1": "Nixie", "0-2": "ffdsf", "0-3": "sdfsdf", "5-1": "Old Standard TT", "6-1": "Open Sans", "7-1": "Oswald", "8-1": "Playfair", "9-1": "Quicksand", "10-1": "Raleway", "11-1": "Signika", "12-1": "Sniglet", "13-1": "Source Sans Pro", "14-1": "Vollkorn" }, "cols": 2, "rows": 15 } [/block]

Definition

{{ api_url }}{{ page_api_url }}

Examples


Result Format



A design is what you see when you load your typeform. It contains information that is related to the styling of your typeform. Each design you create can be used in any number of typeforms by specifying the *design_id* property on the typeform when you create it. [block:callout] { "type": "info", "title": "Live preview of Design", "body": "If you are not sure about what colors/fonts you would like to use, we recommend you use a [www.typeform.com ](http://typeform.com)account (WYSYWIG editor) to build a design to your liking.\n\nOnce you are done, you can copy and paste your values into the API calls you'll be making." } [/block] [block:api-header] { "type": "basic", "title": "Available Fonts", "sidebar": true } [/block] All fonts are taken from Google Webfonts. [block:parameters] { "data": { "h-0": "Font", "0-0": "Acme", "1-0": "Arial", "2-0": "Arvo", "3-0": "Bangers", "4-0": "Cabin", "5-0": "Cabin Condensed", "6-0": "Courier", "7-0": "Crete Round", "8-0": "Dancing Script", "9-0": "Exo", "10-0": "Georgia", "11-0": "Handlee", "12-0": "Karla", "13-0": "Lato", "14-0": "", "15-0": "", "16-0": "", "17-0": "", "18-0": "", "19-0": "", "h-1": "Font", "0-1": "Lobster", "1-1": "Lora", "2-1": "McLaren", "3-1": "Monsterrat", "4-1": "Nixie", "0-2": "ffdsf", "0-3": "sdfsdf", "5-1": "Old Standard TT", "6-1": "Open Sans", "7-1": "Oswald", "8-1": "Playfair", "9-1": "Quicksand", "10-1": "Raleway", "11-1": "Signika", "12-1": "Sniglet", "13-1": "Source Sans Pro", "14-1": "Vollkorn" }, "cols": 2, "rows": 15 } [/block]
{"category":"56d6cfdf2417921500c46810","project":"54f06f596210dd21004627ce","user":"566e9498e61c1917005aa118","version":"56d6cfdf2417921500c4680d","updates":[],"_id":"56d6cfe32417921500c46834","createdAt":"2015-12-14T10:19:53.968Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"examples":{"codes":[{"language":"text","code":""}]},"results":{"codes":[{"name":"","code":"{\n  \"id\": \"9EcTEjpH3g\",\n  \"colors\": {\n    \"answer\": \"#001122\",\n    \"background\": \"#aabbcc\",\n    \"button\": \"#000000\",\n    \"question\": \"#ffffff\"\n  },\n  \"font\": \"Source Sans Pro\",\n  \"version\": \"v0.4\"\n}","language":"json","status":200}]},"settings":"","auth":"required","params":[],"url":"/designs/:design_id"},"order":13,"body":"This is the endpoint you would use to get the definition back of a design.","excerpt":"","slug":"designsdesign_id","type":"get","title":"designs/:design_id","__v":0,"childrenPages":[]}

getdesigns/:design_id


This is the endpoint you would use to get the definition back of a design.

Definition

{{ api_url }}{{ page_api_url }}

Result Format



This is the endpoint you would use to get the definition back of a design.
{"__v":0,"_id":"56d6cfe32417921500c46835","api":{"examples":{"codes":[{"language":"text","code":"{\n  \"form_id\": \"BRSgoNH6vdLBZw\"\n}","name":""}]},"results":{"codes":[{"status":201,"language":"json","code":"{\n  \"id\": \"hJ4tEqGWXF0qzr\",\n  \"form_id\": \"BRSgoNH6vdLBZw\",\n  \"version\": \"v0.4\",\n  \"_links\": [\n    {\n      \"rel\": \"form\",\n      \"href\": \"https://api.typeform.io/latest/forms/BRSgoNH6vdLBZw\"\n    },\n    {\n      \"rel\": \"self\",\n      \"href\": \"https://api.typeform.io/latest/urls/hJ4tEqGWXF0qzr\"\n    },\n    {\n      \"rel\": \"form_render\",\n      \"href\": \"https://forms.typeform.io/to/hJ4tEqGWXF0qzr\"\n    }\n  ]\n}","name":""}]},"settings":"","auth":"required","params":[{"_id":"55095ab51c38c50d006118ed","required":true,"desc":"The ID of the typeform you wish to display on this URL","default":"NULL","type":"string","name":"form_id","in":"body"}],"url":"/urls"},"body":"The url endpoint creates a new URL linking to a typeform.","category":"56d6cfdf2417921500c46810","createdAt":"2015-12-02T17:06:07.391Z","editedParams":true,"editedParams2":true,"excerpt":"","githubsync":"","hidden":false,"link_external":false,"link_url":"","order":14,"project":"54f06f596210dd21004627ce","slug":"urls","sync_unique":"","title":"urls","type":"post","updates":[],"user":"54f47632a510f81900ac1a0d","version":"56d6cfdf2417921500c4680d","childrenPages":[]}

posturls


Body JSON

form_id:
required
stringNULL
The ID of the typeform you wish to display on this URL
The url endpoint creates a new URL linking to a typeform.

Definition

{{ api_url }}{{ page_api_url }}

Examples


Result Format



The url endpoint creates a new URL linking to a typeform.
{"category":"56d6cfdf2417921500c46810","project":"54f06f596210dd21004627ce","user":"54f47632a510f81900ac1a0d","version":"56d6cfdf2417921500c4680d","updates":[],"_id":"56d6cfe32417921500c46836","createdAt":"2015-12-02T16:56:34.384Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"examples":{"codes":[{"language":"text","code":""}]},"results":{"codes":[{"name":"","code":"{\n  \"id\": \"tb3S10omcrpVDg\",\n  \"form_id\": \"hJ4tEqGWXF0qzr\",\n  \"version\": \"v0.4\",\n  \"_links\": [\n    {\n      \"rel\": \"self\",\n      \"href\": \"https://api.typeform.io/latest/urls/tb3S10omcrpVDg\"\n    },\n    {\n      \"rel\": \"form\",\n      \"href\": \"https://api.typeform.io/latest/forms/hJ4tEqGWXF0qzr\"\n    },\n    {\n      \"rel\": \"form_render\",\n      \"href\": \"https://forms.typeform.io/to/tb3S10omcrpVDg\"\n    }\n  ]\n}","language":"json","status":200}]},"settings":"","auth":"required","params":[],"url":"/urls/:url_id"},"order":15,"body":"This is the endpoint you would use to get the typeform a URL links to.","excerpt":"","slug":"urlsurl_id","type":"get","title":"urls/:url_id","__v":0,"childrenPages":[]}

geturls/:url_id


This is the endpoint you would use to get the typeform a URL links to.

Definition

{{ api_url }}{{ page_api_url }}

Result Format



This is the endpoint you would use to get the typeform a URL links to.
{"__v":0,"_id":"56d6cfe32417921500c46837","api":{"settings":"","results":{"codes":[{"status":201,"language":"json","code":"{\n  \"id\": \"hJ4tEqGWXF0qzr\",\n  \"form_id\": \"BRSgoNH6vdLBZw\",\n  \"version\": \"v0.4\",\n  \"_links\": [\n    {\n      \"rel\": \"form\",\n      \"href\": \"https://api.typeform.io/latest/forms/BRSgoNH6vdLBZw\"\n    },\n    {\n      \"rel\": \"self\",\n      \"href\": \"https://api.typeform.io/latest/urls/hJ4tEqGWXF0qzr\"\n    },\n    {\n      \"rel\": \"form_render\",\n      \"href\": \"https://forms.typeform.io/to/hJ4tEqGWXF0qzr\"\n    }\n  ]\n}","name":""}]},"examples":{"codes":[{"language":"text","code":"{\n  \"form_id\": \"BRSgoNH6vdLBZw\"\n}","name":""}]},"auth":"required","params":[{"_id":"55095ab51c38c50d006118ed","required":true,"desc":"The ID of the typeform you wish to display on this URL","default":"NULL","type":"string","name":"form_id","in":"body"}],"url":"/urls/:url_id"},"body":"This url endpoint changes an existing URL to link to a different typeform.","category":"56d6cfdf2417921500c46810","createdAt":"2015-12-14T10:31:44.723Z","editedParams":true,"editedParams2":true,"excerpt":"","githubsync":"","hidden":false,"link_external":false,"link_url":"","order":16,"project":"54f06f596210dd21004627ce","slug":"urlsurl_id-1","sync_unique":"","title":"urls/:url_id","type":"put","updates":[],"user":"566e9498e61c1917005aa118","version":"56d6cfdf2417921500c4680d","childrenPages":[]}

puturls/:url_id


Body JSON

form_id:
required
stringNULL
The ID of the typeform you wish to display on this URL
This url endpoint changes an existing URL to link to a different typeform.

Definition

{{ api_url }}{{ page_api_url }}

Examples


Result Format



This url endpoint changes an existing URL to link to a different typeform.
{"project":"54f06f596210dd21004627ce","version":"56d6cfdf2417921500c4680d","category":"56d6cfdf2417921500c46810","_id":"572a2895d10a200e00b1cb11","user":"54f47632a510f81900ac1a0d","updates":[],"createdAt":"2016-05-04T16:51:33.610Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"settings":"","results":{"codes":[{"name":"","code":"","language":"json","status":204}]},"examples":{"codes":[{"language":"text","code":""}]},"auth":"required","params":[],"url":"/urls/:url_id"},"isReference":false,"order":999,"body":"This is the endpoint you would use to delete a URL that links to a typeform.","excerpt":"","slug":"urlsurl_id-2","type":"delete","title":"urls/:url_id","__v":0,"childrenPages":[]}

deleteurls/:url_id


This is the endpoint you would use to delete a URL that links to a typeform.

Definition

{{ api_url }}{{ page_api_url }}


This is the endpoint you would use to delete a URL that links to a typeform.
{"category":"56d6cfdf2417921500c46811","project":"54f06f596210dd21004627ce","user":"54f06f1ca17a1521003180f3","version":"56d6cfdf2417921500c4680d","updates":[],"_id":"56d6cfe12417921500c46819","createdAt":"2015-03-18T11:37:15.652Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","auth":"required","params":[],"url":""},"order":17,"body":"Fields are the core components of a typeform. Typeform I/O currently supports almost all of the fields (i.e. question types) that Typeform.com supports, except for the file upload, payment and question group fields.\n[block:callout]\n{\n  \"type\": \"info\",\n  \"body\": \"We are planning on implementing support for **all** fields as soon as we can, and we will let you know as soon as they're ready for use with I/O!\",\n  \"title\": \"Coming soon...\"\n}\n[/block]\nIn the `question` and `description` property of your fields, you can use [Markdown](http://daringfireball.net/projects/markdown/syntax) to style your text. Links are automatically converted to anchor tags, so you only need to specify the URL and we'll handle the rest.\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Common Properties\"\n}\n[/block]\nThese properties are shared between all the field types we have available.\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Property\",\n    \"h-1\": \"Description\",\n    \"h-2\": \"Default Value\",\n    \"0-0\": \"type\",\n    \"0-1\": \"A string describing the type of the field\",\n    \"0-2\": \"\",\n    \"1-0\": \"question\",\n    \"1-1\": \"The main question text for the field\",\n    \"1-2\": \"\",\n    \"2-0\": \"description\",\n    \"2-1\": \"The description (or sub-text) that appears below the main question text (in a smaller font size).\",\n    \"2-2\": \"null\",\n    \"3-0\": \"required\",\n    \"3-1\": \"Decides if the field is mandatory\",\n    \"3-2\": \"false\",\n    \"h-3\": \"Required\",\n    \"0-3\": \"Yes\",\n    \"1-3\": \"Yes\",\n    \"2-3\": \"No\",\n    \"3-3\": \"No\",\n    \"6-0\": \"attachment\",\n    \"6-1\": \"An image or video that is attached to the field **(Coming soon)** \",\n    \"6-2\": \"null\",\n    \"6-3\": \"No\",\n    \"4-0\": \"tags\",\n    \"4-1\": \"An array of tags as strings\",\n    \"4-2\": \"[]\",\n    \"4-3\": \"No\",\n    \"5-0\": \"ref\",\n    \"5-1\": \"A unique reference for the field\",\n    \"5-3\": \"No\"\n  },\n  \"cols\": 4,\n  \"rows\": 7\n}\n[/block]","excerpt":"","slug":"introduction","type":"basic","title":"Fields - Introduction","__v":0,"childrenPages":[]}

Fields - Introduction


Fields are the core components of a typeform. Typeform I/O currently supports almost all of the fields (i.e. question types) that Typeform.com supports, except for the file upload, payment and question group fields. [block:callout] { "type": "info", "body": "We are planning on implementing support for **all** fields as soon as we can, and we will let you know as soon as they're ready for use with I/O!", "title": "Coming soon..." } [/block] In the `question` and `description` property of your fields, you can use [Markdown](http://daringfireball.net/projects/markdown/syntax) to style your text. Links are automatically converted to anchor tags, so you only need to specify the URL and we'll handle the rest. [block:api-header] { "type": "basic", "title": "Common Properties" } [/block] These properties are shared between all the field types we have available. [block:parameters] { "data": { "h-0": "Property", "h-1": "Description", "h-2": "Default Value", "0-0": "type", "0-1": "A string describing the type of the field", "0-2": "", "1-0": "question", "1-1": "The main question text for the field", "1-2": "", "2-0": "description", "2-1": "The description (or sub-text) that appears below the main question text (in a smaller font size).", "2-2": "null", "3-0": "required", "3-1": "Decides if the field is mandatory", "3-2": "false", "h-3": "Required", "0-3": "Yes", "1-3": "Yes", "2-3": "No", "3-3": "No", "6-0": "attachment", "6-1": "An image or video that is attached to the field **(Coming soon)** ", "6-2": "null", "6-3": "No", "4-0": "tags", "4-1": "An array of tags as strings", "4-2": "[]", "4-3": "No", "5-0": "ref", "5-1": "A unique reference for the field", "5-3": "No" }, "cols": 4, "rows": 7 } [/block]
Fields are the core components of a typeform. Typeform I/O currently supports almost all of the fields (i.e. question types) that Typeform.com supports, except for the file upload, payment and question group fields. [block:callout] { "type": "info", "body": "We are planning on implementing support for **all** fields as soon as we can, and we will let you know as soon as they're ready for use with I/O!", "title": "Coming soon..." } [/block] In the `question` and `description` property of your fields, you can use [Markdown](http://daringfireball.net/projects/markdown/syntax) to style your text. Links are automatically converted to anchor tags, so you only need to specify the URL and we'll handle the rest. [block:api-header] { "type": "basic", "title": "Common Properties" } [/block] These properties are shared between all the field types we have available. [block:parameters] { "data": { "h-0": "Property", "h-1": "Description", "h-2": "Default Value", "0-0": "type", "0-1": "A string describing the type of the field", "0-2": "", "1-0": "question", "1-1": "The main question text for the field", "1-2": "", "2-0": "description", "2-1": "The description (or sub-text) that appears below the main question text (in a smaller font size).", "2-2": "null", "3-0": "required", "3-1": "Decides if the field is mandatory", "3-2": "false", "h-3": "Required", "0-3": "Yes", "1-3": "Yes", "2-3": "No", "3-3": "No", "6-0": "attachment", "6-1": "An image or video that is attached to the field **(Coming soon)** ", "6-2": "null", "6-3": "No", "4-0": "tags", "4-1": "An array of tags as strings", "4-2": "[]", "4-3": "No", "5-0": "ref", "5-1": "A unique reference for the field", "5-3": "No" }, "cols": 4, "rows": 7 } [/block]
{"category":"56d6cfdf2417921500c46811","project":"54f06f596210dd21004627ce","user":"54f06f1ca17a1521003180f3","version":"56d6cfdf2417921500c4680d","updates":[],"_id":"56d6cfe12417921500c4681a","createdAt":"2015-03-18T11:15:13.447Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","auth":"required","params":[],"url":""},"order":18,"body":"The `short_text` field is the typical, standard text input that you would expect.\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Structure\",\n  \"sidebar\": true\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"type\\\": \\\"short_text\\\",\\n\\t\\\"question\\\": \\\"What is your name?\\\",\\n  \\\"description\\\": \\\"We would love to get to know you better!\\\",\\n  \\\"required\\\": false\\n}\",\n      \"language\": \"json\"\n    }\n  ],\n  \"sidebar\": true\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Properties\"\n}\n[/block]\n\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Property\",\n    \"h-1\": \"Description\",\n    \"h-2\": \"Default Value\",\n    \"h-3\": \"Required\",\n    \"0-0\": \"max_characters\",\n    \"0-3\": \"No\",\n    \"0-1\": \"The maximum number of characters the respondent can type as an answer.\",\n    \"0-2\": \"null\"\n  },\n  \"cols\": 4,\n  \"rows\": 1\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Example\"\n}\n[/block]\n\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/PB7CACMkT1yBM5dEj8Yy_Screen%20Shot%202015-03-18%20at%2012.18.59%20PM.png\",\n        \"Screen Shot 2015-03-18 at 12.18.59 PM.png\",\n        \"1578\",\n        \"472\",\n        \"#4daead\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]","excerpt":"","slug":"shorttextfield","type":"basic","title":"short_text","__v":0,"childrenPages":[]}

short_text


The `short_text` field is the typical, standard text input that you would expect. [block:api-header] { "type": "basic", "title": "Structure", "sidebar": true } [/block] [block:code] { "codes": [ { "code": "{\n \"type\": \"short_text\",\n\t\"question\": \"What is your name?\",\n \"description\": \"We would love to get to know you better!\",\n \"required\": false\n}", "language": "json" } ], "sidebar": true } [/block] [block:api-header] { "type": "basic", "title": "Properties" } [/block] [block:parameters] { "data": { "h-0": "Property", "h-1": "Description", "h-2": "Default Value", "h-3": "Required", "0-0": "max_characters", "0-3": "No", "0-1": "The maximum number of characters the respondent can type as an answer.", "0-2": "null" }, "cols": 4, "rows": 1 } [/block] [block:api-header] { "type": "basic", "title": "Example" } [/block] [block:image] { "images": [ { "image": [ "https://files.readme.io/PB7CACMkT1yBM5dEj8Yy_Screen%20Shot%202015-03-18%20at%2012.18.59%20PM.png", "Screen Shot 2015-03-18 at 12.18.59 PM.png", "1578", "472", "#4daead", "" ] } ] } [/block]
The `short_text` field is the typical, standard text input that you would expect. [block:api-header] { "type": "basic", "title": "Structure", "sidebar": true } [/block] [block:code] { "codes": [ { "code": "{\n \"type\": \"short_text\",\n\t\"question\": \"What is your name?\",\n \"description\": \"We would love to get to know you better!\",\n \"required\": false\n}", "language": "json" } ], "sidebar": true } [/block] [block:api-header] { "type": "basic", "title": "Properties" } [/block] [block:parameters] { "data": { "h-0": "Property", "h-1": "Description", "h-2": "Default Value", "h-3": "Required", "0-0": "max_characters", "0-3": "No", "0-1": "The maximum number of characters the respondent can type as an answer.", "0-2": "null" }, "cols": 4, "rows": 1 } [/block] [block:api-header] { "type": "basic", "title": "Example" } [/block] [block:image] { "images": [ { "image": [ "https://files.readme.io/PB7CACMkT1yBM5dEj8Yy_Screen%20Shot%202015-03-18%20at%2012.18.59%20PM.png", "Screen Shot 2015-03-18 at 12.18.59 PM.png", "1578", "472", "#4daead", "" ] } ] } [/block]
{"category":"56d6cfdf2417921500c46811","project":"54f06f596210dd21004627ce","user":"54f06f1ca17a1521003180f3","version":"56d6cfdf2417921500c4680d","updates":[],"_id":"56d6cfe12417921500c4681b","createdAt":"2015-03-20T14:24:58.663Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","auth":"required","params":[],"url":""},"order":19,"body":"Use a `long_text` field when you want your user to leave answers with freely written text, longer than one line.\n\nFor example, asking people to write the story of their life in a ShortTextField, doesn't make sense. What you instead want to do, is to have a LongTextField for the user to write on multiple lines.\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Structure\",\n  \"sidebar\": true\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"type\\\": \\\"long_text\\\",\\n\\t\\\"question\\\": \\\"What is the story of your life?\\\",\\n  \\\"description\\\": \\\"Please describe it within 50 characters\\\",\\n  \\\"required\\\": false\\n}\",\n      \"language\": \"json\"\n    }\n  ],\n  \"sidebar\": true\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Properties\"\n}\n[/block]\n\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Property\",\n    \"h-1\": \"Description\",\n    \"h-2\": \"Default Value\",\n    \"0-0\": \"max_characters\",\n    \"0-1\": \"The maximum number of characters the respondent can type as an answer.\",\n    \"0-2\": \"null\"\n  },\n  \"cols\": 3,\n  \"rows\": 1\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Example typeform\"\n}\n[/block]\n\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/6857SoPReW9H39VHk5DL_Screen%20Shot%202015-04-08%20at%2014.30.07.png\",\n        \"Screen Shot 2015-04-08 at 14.30.07.png\",\n        \"495\",\n        \"311\",\n        \"#22b8b4\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]","excerpt":"","slug":"longtextfield","type":"basic","title":"long_text","__v":0,"childrenPages":[]}

long_text


Use a `long_text` field when you want your user to leave answers with freely written text, longer than one line. For example, asking people to write the story of their life in a ShortTextField, doesn't make sense. What you instead want to do, is to have a LongTextField for the user to write on multiple lines. [block:api-header] { "type": "basic", "title": "Structure", "sidebar": true } [/block] [block:code] { "codes": [ { "code": "{\n \"type\": \"long_text\",\n\t\"question\": \"What is the story of your life?\",\n \"description\": \"Please describe it within 50 characters\",\n \"required\": false\n}", "language": "json" } ], "sidebar": true } [/block] [block:api-header] { "type": "basic", "title": "Properties" } [/block] [block:parameters] { "data": { "h-0": "Property", "h-1": "Description", "h-2": "Default Value", "0-0": "max_characters", "0-1": "The maximum number of characters the respondent can type as an answer.", "0-2": "null" }, "cols": 3, "rows": 1 } [/block] [block:api-header] { "type": "basic", "title": "Example typeform" } [/block] [block:image] { "images": [ { "image": [ "https://files.readme.io/6857SoPReW9H39VHk5DL_Screen%20Shot%202015-04-08%20at%2014.30.07.png", "Screen Shot 2015-04-08 at 14.30.07.png", "495", "311", "#22b8b4", "" ] } ] } [/block]
Use a `long_text` field when you want your user to leave answers with freely written text, longer than one line. For example, asking people to write the story of their life in a ShortTextField, doesn't make sense. What you instead want to do, is to have a LongTextField for the user to write on multiple lines. [block:api-header] { "type": "basic", "title": "Structure", "sidebar": true } [/block] [block:code] { "codes": [ { "code": "{\n \"type\": \"long_text\",\n\t\"question\": \"What is the story of your life?\",\n \"description\": \"Please describe it within 50 characters\",\n \"required\": false\n}", "language": "json" } ], "sidebar": true } [/block] [block:api-header] { "type": "basic", "title": "Properties" } [/block] [block:parameters] { "data": { "h-0": "Property", "h-1": "Description", "h-2": "Default Value", "0-0": "max_characters", "0-1": "The maximum number of characters the respondent can type as an answer.", "0-2": "null" }, "cols": 3, "rows": 1 } [/block] [block:api-header] { "type": "basic", "title": "Example typeform" } [/block] [block:image] { "images": [ { "image": [ "https://files.readme.io/6857SoPReW9H39VHk5DL_Screen%20Shot%202015-04-08%20at%2014.30.07.png", "Screen Shot 2015-04-08 at 14.30.07.png", "495", "311", "#22b8b4", "" ] } ] } [/block]
{"category":"56d6cfdf2417921500c46811","project":"54f06f596210dd21004627ce","user":"54f06f1ca17a1521003180f3","version":"56d6cfdf2417921500c4680d","updates":[],"_id":"56d6cfe12417921500c4681c","createdAt":"2015-03-20T14:26:33.436Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","auth":"required","params":[],"url":""},"order":20,"body":"The `multiple_choice` field is used for (guess!) displaying multiple choice text based answers.\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Structure\",\n  \"sidebar\": true\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"type\\\": \\\"multiple_choice\\\",\\n  \\\"question\\\": \\\"How do you normally get to work?\\\",\\n  \\\"description\\\": \\\"On most days...\\\",\\n  \\\"required\\\": false,\\n  \\\"choices\\\": [\\n    {\\n      \\\"label\\\": \\\"Bicing\\\"\\n    },\\n    {\\n      \\\"label\\\": \\\"Car\\\"\\n    },\\n    {\\n      \\\"label\\\": \\\"Metro\\\"\\n    },\\n    {\\n      \\\"label\\\": \\\"Bus\\\"\\n    },\\n    {\\n      \\\"label\\\": \\\"Helicopter\\\"\\n    }\\n  ]\\n}\",\n      \"language\": \"json\"\n    }\n  ],\n  \"sidebar\": true\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Properties\"\n}\n[/block]\n\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Property\",\n    \"h-1\": \"Description\",\n    \"h-2\": \"Default value\",\n    \"h-3\": \"Required\",\n    \"0-0\": \"choices\",\n    \"0-1\": \"Array of choice objects with the choices that the respondent can select.\",\n    \"0-2\": \"[]Choice\",\n    \"0-3\": \"Yes\",\n    \"1-0\": \"allow_multiple_selections\",\n    \"1-1\": \"Boolean to decide if the respondent can choose one or multiple choices\",\n    \"1-2\": \"false\",\n    \"1-3\": \"No\",\n    \"2-0\": \"randomize\",\n    \"3-0\": \"vertical_alignment\",\n    \"4-0\": \"add_other_choice\",\n    \"2-1\": \"If the choice order should be randomized on every load\",\n    \"3-1\": \"If the choices should appear as one choice per row, instead of fitting as many choices as possible per row\",\n    \"2-2\": \"false\",\n    \"2-3\": \"No\",\n    \"4-1\": \"If the field should automatically include a choice with the text \\\"Other\\\" which transforms into a open ended text field\",\n    \"4-2\": \"false\",\n    \"4-3\": \"No\",\n    \"3-3\": \"No\",\n    \"3-2\": \"false\"\n  },\n  \"cols\": 4,\n  \"rows\": 5\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Example\"\n}\n[/block]\n\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/GQjsliQI6HOsgRh2Rf2A_Screen%20Shot%202015-04-08%20at%2014.32.37.png\",\n        \"Screen Shot 2015-04-08 at 14.32.37.png\",\n        \"632\",\n        \"246\",\n        \"#326d71\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]","excerpt":"","slug":"multiplechoicefield","type":"basic","title":"multiple_choice","__v":0,"childrenPages":[]}

multiple_choice


The `multiple_choice` field is used for (guess!) displaying multiple choice text based answers. [block:api-header] { "type": "basic", "title": "Structure", "sidebar": true } [/block] [block:code] { "codes": [ { "code": "{\n \"type\": \"multiple_choice\",\n \"question\": \"How do you normally get to work?\",\n \"description\": \"On most days...\",\n \"required\": false,\n \"choices\": [\n {\n \"label\": \"Bicing\"\n },\n {\n \"label\": \"Car\"\n },\n {\n \"label\": \"Metro\"\n },\n {\n \"label\": \"Bus\"\n },\n {\n \"label\": \"Helicopter\"\n }\n ]\n}", "language": "json" } ], "sidebar": true } [/block] [block:api-header] { "type": "basic", "title": "Properties" } [/block] [block:parameters] { "data": { "h-0": "Property", "h-1": "Description", "h-2": "Default value", "h-3": "Required", "0-0": "choices", "0-1": "Array of choice objects with the choices that the respondent can select.", "0-2": "[]Choice", "0-3": "Yes", "1-0": "allow_multiple_selections", "1-1": "Boolean to decide if the respondent can choose one or multiple choices", "1-2": "false", "1-3": "No", "2-0": "randomize", "3-0": "vertical_alignment", "4-0": "add_other_choice", "2-1": "If the choice order should be randomized on every load", "3-1": "If the choices should appear as one choice per row, instead of fitting as many choices as possible per row", "2-2": "false", "2-3": "No", "4-1": "If the field should automatically include a choice with the text \"Other\" which transforms into a open ended text field", "4-2": "false", "4-3": "No", "3-3": "No", "3-2": "false" }, "cols": 4, "rows": 5 } [/block] [block:api-header] { "type": "basic", "title": "Example" } [/block] [block:image] { "images": [ { "image": [ "https://files.readme.io/GQjsliQI6HOsgRh2Rf2A_Screen%20Shot%202015-04-08%20at%2014.32.37.png", "Screen Shot 2015-04-08 at 14.32.37.png", "632", "246", "#326d71", "" ] } ] } [/block]
The `multiple_choice` field is used for (guess!) displaying multiple choice text based answers. [block:api-header] { "type": "basic", "title": "Structure", "sidebar": true } [/block] [block:code] { "codes": [ { "code": "{\n \"type\": \"multiple_choice\",\n \"question\": \"How do you normally get to work?\",\n \"description\": \"On most days...\",\n \"required\": false,\n \"choices\": [\n {\n \"label\": \"Bicing\"\n },\n {\n \"label\": \"Car\"\n },\n {\n \"label\": \"Metro\"\n },\n {\n \"label\": \"Bus\"\n },\n {\n \"label\": \"Helicopter\"\n }\n ]\n}", "language": "json" } ], "sidebar": true } [/block] [block:api-header] { "type": "basic", "title": "Properties" } [/block] [block:parameters] { "data": { "h-0": "Property", "h-1": "Description", "h-2": "Default value", "h-3": "Required", "0-0": "choices", "0-1": "Array of choice objects with the choices that the respondent can select.", "0-2": "[]Choice", "0-3": "Yes", "1-0": "allow_multiple_selections", "1-1": "Boolean to decide if the respondent can choose one or multiple choices", "1-2": "false", "1-3": "No", "2-0": "randomize", "3-0": "vertical_alignment", "4-0": "add_other_choice", "2-1": "If the choice order should be randomized on every load", "3-1": "If the choices should appear as one choice per row, instead of fitting as many choices as possible per row", "2-2": "false", "2-3": "No", "4-1": "If the field should automatically include a choice with the text \"Other\" which transforms into a open ended text field", "4-2": "false", "4-3": "No", "3-3": "No", "3-2": "false" }, "cols": 4, "rows": 5 } [/block] [block:api-header] { "type": "basic", "title": "Example" } [/block] [block:image] { "images": [ { "image": [ "https://files.readme.io/GQjsliQI6HOsgRh2Rf2A_Screen%20Shot%202015-04-08%20at%2014.32.37.png", "Screen Shot 2015-04-08 at 14.32.37.png", "632", "246", "#326d71", "" ] } ] } [/block]
{"category":"56d6cfdf2417921500c46811","project":"54f06f596210dd21004627ce","user":"54f06f1ca17a1521003180f3","version":"56d6cfdf2417921500c4680d","updates":["561ff70518d75b1700b25286"],"_id":"56d6cfe12417921500c4681d","createdAt":"2015-03-20T14:26:41.323Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","auth":"required","params":[],"url":""},"order":21,"body":"The `picture_choice` field is much like the `multiple_choice` field, but you can also use images as choices and make your typeforms beautiful and engaging.\n\nLearn how to use images in a `picture_choice` field and how to use the [/images endpoint](doc:images) by reading the [\"How to create a Typeform with Picture Choices\"](doc:how-to-create-a-typeform-with-picture-choices)\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Structure\",\n  \"sidebar\": true\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n\\t\\\"type\\\": \\\"picture_choice\\\",\\n  \\\"question\\\": \\\"Which kitten is the cutest?\\\",\\n  \\\"description\\\": \\\"The winning kitten will be rewarded with fish-for-a-lifetime\\\",\\n  \\\"required\\\": false,\\n  \\\"choices\\\": [\\n  \\t{\\n    \\t\\\"image_id\\\": \\\"HNdAk47LS\\\",\\n      \\\"label\\\": \\\"KittensMittens\\\"\\n    },\\n    {\\n    \\t\\\"image_id\\\": \\\"L2DsjN8JS\\\",\\n      \\\"label\\\": \\\"Lord Mjau\\\"\\n    },\\n    {\\n    \\t\\\"image_id\\\": \\\"DLs2d43NS\\\",\\n      \\\"label\\\": \\\"Furry Lapresta\\\"\\n    }\\n  ]\\n}\",\n      \"language\": \"json\"\n    }\n  ],\n  \"sidebar\": true\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Properties\"\n}\n[/block]\n\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Property\",\n    \"h-1\": \"Description\",\n    \"h-2\": \"Default Value\",\n    \"h-3\": \"Required\",\n    \"0-0\": \"show_labels\",\n    \"2-0\": \"supersize\",\n    \"0-1\": \"If the labels should be visible beneath the choices or not.\",\n    \"0-2\": \"false\",\n    \"0-3\": \"No\",\n    \"2-1\": \"If the pictures choice should be set to large. **(Coming soon)**\",\n    \"2-2\": \"false\",\n    \"2-3\": \"No\",\n    \"3-0\": \"allow_multiple_selections\",\n    \"3-1\": \"Boolean to decide if the respondent can choose one or multiple choices\",\n    \"4-0\": \"randomize\",\n    \"4-1\": \"If the choice order should be randomized on every load\",\n    \"3-2\": \"false\",\n    \"4-2\": \"false\",\n    \"3-3\": \"No\",\n    \"4-3\": \"No\",\n    \"5-0\": \"add_other_choice\",\n    \"5-1\": \"If the field should automatically include a choice with the text \\\"Other\\\" which transforms into a open ended text field\",\n    \"5-2\": \"false\",\n    \"5-3\": \"No\",\n    \"1-0\": \"choices\",\n    \"1-1\": \"Array of choice objects with the choices that the respondent can select.\",\n    \"1-2\": \"[]Choice\"\n  },\n  \"cols\": 4,\n  \"rows\": 6\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Example\"\n}\n[/block]\n\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/rzsQk2mkT92RIfmV6xL7_Screen%20Shot%202015-04-08%20at%2016.22.57.png\",\n        \"Screen Shot 2015-04-08 at 16.22.57.png\",\n        \"576\",\n        \"363\",\n        \"#946b4b\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]","excerpt":"","slug":"picturechoicefield","type":"basic","title":"picture_choice","__v":0,"childrenPages":[]}

picture_choice


The `picture_choice` field is much like the `multiple_choice` field, but you can also use images as choices and make your typeforms beautiful and engaging. Learn how to use images in a `picture_choice` field and how to use the [/images endpoint](doc:images) by reading the ["How to create a Typeform with Picture Choices"](doc:how-to-create-a-typeform-with-picture-choices) [block:api-header] { "type": "basic", "title": "Structure", "sidebar": true } [/block] [block:code] { "codes": [ { "code": "{\n\t\"type\": \"picture_choice\",\n \"question\": \"Which kitten is the cutest?\",\n \"description\": \"The winning kitten will be rewarded with fish-for-a-lifetime\",\n \"required\": false,\n \"choices\": [\n \t{\n \t\"image_id\": \"HNdAk47LS\",\n \"label\": \"KittensMittens\"\n },\n {\n \t\"image_id\": \"L2DsjN8JS\",\n \"label\": \"Lord Mjau\"\n },\n {\n \t\"image_id\": \"DLs2d43NS\",\n \"label\": \"Furry Lapresta\"\n }\n ]\n}", "language": "json" } ], "sidebar": true } [/block] [block:api-header] { "type": "basic", "title": "Properties" } [/block] [block:parameters] { "data": { "h-0": "Property", "h-1": "Description", "h-2": "Default Value", "h-3": "Required", "0-0": "show_labels", "2-0": "supersize", "0-1": "If the labels should be visible beneath the choices or not.", "0-2": "false", "0-3": "No", "2-1": "If the pictures choice should be set to large. **(Coming soon)**", "2-2": "false", "2-3": "No", "3-0": "allow_multiple_selections", "3-1": "Boolean to decide if the respondent can choose one or multiple choices", "4-0": "randomize", "4-1": "If the choice order should be randomized on every load", "3-2": "false", "4-2": "false", "3-3": "No", "4-3": "No", "5-0": "add_other_choice", "5-1": "If the field should automatically include a choice with the text \"Other\" which transforms into a open ended text field", "5-2": "false", "5-3": "No", "1-0": "choices", "1-1": "Array of choice objects with the choices that the respondent can select.", "1-2": "[]Choice" }, "cols": 4, "rows": 6 } [/block] [block:api-header] { "type": "basic", "title": "Example" } [/block] [block:image] { "images": [ { "image": [ "https://files.readme.io/rzsQk2mkT92RIfmV6xL7_Screen%20Shot%202015-04-08%20at%2016.22.57.png", "Screen Shot 2015-04-08 at 16.22.57.png", "576", "363", "#946b4b", "" ] } ] } [/block]
The `picture_choice` field is much like the `multiple_choice` field, but you can also use images as choices and make your typeforms beautiful and engaging. Learn how to use images in a `picture_choice` field and how to use the [/images endpoint](doc:images) by reading the ["How to create a Typeform with Picture Choices"](doc:how-to-create-a-typeform-with-picture-choices) [block:api-header] { "type": "basic", "title": "Structure", "sidebar": true } [/block] [block:code] { "codes": [ { "code": "{\n\t\"type\": \"picture_choice\",\n \"question\": \"Which kitten is the cutest?\",\n \"description\": \"The winning kitten will be rewarded with fish-for-a-lifetime\",\n \"required\": false,\n \"choices\": [\n \t{\n \t\"image_id\": \"HNdAk47LS\",\n \"label\": \"KittensMittens\"\n },\n {\n \t\"image_id\": \"L2DsjN8JS\",\n \"label\": \"Lord Mjau\"\n },\n {\n \t\"image_id\": \"DLs2d43NS\",\n \"label\": \"Furry Lapresta\"\n }\n ]\n}", "language": "json" } ], "sidebar": true } [/block] [block:api-header] { "type": "basic", "title": "Properties" } [/block] [block:parameters] { "data": { "h-0": "Property", "h-1": "Description", "h-2": "Default Value", "h-3": "Required", "0-0": "show_labels", "2-0": "supersize", "0-1": "If the labels should be visible beneath the choices or not.", "0-2": "false", "0-3": "No", "2-1": "If the pictures choice should be set to large. **(Coming soon)**", "2-2": "false", "2-3": "No", "3-0": "allow_multiple_selections", "3-1": "Boolean to decide if the respondent can choose one or multiple choices", "4-0": "randomize", "4-1": "If the choice order should be randomized on every load", "3-2": "false", "4-2": "false", "3-3": "No", "4-3": "No", "5-0": "add_other_choice", "5-1": "If the field should automatically include a choice with the text \"Other\" which transforms into a open ended text field", "5-2": "false", "5-3": "No", "1-0": "choices", "1-1": "Array of choice objects with the choices that the respondent can select.", "1-2": "[]Choice" }, "cols": 4, "rows": 6 } [/block] [block:api-header] { "type": "basic", "title": "Example" } [/block] [block:image] { "images": [ { "image": [ "https://files.readme.io/rzsQk2mkT92RIfmV6xL7_Screen%20Shot%202015-04-08%20at%2016.22.57.png", "Screen Shot 2015-04-08 at 16.22.57.png", "576", "363", "#946b4b", "" ] } ] } [/block]
{"category":"56d6cfdf2417921500c46811","project":"54f06f596210dd21004627ce","user":"54f06f1ca17a1521003180f3","version":"56d6cfdf2417921500c4680d","updates":[],"_id":"56d6cfe12417921500c4681e","createdAt":"2015-03-20T14:24:37.287Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","auth":"required","params":[],"url":""},"order":22,"body":"The `statement` field is not a question, it's just a opportunity to make conversation in your typeform.\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Structure\",\n  \"sidebar\": true\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n\\t\\\"type\\\": \\\"statement\\\",\\n  \\\"question\\\": \\\"Please be as honest as you can be in the following questions\\\",\\n  \\\"description\\\": \\\"The answers you leave will have real impact.\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ],\n  \"sidebar\": true\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Properties\"\n}\n[/block]\n\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Property\",\n    \"h-1\": \"Description\",\n    \"h-2\": \"Default Value\",\n    \"h-3\": \"Required\",\n    \"0-0\": \"button_text\",\n    \"0-3\": \"No\",\n    \"0-1\": \"Sets the text of the button that jumps to the next field\",\n    \"0-2\": \"\\\"Continue\\\"\",\n    \"1-0\": \"hide_marks\",\n    \"1-1\": \"Boolean to indicate if the field should not be surrounded by quotation marks\",\n    \"1-2\": \"false\",\n    \"1-3\": \"No\"\n  },\n  \"cols\": 4,\n  \"rows\": 2\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Example typeform\"\n}\n[/block]\n\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/yskQqr68TcCW5fsmqNrv_Screen%20Shot%202015-04-08%20at%2014.43.21.png\",\n        \"Screen Shot 2015-04-08 at 14.43.21.png\",\n        \"629\",\n        \"182\",\n        \"\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]","excerpt":"","slug":"statementfield","type":"basic","title":"statement","__v":0,"childrenPages":[]}

statement


The `statement` field is not a question, it's just a opportunity to make conversation in your typeform. [block:api-header] { "type": "basic", "title": "Structure", "sidebar": true } [/block] [block:code] { "codes": [ { "code": "{\n\t\"type\": \"statement\",\n \"question\": \"Please be as honest as you can be in the following questions\",\n \"description\": \"The answers you leave will have real impact.\"\n}", "language": "json" } ], "sidebar": true } [/block] [block:api-header] { "type": "basic", "title": "Properties" } [/block] [block:parameters] { "data": { "h-0": "Property", "h-1": "Description", "h-2": "Default Value", "h-3": "Required", "0-0": "button_text", "0-3": "No", "0-1": "Sets the text of the button that jumps to the next field", "0-2": "\"Continue\"", "1-0": "hide_marks", "1-1": "Boolean to indicate if the field should not be surrounded by quotation marks", "1-2": "false", "1-3": "No" }, "cols": 4, "rows": 2 } [/block] [block:api-header] { "type": "basic", "title": "Example typeform" } [/block] [block:image] { "images": [ { "image": [ "https://files.readme.io/yskQqr68TcCW5fsmqNrv_Screen%20Shot%202015-04-08%20at%2014.43.21.png", "Screen Shot 2015-04-08 at 14.43.21.png", "629", "182", "", "" ] } ] } [/block]
The `statement` field is not a question, it's just a opportunity to make conversation in your typeform. [block:api-header] { "type": "basic", "title": "Structure", "sidebar": true } [/block] [block:code] { "codes": [ { "code": "{\n\t\"type\": \"statement\",\n \"question\": \"Please be as honest as you can be in the following questions\",\n \"description\": \"The answers you leave will have real impact.\"\n}", "language": "json" } ], "sidebar": true } [/block] [block:api-header] { "type": "basic", "title": "Properties" } [/block] [block:parameters] { "data": { "h-0": "Property", "h-1": "Description", "h-2": "Default Value", "h-3": "Required", "0-0": "button_text", "0-3": "No", "0-1": "Sets the text of the button that jumps to the next field", "0-2": "\"Continue\"", "1-0": "hide_marks", "1-1": "Boolean to indicate if the field should not be surrounded by quotation marks", "1-2": "false", "1-3": "No" }, "cols": 4, "rows": 2 } [/block] [block:api-header] { "type": "basic", "title": "Example typeform" } [/block] [block:image] { "images": [ { "image": [ "https://files.readme.io/yskQqr68TcCW5fsmqNrv_Screen%20Shot%202015-04-08%20at%2014.43.21.png", "Screen Shot 2015-04-08 at 14.43.21.png", "629", "182", "", "" ] } ] } [/block]
{"category":"56d6cfdf2417921500c46811","project":"54f06f596210dd21004627ce","user":"54f06f1ca17a1521003180f3","version":"56d6cfdf2417921500c4680d","updates":[],"_id":"56d6cfe12417921500c4681f","createdAt":"2015-03-20T14:27:10.508Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","auth":"required","params":[],"url":""},"order":23,"body":"The `dropdown` field (sometimes called a typeahead) is a `select` element with auto-completion. Use it when you need your respondent to choose from a long list of choices. \n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Structure\",\n  \"sidebar\": true\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"type\\\": \\\"dropdown\\\",\\n  \\\"question\\\": \\\"Which country are you from?\\\",\\n  \\\"description\\\": \\\"The world is your oyster\\\",\\n  \\\"choices\\\": [\\n    {\\n      \\\"label\\\": \\\"Sweden\\\"\\n    },\\n    {\\n      \\\"label\\\": \\\"Spain\\\"\\n    },\\n    {\\n      \\\"label\\\": \\\"Catalunya (Yes, it is a country)\\\"\\n    },\\n    {\\n      \\\"label\\\": \\\"USA\\\"\\n    },\\n    {\\n      \\\"label\\\": \\\"Chile\\\"\\n    }\\n  ]\\n}\",\n      \"language\": \"json\"\n    }\n  ],\n  \"sidebar\": true\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Properties\"\n}\n[/block]\n\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Property\",\n    \"h-1\": \"Description\",\n    \"h-2\": \"Default\",\n    \"h-3\": \"Required\",\n    \"0-0\": \"choices\",\n    \"0-3\": \"Yes\",\n    \"0-1\": \"Array of choice objects with the choices that the respondent can select.\",\n    \"0-2\": \"[]Choice\",\n    \"1-0\": \"alphabetical_order\",\n    \"1-1\": \"If the choices should be sorted in alphabetic order\",\n    \"1-2\": \"false\",\n    \"1-3\": \"No\"\n  },\n  \"cols\": 4,\n  \"rows\": 2\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Example\"\n}\n[/block]\n\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/bwzkhfyhRrBIUAGZ1iAN_Screen%20Shot%202015-04-08%20at%2014.40.30.png\",\n        \"Screen Shot 2015-04-08 at 14.40.30.png\",\n        \"796\",\n        \"440\",\n        \"#42575f\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]","excerpt":"","slug":"dropdownfield","type":"basic","title":"dropdown","__v":0,"childrenPages":[]}

dropdown


The `dropdown` field (sometimes called a typeahead) is a `select` element with auto-completion. Use it when you need your respondent to choose from a long list of choices. [block:api-header] { "type": "basic", "title": "Structure", "sidebar": true } [/block] [block:code] { "codes": [ { "code": "{\n \"type\": \"dropdown\",\n \"question\": \"Which country are you from?\",\n \"description\": \"The world is your oyster\",\n \"choices\": [\n {\n \"label\": \"Sweden\"\n },\n {\n \"label\": \"Spain\"\n },\n {\n \"label\": \"Catalunya (Yes, it is a country)\"\n },\n {\n \"label\": \"USA\"\n },\n {\n \"label\": \"Chile\"\n }\n ]\n}", "language": "json" } ], "sidebar": true } [/block] [block:api-header] { "type": "basic", "title": "Properties" } [/block] [block:parameters] { "data": { "h-0": "Property", "h-1": "Description", "h-2": "Default", "h-3": "Required", "0-0": "choices", "0-3": "Yes", "0-1": "Array of choice objects with the choices that the respondent can select.", "0-2": "[]Choice", "1-0": "alphabetical_order", "1-1": "If the choices should be sorted in alphabetic order", "1-2": "false", "1-3": "No" }, "cols": 4, "rows": 2 } [/block] [block:api-header] { "type": "basic", "title": "Example" } [/block] [block:image] { "images": [ { "image": [ "https://files.readme.io/bwzkhfyhRrBIUAGZ1iAN_Screen%20Shot%202015-04-08%20at%2014.40.30.png", "Screen Shot 2015-04-08 at 14.40.30.png", "796", "440", "#42575f", "" ] } ] } [/block]
The `dropdown` field (sometimes called a typeahead) is a `select` element with auto-completion. Use it when you need your respondent to choose from a long list of choices. [block:api-header] { "type": "basic", "title": "Structure", "sidebar": true } [/block] [block:code] { "codes": [ { "code": "{\n \"type\": \"dropdown\",\n \"question\": \"Which country are you from?\",\n \"description\": \"The world is your oyster\",\n \"choices\": [\n {\n \"label\": \"Sweden\"\n },\n {\n \"label\": \"Spain\"\n },\n {\n \"label\": \"Catalunya (Yes, it is a country)\"\n },\n {\n \"label\": \"USA\"\n },\n {\n \"label\": \"Chile\"\n }\n ]\n}", "language": "json" } ], "sidebar": true } [/block] [block:api-header] { "type": "basic", "title": "Properties" } [/block] [block:parameters] { "data": { "h-0": "Property", "h-1": "Description", "h-2": "Default", "h-3": "Required", "0-0": "choices", "0-3": "Yes", "0-1": "Array of choice objects with the choices that the respondent can select.", "0-2": "[]Choice", "1-0": "alphabetical_order", "1-1": "If the choices should be sorted in alphabetic order", "1-2": "false", "1-3": "No" }, "cols": 4, "rows": 2 } [/block] [block:api-header] { "type": "basic", "title": "Example" } [/block] [block:image] { "images": [ { "image": [ "https://files.readme.io/bwzkhfyhRrBIUAGZ1iAN_Screen%20Shot%202015-04-08%20at%2014.40.30.png", "Screen Shot 2015-04-08 at 14.40.30.png", "796", "440", "#42575f", "" ] } ] } [/block]
{"category":"56d6cfdf2417921500c46811","project":"54f06f596210dd21004627ce","user":"54f06f1ca17a1521003180f3","version":"56d6cfdf2417921500c4680d","updates":[],"_id":"56d6cfe12417921500c46820","createdAt":"2015-03-18T11:22:48.977Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","auth":"required","params":[],"url":""},"order":24,"body":"The `yes_no` field allows the user to answer only yes or no to a question.\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Structure\",\n  \"sidebar\": true\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"type\\\": \\\"yes_no\\\",\\n\\t\\\"question\\\": \\\"Is it sunny today?\\\",\\n  \\\"description\\\": \\\"If you look out the window right here, right now, are you getting a tan?\\\",\\n  \\\"required\\\": false\\n}\",\n      \"language\": \"json\"\n    }\n  ],\n  \"sidebar\": true\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Properties\"\n}\n[/block]\nThe YesNoField does not add any special properties.\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Example typeform\"\n}\n[/block]\n\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/obfXa4WeTL6Nymjukfmg_Screen%20Shot%202015-03-18%20at%2012.22.28%20PM.png\",\n        \"Screen Shot 2015-03-18 at 12.22.28 PM.png\",\n        \"1444\",\n        \"456\",\n        \"#53b0b3\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]","excerpt":"","slug":"yesnofield","type":"basic","title":"yes_no","__v":0,"childrenPages":[]}

yes_no


The `yes_no` field allows the user to answer only yes or no to a question. [block:api-header] { "type": "basic", "title": "Structure", "sidebar": true } [/block] [block:code] { "codes": [ { "code": "{\n \"type\": \"yes_no\",\n\t\"question\": \"Is it sunny today?\",\n \"description\": \"If you look out the window right here, right now, are you getting a tan?\",\n \"required\": false\n}", "language": "json" } ], "sidebar": true } [/block] [block:api-header] { "type": "basic", "title": "Properties" } [/block] The YesNoField does not add any special properties. [block:api-header] { "type": "basic", "title": "Example typeform" } [/block] [block:image] { "images": [ { "image": [ "https://files.readme.io/obfXa4WeTL6Nymjukfmg_Screen%20Shot%202015-03-18%20at%2012.22.28%20PM.png", "Screen Shot 2015-03-18 at 12.22.28 PM.png", "1444", "456", "#53b0b3", "" ] } ] } [/block]
The `yes_no` field allows the user to answer only yes or no to a question. [block:api-header] { "type": "basic", "title": "Structure", "sidebar": true } [/block] [block:code] { "codes": [ { "code": "{\n \"type\": \"yes_no\",\n\t\"question\": \"Is it sunny today?\",\n \"description\": \"If you look out the window right here, right now, are you getting a tan?\",\n \"required\": false\n}", "language": "json" } ], "sidebar": true } [/block] [block:api-header] { "type": "basic", "title": "Properties" } [/block] The YesNoField does not add any special properties. [block:api-header] { "type": "basic", "title": "Example typeform" } [/block] [block:image] { "images": [ { "image": [ "https://files.readme.io/obfXa4WeTL6Nymjukfmg_Screen%20Shot%202015-03-18%20at%2012.22.28%20PM.png", "Screen Shot 2015-03-18 at 12.22.28 PM.png", "1444", "456", "#53b0b3", "" ] } ] } [/block]
{"category":"56d6cfdf2417921500c46811","project":"54f06f596210dd21004627ce","user":"54f06f1ca17a1521003180f3","version":"56d6cfdf2417921500c4680d","updates":[],"_id":"56d6cfe12417921500c46821","createdAt":"2015-03-20T14:28:13.038Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","auth":"required","params":[],"url":""},"order":25,"body":"The `number` field is like a `short_text` field that only allows numbers.\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Structure\",\n  \"sidebar\": true\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n\\t\\\"type\\\": \\\"number\\\",\\n  \\\"question\\\": \\\"How old is your oldest cat?\\\",\\n  \\\"description\\\": \\\"We want to know because... Science.\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ],\n  \"sidebar\": true\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Properties\"\n}\n[/block]\n\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Property\",\n    \"h-1\": \"Description\",\n    \"h-2\": \"Default Value\",\n    \"h-3\": \"Required\",\n    \"0-0\": \"min_value\",\n    \"0-3\": \"No\",\n    \"0-1\": \"The minimum value your respondent can answer\",\n    \"1-0\": \"max_value\",\n    \"1-1\": \"The maximum value your respondent can answer\",\n    \"0-2\": \"null\",\n    \"1-2\": \"null\",\n    \"1-3\": \"No\"\n  },\n  \"cols\": 4,\n  \"rows\": 2\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Example\"\n}\n[/block]\n\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/Q0QYAO1TxCMgocsdopCz_Screen%20Shot%202015-04-08%20at%2014.49.21.png\",\n        \"Screen Shot 2015-04-08 at 14.49.21.png\",\n        \"803\",\n        \"262\",\n        \"#30666b\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]","excerpt":"","slug":"numberfield","type":"basic","title":"number","__v":0,"childrenPages":[]}

number


The `number` field is like a `short_text` field that only allows numbers. [block:api-header] { "type": "basic", "title": "Structure", "sidebar": true } [/block] [block:code] { "codes": [ { "code": "{\n\t\"type\": \"number\",\n \"question\": \"How old is your oldest cat?\",\n \"description\": \"We want to know because... Science.\"\n}", "language": "json" } ], "sidebar": true } [/block] [block:api-header] { "type": "basic", "title": "Properties" } [/block] [block:parameters] { "data": { "h-0": "Property", "h-1": "Description", "h-2": "Default Value", "h-3": "Required", "0-0": "min_value", "0-3": "No", "0-1": "The minimum value your respondent can answer", "1-0": "max_value", "1-1": "The maximum value your respondent can answer", "0-2": "null", "1-2": "null", "1-3": "No" }, "cols": 4, "rows": 2 } [/block] [block:api-header] { "type": "basic", "title": "Example" } [/block] [block:image] { "images": [ { "image": [ "https://files.readme.io/Q0QYAO1TxCMgocsdopCz_Screen%20Shot%202015-04-08%20at%2014.49.21.png", "Screen Shot 2015-04-08 at 14.49.21.png", "803", "262", "#30666b", "" ] } ] } [/block]
The `number` field is like a `short_text` field that only allows numbers. [block:api-header] { "type": "basic", "title": "Structure", "sidebar": true } [/block] [block:code] { "codes": [ { "code": "{\n\t\"type\": \"number\",\n \"question\": \"How old is your oldest cat?\",\n \"description\": \"We want to know because... Science.\"\n}", "language": "json" } ], "sidebar": true } [/block] [block:api-header] { "type": "basic", "title": "Properties" } [/block] [block:parameters] { "data": { "h-0": "Property", "h-1": "Description", "h-2": "Default Value", "h-3": "Required", "0-0": "min_value", "0-3": "No", "0-1": "The minimum value your respondent can answer", "1-0": "max_value", "1-1": "The maximum value your respondent can answer", "0-2": "null", "1-2": "null", "1-3": "No" }, "cols": 4, "rows": 2 } [/block] [block:api-header] { "type": "basic", "title": "Example" } [/block] [block:image] { "images": [ { "image": [ "https://files.readme.io/Q0QYAO1TxCMgocsdopCz_Screen%20Shot%202015-04-08%20at%2014.49.21.png", "Screen Shot 2015-04-08 at 14.49.21.png", "803", "262", "#30666b", "" ] } ] } [/block]
{"__v":1,"_id":"56d6cfe12417921500c46822","api":{"auth":"required","params":[],"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","url":""},"body":"The `rating` field is the best field to use if you want your users to rate anything (e.g. on a scale of 1-5) in a visual way.\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Structure\",\n  \"sidebar\": true\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n\\t\\\"type\\\": \\\"rating\\\",\\n  \\\"question\\\": \\\"What would you rate \\\\\\\"Babysitter 2000\\\\\\\"?\\\",\\n  \\\"description\\\": \\\"Be honest, we will not cry, we promise!\\\"\\n}\",\n      \"language\": \"json\"\n    }\n  ],\n  \"sidebar\": true\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Properties\"\n}\n[/block]\n\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Property\",\n    \"h-1\": \"Description\",\n    \"h-2\": \"Default Value\",\n    \"h-3\": \"Required\",\n    \"0-0\": \"steps\",\n    \"0-3\": \"No\",\n    \"0-1\": \"The number of steps the user can chose. **Is limited to a value between 1 - 10**\",\n    \"0-2\": \"5\",\n    \"1-0\": \"shape\",\n    \"1-1\": \"The icon to use for the steps. Use the list in Typeform.com to get the icon you want. \\\"Star\\\" in Typeform.com would be used as \\\"star\\\".\",\n    \"1-2\": \"\\\"star\\\"\",\n    \"1-3\": \"No\"\n  },\n  \"cols\": 4,\n  \"rows\": 2\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Example\"\n}\n[/block]\n\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/OhLg5h90SwS01ABZoruz_Screen%20Shot%202015-04-08%20at%2014.51.12.png\",\n        \"Screen Shot 2015-04-08 at 14.51.12.png\",\n        \"489\",\n        \"258\",\n        \"#8fadb0\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]","category":"56d6cfdf2417921500c46811","createdAt":"2015-03-20T14:25:49.503Z","excerpt":"","githubsync":"","hidden":false,"isReference":false,"link_external":false,"link_url":"","order":26,"project":"54f06f596210dd21004627ce","slug":"ratingfield","sync_unique":"","title":"rating","type":"basic","updates":[],"user":"54f06f1ca17a1521003180f3","version":"56d6cfdf2417921500c4680d","childrenPages":[]}

rating


The `rating` field is the best field to use if you want your users to rate anything (e.g. on a scale of 1-5) in a visual way. [block:api-header] { "type": "basic", "title": "Structure", "sidebar": true } [/block] [block:code] { "codes": [ { "code": "{\n\t\"type\": \"rating\",\n \"question\": \"What would you rate \\\"Babysitter 2000\\\"?\",\n \"description\": \"Be honest, we will not cry, we promise!\"\n}", "language": "json" } ], "sidebar": true } [/block] [block:api-header] { "type": "basic", "title": "Properties" } [/block] [block:parameters] { "data": { "h-0": "Property", "h-1": "Description", "h-2": "Default Value", "h-3": "Required", "0-0": "steps", "0-3": "No", "0-1": "The number of steps the user can chose. **Is limited to a value between 1 - 10**", "0-2": "5", "1-0": "shape", "1-1": "The icon to use for the steps. Use the list in Typeform.com to get the icon you want. \"Star\" in Typeform.com would be used as \"star\".", "1-2": "\"star\"", "1-3": "No" }, "cols": 4, "rows": 2 } [/block] [block:api-header] { "type": "basic", "title": "Example" } [/block] [block:image] { "images": [ { "image": [ "https://files.readme.io/OhLg5h90SwS01ABZoruz_Screen%20Shot%202015-04-08%20at%2014.51.12.png", "Screen Shot 2015-04-08 at 14.51.12.png", "489", "258", "#8fadb0", "" ] } ] } [/block]
The `rating` field is the best field to use if you want your users to rate anything (e.g. on a scale of 1-5) in a visual way. [block:api-header] { "type": "basic", "title": "Structure", "sidebar": true } [/block] [block:code] { "codes": [ { "code": "{\n\t\"type\": \"rating\",\n \"question\": \"What would you rate \\\"Babysitter 2000\\\"?\",\n \"description\": \"Be honest, we will not cry, we promise!\"\n}", "language": "json" } ], "sidebar": true } [/block] [block:api-header] { "type": "basic", "title": "Properties" } [/block] [block:parameters] { "data": { "h-0": "Property", "h-1": "Description", "h-2": "Default Value", "h-3": "Required", "0-0": "steps", "0-3": "No", "0-1": "The number of steps the user can chose. **Is limited to a value between 1 - 10**", "0-2": "5", "1-0": "shape", "1-1": "The icon to use for the steps. Use the list in Typeform.com to get the icon you want. \"Star\" in Typeform.com would be used as \"star\".", "1-2": "\"star\"", "1-3": "No" }, "cols": 4, "rows": 2 } [/block] [block:api-header] { "type": "basic", "title": "Example" } [/block] [block:image] { "images": [ { "image": [ "https://files.readme.io/OhLg5h90SwS01ABZoruz_Screen%20Shot%202015-04-08%20at%2014.51.12.png", "Screen Shot 2015-04-08 at 14.51.12.png", "489", "258", "#8fadb0", "" ] } ] } [/block]
{"category":"56d6cfdf2417921500c46811","project":"54f06f596210dd21004627ce","user":"54f06f1ca17a1521003180f3","version":"56d6cfdf2417921500c4680d","updates":[],"_id":"56d6cfe12417921500c46823","createdAt":"2015-03-20T14:28:04.137Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","auth":"required","params":[],"url":""},"order":27,"body":"The `opinion_scale` field is the perfect field if you want to do an NPS style evaluation, or simply ask your respondents to review a product of yours, with a scale you can set yourself.\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Structure\",\n  \"sidebar\": true\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n\\t\\\"type\\\": \\\"opinion_scale\\\",\\n  \\\"question\\\": \\\"What do you think of Typeform I/O?\\\",\\n  \\\"labels\\\": {\\n    \\\"left\\\": \\\"Forms suck\\\",\\n    \\\"center\\\": \\\"Who cares\\\",\\n    \\\"right\\\": \\\"I love you\\\"\\n  }\\n}\",\n      \"language\": \"json\"\n    }\n  ],\n  \"sidebar\": true\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Properties\"\n}\n[/block]\n\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Property\",\n    \"h-1\": \"Description\",\n    \"h-2\": \"Default\",\n    \"h-3\": \"Required\",\n    \"0-0\": \"steps\",\n    \"0-3\": \"Yes\",\n    \"0-1\": \"The number of steps in the scale. **Maximum is 11 and minimum is 5**\",\n    \"0-2\": \"11\",\n    \"1-0\": \"labels\",\n    \"1-1\": \"An object, defining left, center and right labels\",\n    \"1-2\": \"{\\\"left\\\": \\\"\\\", \\\"center\\\": \\\"\\\", \\\"right\\\": \\\"\\\"}\",\n    \"1-3\": \"No\",\n    \"2-0\": \"start_at_one\",\n    \"2-1\": \"If the scale should start at zero or one\",\n    \"2-2\": \"false\",\n    \"2-3\": \"No\"\n  },\n  \"cols\": 4,\n  \"rows\": 3\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Example\"\n}\n[/block]\n\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/YkDwI3EoSPiRcTcgUOSF_Screen%20Shot%202015-04-08%20at%2014.53.09.png\",\n        \"Screen Shot 2015-04-08 at 14.53.09.png\",\n        \"826\",\n        \"241\",\n        \"\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]","excerpt":"","slug":"opinionscalefield","type":"basic","title":"opinion_scale","__v":0,"childrenPages":[]}

opinion_scale


The `opinion_scale` field is the perfect field if you want to do an NPS style evaluation, or simply ask your respondents to review a product of yours, with a scale you can set yourself. [block:api-header] { "type": "basic", "title": "Structure", "sidebar": true } [/block] [block:code] { "codes": [ { "code": "{\n\t\"type\": \"opinion_scale\",\n \"question\": \"What do you think of Typeform I/O?\",\n \"labels\": {\n \"left\": \"Forms suck\",\n \"center\": \"Who cares\",\n \"right\": \"I love you\"\n }\n}", "language": "json" } ], "sidebar": true } [/block] [block:api-header] { "type": "basic", "title": "Properties" } [/block] [block:parameters] { "data": { "h-0": "Property", "h-1": "Description", "h-2": "Default", "h-3": "Required", "0-0": "steps", "0-3": "Yes", "0-1": "The number of steps in the scale. **Maximum is 11 and minimum is 5**", "0-2": "11", "1-0": "labels", "1-1": "An object, defining left, center and right labels", "1-2": "{\"left\": \"\", \"center\": \"\", \"right\": \"\"}", "1-3": "No", "2-0": "start_at_one", "2-1": "If the scale should start at zero or one", "2-2": "false", "2-3": "No" }, "cols": 4, "rows": 3 } [/block] [block:api-header] { "type": "basic", "title": "Example" } [/block] [block:image] { "images": [ { "image": [ "https://files.readme.io/YkDwI3EoSPiRcTcgUOSF_Screen%20Shot%202015-04-08%20at%2014.53.09.png", "Screen Shot 2015-04-08 at 14.53.09.png", "826", "241", "", "" ] } ] } [/block]
The `opinion_scale` field is the perfect field if you want to do an NPS style evaluation, or simply ask your respondents to review a product of yours, with a scale you can set yourself. [block:api-header] { "type": "basic", "title": "Structure", "sidebar": true } [/block] [block:code] { "codes": [ { "code": "{\n\t\"type\": \"opinion_scale\",\n \"question\": \"What do you think of Typeform I/O?\",\n \"labels\": {\n \"left\": \"Forms suck\",\n \"center\": \"Who cares\",\n \"right\": \"I love you\"\n }\n}", "language": "json" } ], "sidebar": true } [/block] [block:api-header] { "type": "basic", "title": "Properties" } [/block] [block:parameters] { "data": { "h-0": "Property", "h-1": "Description", "h-2": "Default", "h-3": "Required", "0-0": "steps", "0-3": "Yes", "0-1": "The number of steps in the scale. **Maximum is 11 and minimum is 5**", "0-2": "11", "1-0": "labels", "1-1": "An object, defining left, center and right labels", "1-2": "{\"left\": \"\", \"center\": \"\", \"right\": \"\"}", "1-3": "No", "2-0": "start_at_one", "2-1": "If the scale should start at zero or one", "2-2": "false", "2-3": "No" }, "cols": 4, "rows": 3 } [/block] [block:api-header] { "type": "basic", "title": "Example" } [/block] [block:image] { "images": [ { "image": [ "https://files.readme.io/YkDwI3EoSPiRcTcgUOSF_Screen%20Shot%202015-04-08%20at%2014.53.09.png", "Screen Shot 2015-04-08 at 14.53.09.png", "826", "241", "", "" ] } ] } [/block]
{"category":"56d6cfdf2417921500c46811","project":"54f06f596210dd21004627ce","user":"54f06f1ca17a1521003180f3","version":"56d6cfdf2417921500c4680d","updates":[],"_id":"56d6cfe12417921500c46824","createdAt":"2015-03-20T14:24:47.260Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","auth":"required","params":[],"url":""},"order":28,"body":"You want your users to give you their precious email? Then the `email` is just the right field for you!\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Structure\",\n  \"sidebar\": true\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n\\t\\\"type\\\": \\\"email\\\",\\n  \\\"question\\\": \\\"What is your email?\\\",\\n  \\\"description\\\": \\\"We will only spam you if you have green hair.\\\",\\n  \\\"required\\\": true\\n}\",\n      \"language\": \"json\"\n    }\n  ],\n  \"sidebar\": true\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Properties\"\n}\n[/block]\nThe EmailField does not have any additional special properties.\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Example typeform\"\n}\n[/block]\n\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/BpptwRmRTRO995Js3gfd_Screen%20Shot%202015-04-08%20at%2014.54.48.png\",\n        \"Screen Shot 2015-04-08 at 14.54.48.png\",\n        \"784\",\n        \"268\",\n        \"#2e6167\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]","excerpt":"","slug":"emailfield","type":"basic","title":"email","__v":0,"childrenPages":[]}

email


You want your users to give you their precious email? Then the `email` is just the right field for you! [block:api-header] { "type": "basic", "title": "Structure", "sidebar": true } [/block] [block:code] { "codes": [ { "code": "{\n\t\"type\": \"email\",\n \"question\": \"What is your email?\",\n \"description\": \"We will only spam you if you have green hair.\",\n \"required\": true\n}", "language": "json" } ], "sidebar": true } [/block] [block:api-header] { "type": "basic", "title": "Properties" } [/block] The EmailField does not have any additional special properties. [block:api-header] { "type": "basic", "title": "Example typeform" } [/block] [block:image] { "images": [ { "image": [ "https://files.readme.io/BpptwRmRTRO995Js3gfd_Screen%20Shot%202015-04-08%20at%2014.54.48.png", "Screen Shot 2015-04-08 at 14.54.48.png", "784", "268", "#2e6167", "" ] } ] } [/block]
You want your users to give you their precious email? Then the `email` is just the right field for you! [block:api-header] { "type": "basic", "title": "Structure", "sidebar": true } [/block] [block:code] { "codes": [ { "code": "{\n\t\"type\": \"email\",\n \"question\": \"What is your email?\",\n \"description\": \"We will only spam you if you have green hair.\",\n \"required\": true\n}", "language": "json" } ], "sidebar": true } [/block] [block:api-header] { "type": "basic", "title": "Properties" } [/block] The EmailField does not have any additional special properties. [block:api-header] { "type": "basic", "title": "Example typeform" } [/block] [block:image] { "images": [ { "image": [ "https://files.readme.io/BpptwRmRTRO995Js3gfd_Screen%20Shot%202015-04-08%20at%2014.54.48.png", "Screen Shot 2015-04-08 at 14.54.48.png", "784", "268", "#2e6167", "" ] } ] } [/block]
{"category":"56d6cfdf2417921500c46811","project":"54f06f596210dd21004627ce","user":"54f06f1ca17a1521003180f3","version":"56d6cfdf2417921500c4680d","updates":[],"_id":"56d6cfe12417921500c46825","createdAt":"2015-03-20T14:23:43.966Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","auth":"required","params":[],"url":""},"order":29,"body":"The `website` field is for when you want to collect a URL from your respondent. It will validate that the answer contains a URL.\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Structure\",\n  \"sidebar\": true\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n\\t\\\"type\\\": \\\"website\\\",\\n  \\\"question\\\": \\\"What is your website URL?\\\",\\n  \\\"description\\\": \\\"Make sure it's valid\\\",\\n  \\\"required\\\": false\\n}\",\n      \"language\": \"json\"\n    }\n  ],\n  \"sidebar\": true\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Properties\"\n}\n[/block]\nThe WebsiteField does not have any additional special properties.\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Example typeform\"\n}\n[/block]\n\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/6fwd77W8TpyntA7A7pJr_Screen%20Shot%202015-04-08%20at%2014.56.21.png\",\n        \"Screen Shot 2015-04-08 at 14.56.21.png\",\n        \"792\",\n        \"271\",\n        \"#10b6b4\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]","excerpt":"","slug":"websitefield","type":"basic","title":"website","__v":0,"childrenPages":[]}

website


The `website` field is for when you want to collect a URL from your respondent. It will validate that the answer contains a URL. [block:api-header] { "type": "basic", "title": "Structure", "sidebar": true } [/block] [block:code] { "codes": [ { "code": "{\n\t\"type\": \"website\",\n \"question\": \"What is your website URL?\",\n \"description\": \"Make sure it's valid\",\n \"required\": false\n}", "language": "json" } ], "sidebar": true } [/block] [block:api-header] { "type": "basic", "title": "Properties" } [/block] The WebsiteField does not have any additional special properties. [block:api-header] { "type": "basic", "title": "Example typeform" } [/block] [block:image] { "images": [ { "image": [ "https://files.readme.io/6fwd77W8TpyntA7A7pJr_Screen%20Shot%202015-04-08%20at%2014.56.21.png", "Screen Shot 2015-04-08 at 14.56.21.png", "792", "271", "#10b6b4", "" ] } ] } [/block]
The `website` field is for when you want to collect a URL from your respondent. It will validate that the answer contains a URL. [block:api-header] { "type": "basic", "title": "Structure", "sidebar": true } [/block] [block:code] { "codes": [ { "code": "{\n\t\"type\": \"website\",\n \"question\": \"What is your website URL?\",\n \"description\": \"Make sure it's valid\",\n \"required\": false\n}", "language": "json" } ], "sidebar": true } [/block] [block:api-header] { "type": "basic", "title": "Properties" } [/block] The WebsiteField does not have any additional special properties. [block:api-header] { "type": "basic", "title": "Example typeform" } [/block] [block:image] { "images": [ { "image": [ "https://files.readme.io/6fwd77W8TpyntA7A7pJr_Screen%20Shot%202015-04-08%20at%2014.56.21.png", "Screen Shot 2015-04-08 at 14.56.21.png", "792", "271", "#10b6b4", "" ] } ] } [/block]
{"category":"56d6cfdf2417921500c46811","project":"54f06f596210dd21004627ce","user":"54f06f1ca17a1521003180f3","version":"56d6cfdf2417921500c4680d","updates":[],"_id":"56d6cfe12417921500c46826","createdAt":"2015-03-20T14:25:10.083Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","auth":"required","params":[],"url":""},"order":30,"body":"The `legal` field is very similar to the `yes_no` field, with some minor UI differences including a smaller body text.\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Structure\",\n  \"sidebar\": true\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"type\\\": \\\"legal\\\",\\n\\t\\\"question\\\": \\\"Please read and accept these terms & conditions\\\",\\n  \\\"description\\\": \\\"Don't do evil\\\",\\n  \\\"required\\\": true\\n}\",\n      \"language\": \"json\"\n    }\n  ],\n  \"sidebar\": true\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Properties\"\n}\n[/block]\nThe LegalField does not have any additional special properties.\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Example\"\n}\n[/block]\n\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/XVj5R80SQSSOh6H1Sa7t_Screen%20Shot%202015-04-08%20at%2014.58.50.png\",\n        \"Screen Shot 2015-04-08 at 14.58.50.png\",\n        \"593\",\n        \"227\",\n        \"#2bbbb5\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]","excerpt":"","slug":"legalfield","type":"basic","title":"legal","__v":0,"childrenPages":[]}

legal


The `legal` field is very similar to the `yes_no` field, with some minor UI differences including a smaller body text. [block:api-header] { "type": "basic", "title": "Structure", "sidebar": true } [/block] [block:code] { "codes": [ { "code": "{\n \"type\": \"legal\",\n\t\"question\": \"Please read and accept these terms & conditions\",\n \"description\": \"Don't do evil\",\n \"required\": true\n}", "language": "json" } ], "sidebar": true } [/block] [block:api-header] { "type": "basic", "title": "Properties" } [/block] The LegalField does not have any additional special properties. [block:api-header] { "type": "basic", "title": "Example" } [/block] [block:image] { "images": [ { "image": [ "https://files.readme.io/XVj5R80SQSSOh6H1Sa7t_Screen%20Shot%202015-04-08%20at%2014.58.50.png", "Screen Shot 2015-04-08 at 14.58.50.png", "593", "227", "#2bbbb5", "" ] } ] } [/block]
The `legal` field is very similar to the `yes_no` field, with some minor UI differences including a smaller body text. [block:api-header] { "type": "basic", "title": "Structure", "sidebar": true } [/block] [block:code] { "codes": [ { "code": "{\n \"type\": \"legal\",\n\t\"question\": \"Please read and accept these terms & conditions\",\n \"description\": \"Don't do evil\",\n \"required\": true\n}", "language": "json" } ], "sidebar": true } [/block] [block:api-header] { "type": "basic", "title": "Properties" } [/block] The LegalField does not have any additional special properties. [block:api-header] { "type": "basic", "title": "Example" } [/block] [block:image] { "images": [ { "image": [ "https://files.readme.io/XVj5R80SQSSOh6H1Sa7t_Screen%20Shot%202015-04-08%20at%2014.58.50.png", "Screen Shot 2015-04-08 at 14.58.50.png", "593", "227", "#2bbbb5", "" ] } ] } [/block]
{"__v":2,"_id":"56d6cfe42417921500c46838","api":{"auth":"required","params":[],"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","url":""},"body":"Typeform I/O does not store results. Instead, when a respondent completes your typeform, we send the results directly to you (i.e. your server) via **webhooks**.\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"Still in development\",\n  \"body\": \"We are exploring other options for results handling *as well as* webhooks, and it is likely we will implement storage in the future. We would love to get your feedback or suggestions on what would fit your needs best! \\n\\nYou can contact us at [support@typeform.io](mailto:support@typeform.io).\"\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Using the Webhook\"\n}\n[/block]\nWhen you create a typeform, you must specify a `webhook_submit_url` in the JSON payload of your request.\n\nWhenever someone completes your typeform and presses the submit button, the webhook fires and we make an HTTP POST request to the URL you specified, containing your results.\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"What if the Webhook Fails?\"\n}\n[/block]\nIf the webhook request fails for any reason, we will retry the request to your endpoint URL at 30 minute intervals for at least 1 full day (60 retries).\n\nWhen we hit your endpoint, we make sure the request is successful by looking at the status code in the response. If you reply a non-2XX status code, we will continue retrying. And if no successful requests have been made after 1 full day (60 retries), we will drop the response and **you will lose your data**.\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"This configuration is not final\",\n  \"body\": \"We are exploring options for handling webhook failure scenarios (e.g. an exponential backoff instead, results storage etc.). If you have any thoughts or suggestions on this topic, please let us know!\\n\\nYou can contact us at [support@typeform.io](mailto:support@typeform.io).\"\n}\n[/block]\nPlease note: We might hit your endpoint more than once (but at least once) and your endpoint should support this. You can use the `token` attribute of each response to check for uniqueness, and dismiss any duplicate responses.\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Example Result\",\n  \"sidebar\": true\n}\n[/block]\n\n[block:textarea]\n{\n  \"text\": \"\",\n  \"sidebar\": true\n}\n[/block]\n\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"uid\\\": \\\"AbCdEfGhIj\\\",\\n  \\\"token\\\": \\\"440d47cd38ed9234a45cd160649f2203\\\",\\n  \\\"answers\\\": [\\n    {\\n      \\\"field_id\\\": 1,\\n      \\\"type\\\": \\\"number\\\",\\n      \\\"value\\\": {\\n        \\\"amount\\\": 3\\n      }\\n    },\\n    {\\n      \\\"field_id\\\": 2,\\n      \\\"type\\\": \\\"text\\\",\\n      \\\"value\\\": \\\"Hi there!\\\"\\n    },\\n    {\\n      \\\"field_id\\\": 3,\\n      \\\"type\\\": \\\"rating\\\",\\n      \\\"value\\\": {\\n        \\\"amount\\\": 3,\\n        \\\"from\\\": 1,\\n        \\\"to\\\": 5\\n      }\\n    },\\n    {\\n      \\\"field_id\\\": 4,\\n      \\\"type\\\": \\\"choice\\\",\\n      \\\"value\\\": {\\n        \\\"label\\\": \\\"Selected option\\\",\\n      }\\n    }\\n  ]\\n}\\n\",\n      \"language\": \"json\"\n    }\n  ],\n  \"sidebar\": true\n}\n[/block]","category":"56d6cfdf2417921500c46812","createdAt":"2015-03-31T11:03:12.775Z","excerpt":"","githubsync":"","hidden":false,"isReference":false,"link_external":false,"link_url":"","order":31,"project":"54f06f596210dd21004627ce","slug":"results-introduction","sync_unique":"","title":"Results - Introduction","type":"basic","updates":["551abc7132be7721001aef3f"],"user":"54f06f1ca17a1521003180f3","version":"56d6cfdf2417921500c4680d","childrenPages":[]}

Results - Introduction


Typeform I/O does not store results. Instead, when a respondent completes your typeform, we send the results directly to you (i.e. your server) via **webhooks**. [block:callout] { "type": "info", "title": "Still in development", "body": "We are exploring other options for results handling *as well as* webhooks, and it is likely we will implement storage in the future. We would love to get your feedback or suggestions on what would fit your needs best! \n\nYou can contact us at [support@typeform.io](mailto:support@typeform.io)." } [/block] [block:api-header] { "type": "basic", "title": "Using the Webhook" } [/block] When you create a typeform, you must specify a `webhook_submit_url` in the JSON payload of your request. Whenever someone completes your typeform and presses the submit button, the webhook fires and we make an HTTP POST request to the URL you specified, containing your results. [block:api-header] { "type": "basic", "title": "What if the Webhook Fails?" } [/block] If the webhook request fails for any reason, we will retry the request to your endpoint URL at 30 minute intervals for at least 1 full day (60 retries). When we hit your endpoint, we make sure the request is successful by looking at the status code in the response. If you reply a non-2XX status code, we will continue retrying. And if no successful requests have been made after 1 full day (60 retries), we will drop the response and **you will lose your data**. [block:callout] { "type": "info", "title": "This configuration is not final", "body": "We are exploring options for handling webhook failure scenarios (e.g. an exponential backoff instead, results storage etc.). If you have any thoughts or suggestions on this topic, please let us know!\n\nYou can contact us at [support@typeform.io](mailto:support@typeform.io)." } [/block] Please note: We might hit your endpoint more than once (but at least once) and your endpoint should support this. You can use the `token` attribute of each response to check for uniqueness, and dismiss any duplicate responses. [block:api-header] { "type": "basic", "title": "Example Result", "sidebar": true } [/block] [block:textarea] { "text": "", "sidebar": true } [/block] [block:code] { "codes": [ { "code": "{\n \"uid\": \"AbCdEfGhIj\",\n \"token\": \"440d47cd38ed9234a45cd160649f2203\",\n \"answers\": [\n {\n \"field_id\": 1,\n \"type\": \"number\",\n \"value\": {\n \"amount\": 3\n }\n },\n {\n \"field_id\": 2,\n \"type\": \"text\",\n \"value\": \"Hi there!\"\n },\n {\n \"field_id\": 3,\n \"type\": \"rating\",\n \"value\": {\n \"amount\": 3,\n \"from\": 1,\n \"to\": 5\n }\n },\n {\n \"field_id\": 4,\n \"type\": \"choice\",\n \"value\": {\n \"label\": \"Selected option\",\n }\n }\n ]\n}\n", "language": "json" } ], "sidebar": true } [/block]
Typeform I/O does not store results. Instead, when a respondent completes your typeform, we send the results directly to you (i.e. your server) via **webhooks**. [block:callout] { "type": "info", "title": "Still in development", "body": "We are exploring other options for results handling *as well as* webhooks, and it is likely we will implement storage in the future. We would love to get your feedback or suggestions on what would fit your needs best! \n\nYou can contact us at [support@typeform.io](mailto:support@typeform.io)." } [/block] [block:api-header] { "type": "basic", "title": "Using the Webhook" } [/block] When you create a typeform, you must specify a `webhook_submit_url` in the JSON payload of your request. Whenever someone completes your typeform and presses the submit button, the webhook fires and we make an HTTP POST request to the URL you specified, containing your results. [block:api-header] { "type": "basic", "title": "What if the Webhook Fails?" } [/block] If the webhook request fails for any reason, we will retry the request to your endpoint URL at 30 minute intervals for at least 1 full day (60 retries). When we hit your endpoint, we make sure the request is successful by looking at the status code in the response. If you reply a non-2XX status code, we will continue retrying. And if no successful requests have been made after 1 full day (60 retries), we will drop the response and **you will lose your data**. [block:callout] { "type": "info", "title": "This configuration is not final", "body": "We are exploring options for handling webhook failure scenarios (e.g. an exponential backoff instead, results storage etc.). If you have any thoughts or suggestions on this topic, please let us know!\n\nYou can contact us at [support@typeform.io](mailto:support@typeform.io)." } [/block] Please note: We might hit your endpoint more than once (but at least once) and your endpoint should support this. You can use the `token` attribute of each response to check for uniqueness, and dismiss any duplicate responses. [block:api-header] { "type": "basic", "title": "Example Result", "sidebar": true } [/block] [block:textarea] { "text": "", "sidebar": true } [/block] [block:code] { "codes": [ { "code": "{\n \"uid\": \"AbCdEfGhIj\",\n \"token\": \"440d47cd38ed9234a45cd160649f2203\",\n \"answers\": [\n {\n \"field_id\": 1,\n \"type\": \"number\",\n \"value\": {\n \"amount\": 3\n }\n },\n {\n \"field_id\": 2,\n \"type\": \"text\",\n \"value\": \"Hi there!\"\n },\n {\n \"field_id\": 3,\n \"type\": \"rating\",\n \"value\": {\n \"amount\": 3,\n \"from\": 1,\n \"to\": 5\n }\n },\n {\n \"field_id\": 4,\n \"type\": \"choice\",\n \"value\": {\n \"label\": \"Selected option\",\n }\n }\n ]\n}\n", "language": "json" } ], "sidebar": true } [/block]
{"__v":2,"_id":"56d6cfe42417921500c46839","api":{"results":{"codes":[{"status":200,"language":"json","code":"{}","name":""},{"status":400,"language":"json","code":"{}","name":""}]},"settings":"","auth":"required","params":[],"url":""},"body":"When a respondent clicks the submit button on your typeform, the results are sent to the `webhook_submit_url` (see [above](http://docs.typeform.io/v0.4/docs/results-introduction)) for that form via a POST request with the following format:\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Property\",\n    \"h-1\": \"Description\",\n    \"h-2\": \"Type\",\n    \"0-0\": \"id\",\n    \"1-0\": \"token\",\n    \"2-0\": \"answers\",\n    \"0-1\": \"The ID of the typeform this response belongs to.\",\n    \"0-2\": \"string\",\n    \"1-2\": \"string\",\n    \"2-2\": \"array\",\n    \"1-1\": \"A token that uniquely identifies this response.\",\n    \"2-1\": \"An array containing the answers obtained on this response.\"\n  },\n  \"cols\": 3,\n  \"rows\": 3\n}\n[/block]\nEach element in the `answers` array, in turn, is an object with the following format:\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Property\",\n    \"h-1\": \"Description\",\n    \"h-2\": \"Type\",\n    \"0-0\": \"field_id\",\n    \"1-0\": \"type\",\n    \"0-1\": \"A unique reference to the field this answer was collected from.\",\n    \"0-2\": \"string\",\n    \"1-2\": \"string\",\n    \"1-1\": \"The question type for this field (e.g. \\\"text\\\", \\\"number\\\", etc.).\",\n    \"2-0\": \"value\",\n    \"2-1\": \"An object containing the data collected for this answer.\",\n    \"2-2\": \"object\"\n  },\n  \"cols\": 3,\n  \"rows\": 3\n}\n[/block]\nThe `type` property determines the structure of the `value`. Here are some sample elements from the `answers` array:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"field_id\\\": 180190,\\n  \\\"type\\\": \\\"number\\\",\\n  \\\"value\\\": {\\n    \\\"amount\\\": 3\\n  }\\n},\\n{\\n  \\\"field_id\\\": 180189,\\n  \\\"type\\\": \\\"choice\\\",\\n  \\\"value\\\": {\\n    \\\"label\\\": \\\"I never use it\\\",\\n    \\\"other\\\": null\\n  }\\n},\\n{\\n  \\\"field_id\\\": 180199,\\n  \\\"type\\\": \\\"choices\\\",\\n  \\\"value\\\": {\\n    \\\"labels\\\": [\\n      \\\"Trains\\\",\\n    \\t\\\"Cars\\\"\\n    ],\\n    \\\"other\\\": null\\n  }\\n},\\n{\\n  \\\"field_id\\\": 180191,\\n  \\\"type\\\": \\\"text\\\",\\n  \\\"value\\\": \\\"Yes indeed, sir\\\"\\n},\\n{\\n  \\\"field_id\\\": 180192,\\n  \\\"type\\\": \\\"boolean\\\",\\n  \\\"value\\\": false\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nEach field type (in other words, each question type) maps to a result type, like so:\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Field Type\",\n    \"h-1\": \"Result Type\",\n    \"0-0\": \"short_text\\nlong_text\\nemail\\nwebsite\",\n    \"0-1\": \"\\\"text\\\"\",\n    \"1-1\": \"\\\"number\\\"\",\n    \"2-1\": \"\\\"choice\\\" (without \\\"allow_multiple_selections\\\")\",\n    \"4-1\": \"\\\"boolean\\\"\",\n    \"1-0\": \"number\\nrating\\nopinion_scale\",\n    \"2-0\": \"multiple_choice\\npicture_choice\\ndropdown\",\n    \"4-0\": \"yes_no\\nlegal\",\n    \"3-0\": \"multiple_choice\\npicture_choice\",\n    \"3-1\": \"\\\"choices\\\" (with \\\"allow_multiple_selections\\\")\"\n  },\n  \"cols\": 2,\n  \"rows\": 5\n}\n[/block]","category":"56d6cfdf2417921500c46812","createdAt":"2015-09-02T10:24:26.282Z","excerpt":"","githubsync":"","hidden":false,"isReference":false,"link_external":false,"link_url":"","order":32,"project":"54f06f596210dd21004627ce","slug":"results-format-contents","sync_unique":"","title":"Results - Format","type":"basic","updates":["561ffc2dcfc3610d00567378","561ffec2ec2ab817009d10c1","57ac6d797ae5c60e004ba372","57d0446a0e5a0e1900df04bc"],"user":"55e03ed7186ca30d00f9b3e1","version":"56d6cfdf2417921500c4680d","childrenPages":[]}

Results - Format


When a respondent clicks the submit button on your typeform, the results are sent to the `webhook_submit_url` (see [above](http://docs.typeform.io/v0.4/docs/results-introduction)) for that form via a POST request with the following format: [block:parameters] { "data": { "h-0": "Property", "h-1": "Description", "h-2": "Type", "0-0": "id", "1-0": "token", "2-0": "answers", "0-1": "The ID of the typeform this response belongs to.", "0-2": "string", "1-2": "string", "2-2": "array", "1-1": "A token that uniquely identifies this response.", "2-1": "An array containing the answers obtained on this response." }, "cols": 3, "rows": 3 } [/block] Each element in the `answers` array, in turn, is an object with the following format: [block:parameters] { "data": { "h-0": "Property", "h-1": "Description", "h-2": "Type", "0-0": "field_id", "1-0": "type", "0-1": "A unique reference to the field this answer was collected from.", "0-2": "string", "1-2": "string", "1-1": "The question type for this field (e.g. \"text\", \"number\", etc.).", "2-0": "value", "2-1": "An object containing the data collected for this answer.", "2-2": "object" }, "cols": 3, "rows": 3 } [/block] The `type` property determines the structure of the `value`. Here are some sample elements from the `answers` array: [block:code] { "codes": [ { "code": "{\n \"field_id\": 180190,\n \"type\": \"number\",\n \"value\": {\n \"amount\": 3\n }\n},\n{\n \"field_id\": 180189,\n \"type\": \"choice\",\n \"value\": {\n \"label\": \"I never use it\",\n \"other\": null\n }\n},\n{\n \"field_id\": 180199,\n \"type\": \"choices\",\n \"value\": {\n \"labels\": [\n \"Trains\",\n \t\"Cars\"\n ],\n \"other\": null\n }\n},\n{\n \"field_id\": 180191,\n \"type\": \"text\",\n \"value\": \"Yes indeed, sir\"\n},\n{\n \"field_id\": 180192,\n \"type\": \"boolean\",\n \"value\": false\n}", "language": "json" } ] } [/block] Each field type (in other words, each question type) maps to a result type, like so: [block:parameters] { "data": { "h-0": "Field Type", "h-1": "Result Type", "0-0": "short_text\nlong_text\nemail\nwebsite", "0-1": "\"text\"", "1-1": "\"number\"", "2-1": "\"choice\" (without \"allow_multiple_selections\")", "4-1": "\"boolean\"", "1-0": "number\nrating\nopinion_scale", "2-0": "multiple_choice\npicture_choice\ndropdown", "4-0": "yes_no\nlegal", "3-0": "multiple_choice\npicture_choice", "3-1": "\"choices\" (with \"allow_multiple_selections\")" }, "cols": 2, "rows": 5 } [/block]
When a respondent clicks the submit button on your typeform, the results are sent to the `webhook_submit_url` (see [above](http://docs.typeform.io/v0.4/docs/results-introduction)) for that form via a POST request with the following format: [block:parameters] { "data": { "h-0": "Property", "h-1": "Description", "h-2": "Type", "0-0": "id", "1-0": "token", "2-0": "answers", "0-1": "The ID of the typeform this response belongs to.", "0-2": "string", "1-2": "string", "2-2": "array", "1-1": "A token that uniquely identifies this response.", "2-1": "An array containing the answers obtained on this response." }, "cols": 3, "rows": 3 } [/block] Each element in the `answers` array, in turn, is an object with the following format: [block:parameters] { "data": { "h-0": "Property", "h-1": "Description", "h-2": "Type", "0-0": "field_id", "1-0": "type", "0-1": "A unique reference to the field this answer was collected from.", "0-2": "string", "1-2": "string", "1-1": "The question type for this field (e.g. \"text\", \"number\", etc.).", "2-0": "value", "2-1": "An object containing the data collected for this answer.", "2-2": "object" }, "cols": 3, "rows": 3 } [/block] The `type` property determines the structure of the `value`. Here are some sample elements from the `answers` array: [block:code] { "codes": [ { "code": "{\n \"field_id\": 180190,\n \"type\": \"number\",\n \"value\": {\n \"amount\": 3\n }\n},\n{\n \"field_id\": 180189,\n \"type\": \"choice\",\n \"value\": {\n \"label\": \"I never use it\",\n \"other\": null\n }\n},\n{\n \"field_id\": 180199,\n \"type\": \"choices\",\n \"value\": {\n \"labels\": [\n \"Trains\",\n \t\"Cars\"\n ],\n \"other\": null\n }\n},\n{\n \"field_id\": 180191,\n \"type\": \"text\",\n \"value\": \"Yes indeed, sir\"\n},\n{\n \"field_id\": 180192,\n \"type\": \"boolean\",\n \"value\": false\n}", "language": "json" } ] } [/block] Each field type (in other words, each question type) maps to a result type, like so: [block:parameters] { "data": { "h-0": "Field Type", "h-1": "Result Type", "0-0": "short_text\nlong_text\nemail\nwebsite", "0-1": "\"text\"", "1-1": "\"number\"", "2-1": "\"choice\" (without \"allow_multiple_selections\")", "4-1": "\"boolean\"", "1-0": "number\nrating\nopinion_scale", "2-0": "multiple_choice\npicture_choice\ndropdown", "4-0": "yes_no\nlegal", "3-0": "multiple_choice\npicture_choice", "3-1": "\"choices\" (with \"allow_multiple_selections\")" }, "cols": 2, "rows": 5 } [/block]
{"category":"56d6cfdf2417921500c46813","project":"54f06f596210dd21004627ce","user":"54f06f1ca17a1521003180f3","version":"56d6cfdf2417921500c4680d","updates":["562006b718d75b1700b2529f"],"_id":"56d6cfe22417921500c46828","createdAt":"2015-08-28T10:55:15.750Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","auth":"required","params":[],"url":""},"order":33,"body":"Tagging enables you to attach identifiers to your forms and fields, which will then be sent back to you in the results / webhook request. This gives you a simple way to add any extra information you want, in order to group forms or questions together by context, for example, or to keep track of connections between similar questions across many separate typeforms.\n\nHere's an example of a JSON payload for a form which uses tagging:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"title\\\": \\\"Form with tagging\\\",\\n  \\\"tags\\\": [\\\"much-form\\\", \\\"so-tags\\\"],\\n  \\\"fields\\\": [\\n    {\\n      \\\"type\\\": \\\"yes_no\\\",\\n      \\\"question\\\": \\\"This is the best 1-question form ever, right?\\\",\\n      \\\"tags\\\": [\\\"leading-questions\\\", \\\"forgone-conclusions\\\"]\\n    }\\n  ]\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nOnce this form has been created, and a respondent presses the submit button, the webhook request would look like this:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"id\\\": \\\"aBc123\\\",\\n  \\\"tags\\\": [\\\"much-form\\\", \\\"so-tags\\\"],\\n  \\\"token\\\": \\\"5b5d6bc20b40138d72476f1301b4c716\\\",\\n  \\\"answers\\\": [\\n    {\\n      \\\"field_id\\\": \\\"123456789\\\",\\n      \\\"type\\\": \\\"boolean\\\",\\n      \\\"value\\\": true,\\n      \\\"tags\\\": [\\\"leading-questions\\\", \\\"forgone-conclusions\\\"]\\n    }\\n  ]\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\n\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"title\": \"Tag Validation\",\n  \"body\": \"The tag itself has to pass the following Regex `\\\"^[a-zA-Z0-9\\\\\\\\-_:]+$\\\"`, which basically says it has to be an alphanumeric string, including no other special characters than `-` (dash), `_` (underscore) or `:` (colon).\"\n}\n[/block]","excerpt":"","slug":"tagging-introduction","type":"basic","title":"Tagging - Introduction","__v":0,"childrenPages":[]}

Tagging - Introduction


Tagging enables you to attach identifiers to your forms and fields, which will then be sent back to you in the results / webhook request. This gives you a simple way to add any extra information you want, in order to group forms or questions together by context, for example, or to keep track of connections between similar questions across many separate typeforms. Here's an example of a JSON payload for a form which uses tagging: [block:code] { "codes": [ { "code": "{\n \"title\": \"Form with tagging\",\n \"tags\": [\"much-form\", \"so-tags\"],\n \"fields\": [\n {\n \"type\": \"yes_no\",\n \"question\": \"This is the best 1-question form ever, right?\",\n \"tags\": [\"leading-questions\", \"forgone-conclusions\"]\n }\n ]\n}", "language": "json" } ] } [/block] Once this form has been created, and a respondent presses the submit button, the webhook request would look like this: [block:code] { "codes": [ { "code": "{\n \"id\": \"aBc123\",\n \"tags\": [\"much-form\", \"so-tags\"],\n \"token\": \"5b5d6bc20b40138d72476f1301b4c716\",\n \"answers\": [\n {\n \"field_id\": \"123456789\",\n \"type\": \"boolean\",\n \"value\": true,\n \"tags\": [\"leading-questions\", \"forgone-conclusions\"]\n }\n ]\n}", "language": "json" } ] } [/block] [block:callout] { "type": "warning", "title": "Tag Validation", "body": "The tag itself has to pass the following Regex `\"^[a-zA-Z0-9\\\\-_:]+$\"`, which basically says it has to be an alphanumeric string, including no other special characters than `-` (dash), `_` (underscore) or `:` (colon)." } [/block]
Tagging enables you to attach identifiers to your forms and fields, which will then be sent back to you in the results / webhook request. This gives you a simple way to add any extra information you want, in order to group forms or questions together by context, for example, or to keep track of connections between similar questions across many separate typeforms. Here's an example of a JSON payload for a form which uses tagging: [block:code] { "codes": [ { "code": "{\n \"title\": \"Form with tagging\",\n \"tags\": [\"much-form\", \"so-tags\"],\n \"fields\": [\n {\n \"type\": \"yes_no\",\n \"question\": \"This is the best 1-question form ever, right?\",\n \"tags\": [\"leading-questions\", \"forgone-conclusions\"]\n }\n ]\n}", "language": "json" } ] } [/block] Once this form has been created, and a respondent presses the submit button, the webhook request would look like this: [block:code] { "codes": [ { "code": "{\n \"id\": \"aBc123\",\n \"tags\": [\"much-form\", \"so-tags\"],\n \"token\": \"5b5d6bc20b40138d72476f1301b4c716\",\n \"answers\": [\n {\n \"field_id\": \"123456789\",\n \"type\": \"boolean\",\n \"value\": true,\n \"tags\": [\"leading-questions\", \"forgone-conclusions\"]\n }\n ]\n}", "language": "json" } ] } [/block] [block:callout] { "type": "warning", "title": "Tag Validation", "body": "The tag itself has to pass the following Regex `\"^[a-zA-Z0-9\\\\-_:]+$\"`, which basically says it has to be an alphanumeric string, including no other special characters than `-` (dash), `_` (underscore) or `:` (colon)." } [/block]
{"category":"56d6cfdf2417921500c46814","project":"54f06f596210dd21004627ce","user":"54f47632a510f81900ac1a0d","version":"56d6cfdf2417921500c4680d","updates":["5620ea397c515c0d008eee38"],"_id":"56d6cfe12417921500c46827","createdAt":"2015-09-16T17:31:46.767Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"status":200,"language":"json","code":"{}","name":""},{"status":400,"language":"json","code":"{}","name":""}]},"settings":"","auth":"required","params":[],"url":""},"order":34,"body":"[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"What is a Logic Jump?\"\n}\n[/block]\nA Logic Jump is a way to control the flow of a typeform based on the answers your respondent gives to specific questions. In other words, depending on their answer(s), you can *jump* to a specific location in the form, skipping out various questions or statements.\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Using Logic Jumps\"\n}\n[/block]\nWhen you create a Logic Jump, you specify:\n\n1. The field which the form will jump *from* (the origin field).\n2. The field which the form will jump *to* (the destination field).\n3. The condition (on the origin field) which will trigger this jump.\n\nWhen the respondent gives their answer to the origin field, the next field is decided based on the condition(s).\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"title\": \"Current Limitations\",\n  \"body\": \"**For now, the origin field must be a** `yes_no` **field, and the logic condition on it must be a boolean.** This is a very early (MVP) implementation of logic jumps: more complex conditions will be possible in the future, based on more field types!\",\n  \"sidebar\": true\n}\n[/block]\nIn order to use Logic Jumps, the fields you jump from and to must be given a unique reference `\"ref\": \"something-unique\"`. Note: you can have several jumps point to, or from, the same reference.\n\nLogic Jumps can go forwards (skipping over fields) or backwards (rewinding to a previous field). When jumping forwards, the fields which are skipped are effectively **removed from the form's flow**. When jumping backwards, the skipped fields remain in place and the form will simply scroll upwards to the destination field.\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"title\": \"Some backwards jumps are invalid\",\n  \"body\": \"Please note: you cannot jump backwards to a field which has been skipped (and removed from the form's flow). If you send us a JSON payload for a form which attempts to do this, you will receive an error.\"\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Properties\"\n}\n[/block]\n**All properties are required**.\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Property\",\n    \"h-1\": \"Description\",\n    \"h-2\": \"Type\",\n    \"0-0\": \"from\",\n    \"0-1\": \"The reference (`ref`) of the origin field (to jump from). **For now, this must be a `yes_no` field**.\",\n    \"1-0\": \"to\",\n    \"1-1\": \"The reference (`ref`) of the destination field (to jump to).\",\n    \"2-0\": \"if\",\n    \"2-1\": \"The answer condition (on the origin field) which should trigger this jump.\",\n    \"0-2\": \"string\",\n    \"1-2\": \"string\",\n    \"2-2\": \"boolean\"\n  },\n  \"cols\": 3,\n  \"rows\": 3\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Example\"\n}\n[/block]\nHere's a sample JSON payload of a form with Logic Jumps:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"title\\\": \\\"Form with Logic Jumps\\\",\\n  \\\"fields\\\": [\\n    {\\n      \\\"type\\\": \\\"yes_no\\\",\\n      \\\"question\\\": \\\"Do you want to skip directly to the cool field?\\\",\\n      \\\"ref\\\": \\\"yesno-skip-to-cool-field\\\"\\n    },\\n    {\\n      \\\"type\\\": \\\"statement\\\",\\n      \\\"question\\\": \\\"The uncool field appreciates that you didn't skip over it.\\\"\\n    },\\n    {\\n      \\\"type\\\": \\\"statement\\\",\\n      \\\"question\\\": \\\"This field is cool.\\\",\\n      \\\"ref\\\": \\\"cool-field\\\"\\n    }\\n  ],\\n  \\\"logic_jumps\\\": [\\n    {\\n      \\\"from\\\": \\\"yesno-skip-to-cool-field\\\",\\n      \\\"to\\\": \\\"cool-field\\\",\\n      \\\"if\\\": true\\n    }\\n  ]\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\n\n[block:callout]\n{\n  \"type\": \"success\",\n  \"body\": \"The fields reference name (`\\\"ref\\\"`) has to match the regular expression `^[a-zA-Z0-9\\\\-_:]+$`, which means it has to be an alphanumeric string, not including special characters other than `-` (dash), `_` (underscore) or `:` (colon).\",\n  \"title\": \"Reference validation\"\n}\n[/block]","excerpt":"","slug":"logic-jumps","type":"basic","title":"Logic Jumps - Introduction","__v":0,"childrenPages":[]}

Logic Jumps - Introduction


[block:api-header] { "type": "basic", "title": "What is a Logic Jump?" } [/block] A Logic Jump is a way to control the flow of a typeform based on the answers your respondent gives to specific questions. In other words, depending on their answer(s), you can *jump* to a specific location in the form, skipping out various questions or statements. [block:api-header] { "type": "basic", "title": "Using Logic Jumps" } [/block] When you create a Logic Jump, you specify: 1. The field which the form will jump *from* (the origin field). 2. The field which the form will jump *to* (the destination field). 3. The condition (on the origin field) which will trigger this jump. When the respondent gives their answer to the origin field, the next field is decided based on the condition(s). [block:callout] { "type": "warning", "title": "Current Limitations", "body": "**For now, the origin field must be a** `yes_no` **field, and the logic condition on it must be a boolean.** This is a very early (MVP) implementation of logic jumps: more complex conditions will be possible in the future, based on more field types!", "sidebar": true } [/block] In order to use Logic Jumps, the fields you jump from and to must be given a unique reference `"ref": "something-unique"`. Note: you can have several jumps point to, or from, the same reference. Logic Jumps can go forwards (skipping over fields) or backwards (rewinding to a previous field). When jumping forwards, the fields which are skipped are effectively **removed from the form's flow**. When jumping backwards, the skipped fields remain in place and the form will simply scroll upwards to the destination field. [block:callout] { "type": "warning", "title": "Some backwards jumps are invalid", "body": "Please note: you cannot jump backwards to a field which has been skipped (and removed from the form's flow). If you send us a JSON payload for a form which attempts to do this, you will receive an error." } [/block] [block:api-header] { "type": "basic", "title": "Properties" } [/block] **All properties are required**. [block:parameters] { "data": { "h-0": "Property", "h-1": "Description", "h-2": "Type", "0-0": "from", "0-1": "The reference (`ref`) of the origin field (to jump from). **For now, this must be a `yes_no` field**.", "1-0": "to", "1-1": "The reference (`ref`) of the destination field (to jump to).", "2-0": "if", "2-1": "The answer condition (on the origin field) which should trigger this jump.", "0-2": "string", "1-2": "string", "2-2": "boolean" }, "cols": 3, "rows": 3 } [/block] [block:api-header] { "type": "basic", "title": "Example" } [/block] Here's a sample JSON payload of a form with Logic Jumps: [block:code] { "codes": [ { "code": "{\n \"title\": \"Form with Logic Jumps\",\n \"fields\": [\n {\n \"type\": \"yes_no\",\n \"question\": \"Do you want to skip directly to the cool field?\",\n \"ref\": \"yesno-skip-to-cool-field\"\n },\n {\n \"type\": \"statement\",\n \"question\": \"The uncool field appreciates that you didn't skip over it.\"\n },\n {\n \"type\": \"statement\",\n \"question\": \"This field is cool.\",\n \"ref\": \"cool-field\"\n }\n ],\n \"logic_jumps\": [\n {\n \"from\": \"yesno-skip-to-cool-field\",\n \"to\": \"cool-field\",\n \"if\": true\n }\n ]\n}", "language": "json" } ] } [/block] [block:callout] { "type": "success", "body": "The fields reference name (`\"ref\"`) has to match the regular expression `^[a-zA-Z0-9\\-_:]+$`, which means it has to be an alphanumeric string, not including special characters other than `-` (dash), `_` (underscore) or `:` (colon).", "title": "Reference validation" } [/block]
[block:api-header] { "type": "basic", "title": "What is a Logic Jump?" } [/block] A Logic Jump is a way to control the flow of a typeform based on the answers your respondent gives to specific questions. In other words, depending on their answer(s), you can *jump* to a specific location in the form, skipping out various questions or statements. [block:api-header] { "type": "basic", "title": "Using Logic Jumps" } [/block] When you create a Logic Jump, you specify: 1. The field which the form will jump *from* (the origin field). 2. The field which the form will jump *to* (the destination field). 3. The condition (on the origin field) which will trigger this jump. When the respondent gives their answer to the origin field, the next field is decided based on the condition(s). [block:callout] { "type": "warning", "title": "Current Limitations", "body": "**For now, the origin field must be a** `yes_no` **field, and the logic condition on it must be a boolean.** This is a very early (MVP) implementation of logic jumps: more complex conditions will be possible in the future, based on more field types!", "sidebar": true } [/block] In order to use Logic Jumps, the fields you jump from and to must be given a unique reference `"ref": "something-unique"`. Note: you can have several jumps point to, or from, the same reference. Logic Jumps can go forwards (skipping over fields) or backwards (rewinding to a previous field). When jumping forwards, the fields which are skipped are effectively **removed from the form's flow**. When jumping backwards, the skipped fields remain in place and the form will simply scroll upwards to the destination field. [block:callout] { "type": "warning", "title": "Some backwards jumps are invalid", "body": "Please note: you cannot jump backwards to a field which has been skipped (and removed from the form's flow). If you send us a JSON payload for a form which attempts to do this, you will receive an error." } [/block] [block:api-header] { "type": "basic", "title": "Properties" } [/block] **All properties are required**. [block:parameters] { "data": { "h-0": "Property", "h-1": "Description", "h-2": "Type", "0-0": "from", "0-1": "The reference (`ref`) of the origin field (to jump from). **For now, this must be a `yes_no` field**.", "1-0": "to", "1-1": "The reference (`ref`) of the destination field (to jump to).", "2-0": "if", "2-1": "The answer condition (on the origin field) which should trigger this jump.", "0-2": "string", "1-2": "string", "2-2": "boolean" }, "cols": 3, "rows": 3 } [/block] [block:api-header] { "type": "basic", "title": "Example" } [/block] Here's a sample JSON payload of a form with Logic Jumps: [block:code] { "codes": [ { "code": "{\n \"title\": \"Form with Logic Jumps\",\n \"fields\": [\n {\n \"type\": \"yes_no\",\n \"question\": \"Do you want to skip directly to the cool field?\",\n \"ref\": \"yesno-skip-to-cool-field\"\n },\n {\n \"type\": \"statement\",\n \"question\": \"The uncool field appreciates that you didn't skip over it.\"\n },\n {\n \"type\": \"statement\",\n \"question\": \"This field is cool.\",\n \"ref\": \"cool-field\"\n }\n ],\n \"logic_jumps\": [\n {\n \"from\": \"yesno-skip-to-cool-field\",\n \"to\": \"cool-field\",\n \"if\": true\n }\n ]\n}", "language": "json" } ] } [/block] [block:callout] { "type": "success", "body": "The fields reference name (`\"ref\"`) has to match the regular expression `^[a-zA-Z0-9\\-_:]+$`, which means it has to be an alphanumeric string, not including special characters other than `-` (dash), `_` (underscore) or `:` (colon).", "title": "Reference validation" } [/block]
{"category":"56d6cfdf2417921500c46815","project":"54f06f596210dd21004627ce","user":"54f441c270dd030d00c6b1ce","version":"56d6cfdf2417921500c4680d","updates":["552116cd430bc60d0019eea5"],"_id":"56d6cfe02417921500c46816","createdAt":"2015-03-31T11:12:06.864Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","auth":"required","params":[],"url":""},"order":35,"body":"Once your typeform has been created, the next thing you'll need to do is to include it in your webpage/application somehow.\n\nYou *can* simply send users to the typeform's URL (which you can find in the `_links` object), but it's also possible to embed the typeform in your own page, on your own domain.\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"title\": \"We strongly recommend you use our embed codes\",\n  \"body\": \"To guarantee that your typeform embed will work well across all devices, please make sure you use the embed codes which we provide here.\"\n}\n[/block]\nThere are two main ways of embedding typeforms in your webpage.\n\n1. Launch the typeform in a modal window. \n2. Embed the typeform as a widget, directly in your webpage/application.\n\nPlease read the [Embedding Modes documentation](doc:embedding-modes) to see exactly how to use them.\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"title\": \"Using your own embed code\",\n  \"body\": \"★ If you really don't want to use our embed code, please make sure you follow these [guidelines for custom embedding](http://helpcenter.typeform.com/hc/en-us/articles/200069248-Custom-embedding).\"\n}\n[/block]\nAdditional information: when a typeform is embedded, we automatically resize its text to adapt accordingly to smaller spaces.","excerpt":"","slug":"embedding-introduction","type":"basic","title":"Embedding - Introduction","__v":0,"childrenPages":[]}

Embedding - Introduction


Once your typeform has been created, the next thing you'll need to do is to include it in your webpage/application somehow. You *can* simply send users to the typeform's URL (which you can find in the `_links` object), but it's also possible to embed the typeform in your own page, on your own domain. [block:callout] { "type": "warning", "title": "We strongly recommend you use our embed codes", "body": "To guarantee that your typeform embed will work well across all devices, please make sure you use the embed codes which we provide here." } [/block] There are two main ways of embedding typeforms in your webpage. 1. Launch the typeform in a modal window. 2. Embed the typeform as a widget, directly in your webpage/application. Please read the [Embedding Modes documentation](doc:embedding-modes) to see exactly how to use them. [block:callout] { "type": "warning", "title": "Using your own embed code", "body": "★ If you really don't want to use our embed code, please make sure you follow these [guidelines for custom embedding](http://helpcenter.typeform.com/hc/en-us/articles/200069248-Custom-embedding)." } [/block] Additional information: when a typeform is embedded, we automatically resize its text to adapt accordingly to smaller spaces.
Once your typeform has been created, the next thing you'll need to do is to include it in your webpage/application somehow. You *can* simply send users to the typeform's URL (which you can find in the `_links` object), but it's also possible to embed the typeform in your own page, on your own domain. [block:callout] { "type": "warning", "title": "We strongly recommend you use our embed codes", "body": "To guarantee that your typeform embed will work well across all devices, please make sure you use the embed codes which we provide here." } [/block] There are two main ways of embedding typeforms in your webpage. 1. Launch the typeform in a modal window. 2. Embed the typeform as a widget, directly in your webpage/application. Please read the [Embedding Modes documentation](doc:embedding-modes) to see exactly how to use them. [block:callout] { "type": "warning", "title": "Using your own embed code", "body": "★ If you really don't want to use our embed code, please make sure you follow these [guidelines for custom embedding](http://helpcenter.typeform.com/hc/en-us/articles/200069248-Custom-embedding)." } [/block] Additional information: when a typeform is embedded, we automatically resize its text to adapt accordingly to smaller spaces.
{"category":"56d6cfdf2417921500c46815","project":"54f06f596210dd21004627ce","user":"54f06f1ca17a1521003180f3","version":"56d6cfdf2417921500c4680d","updates":[],"_id":"56d6cfe02417921500c46817","createdAt":"2015-08-31T08:24:37.795Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","auth":"required","params":[],"url":""},"order":36,"body":"There are 4 different embed modes you can use to add a typeform to your webpage: `modal`, `drawer`, `widget` and `fullscreen`.\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"body\": \"If you embed your typeform as a widget, a banner will be automatically generated on mobile devices which links to the source URL of your typeform.\\n\\nIn case of a full page embed, the banner is not generated and the browser simply redirects to the source URL.\\n\\nFor more information on this (including why!), please see this article: [Forced redirection on touch devices](http://helpcenter.typeform.com/hc/en-us/articles/200065856--Redirection-on-touch-devices-embed-).\",\n  \"title\": \"Embedding on touch devices\",\n  \"sidebar\": true\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Modal Embed\"\n}\n[/block]\nOpens your typeform in a classic modal window (occupying most of the screen), like this:\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/nr1qKsTTS6OATgFfBjAA_Screen%20Shot%202015-08-31%20at%2010.57.43.png\",\n        \"Screen Shot 2015-08-31 at 10.57.43.png\",\n        \"2162\",\n        \"1388\",\n        \"#607a97\",\n        \"\"\n      ],\n      \"caption\": \"Typeform embedded as Modal\"\n    }\n  ]\n}\n[/block]\nCode for `modal` embed:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"<a class=\\\"typeform-share link\\\" href=\\\"YOUR TYPEFORM URL HERE\\\" data-mode=\\\"1\\\" target=\\\"_blank\\\">Launch me!</a>\\n\\n<script>(function(){var qs,js,q,s,d=document,gi=d.getElementById,ce=d.createElement,gt=d.getElementsByTagName,id='typef_orm',b='https://s3-eu-west-1.amazonaws.com/share.typeform.com/';if(!gi.call(d,id)){js=ce.call(d,'script');js.id=id;js.src=b+'share.js';q=gt.call(d,'script')[0];q.parentNode.insertBefore(js,q)}})()</script>\\n\",\n      \"language\": \"html\"\n    }\n  ]\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Drawer Embed\"\n}\n[/block]\nOpens the typeform in a drawer-like container which slides in and occupies half of the screen (or more on smaller displays), like this.\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/4JziDwS7SneFqpQLXEqU_Screen%20Shot%202015-08-31%20at%2010.58.57.png\",\n        \"Screen Shot 2015-08-31 at 10.58.57.png\",\n        \"2162\",\n        \"1388\",\n        \"#607a97\",\n        \"\"\n      ],\n      \"caption\": \"Typeform embedded as Drawer\"\n    }\n  ]\n}\n[/block]\nCode for `drawer` embed:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"<a class=\\\"typeform-share link\\\" href=\\\"YOUR TYPEFORM URL HERE\\\" data-mode=\\\"2\\\" target=\\\"_blank\\\">Launch me!</a>\\n\\n<script>(function(){var qs,js,q,s,d=document,gi=d.getElementById,ce=d.createElement,gt=d.getElementsByTagName,id='typef_orm',b='https://s3-eu-west-1.amazonaws.com/share.typeform.com/';if(!gi.call(d,id)){js=ce.call(d,'script');js.id=id;js.src=b+'share.js';q=gt.call(d,'script')[0];q.parentNode.insertBefore(js,q)}})()</script>\\n\",\n      \"language\": \"html\"\n    }\n  ]\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Widget Embed\"\n}\n[/block]\nFor when you want to embed the typeform directly into your web page, in a specific place. You can resize the widget how you want, and it looks like this:\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/79riJZzESSil1tOc1vc3_Screen%20Shot%202015-08-31%20at%2011.00.11.png\",\n        \"Screen Shot 2015-08-31 at 11.00.11.png\",\n        \"2162\",\n        \"1388\",\n        \"#517d8c\",\n        \"\"\n      ],\n      \"caption\": \"Typeform embedded as Widget\"\n    }\n  ]\n}\n[/block]\nCode for `widget` embed:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"<!-- Change the width and height values to suit you best -->\\n<div class=\\\"typeform-widget\\\" data-url=\\\"YOUR TYPEFORM URL HERE\\\" data-text=\\\"All fields\\\" style=\\\"width:100%;height:500px;\\\"></div>\\n\\n<script>(function(){var qs,js,q,s,d=document,gi=d.getElementById,ce=d.createElement,gt=d.getElementsByTagName,id='typef_orm',b='https://s3-eu-west-1.amazonaws.com/share.typeform.com/';if(!gi.call(d,id)){js=ce.call(d,'script');js.id=id;js.src=b+'widget.js';q=gt.call(d,'script')[0];q.parentNode.insertBefore(js,q)}})()</script>\",\n      \"language\": \"html\"\n    }\n  ]\n}\n[/block]\n\n[block:api-header]\n{\n  \"type\": \"basic\",\n  \"title\": \"Fullscreen Embed\"\n}\n[/block]\nFor when you want your typeform to fill up the entire page, like this:\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/TwHKuqOESES8z8RPPbfz_Screen%20Shot%202015-08-31%20at%2011.01.29.png\",\n        \"Screen Shot 2015-08-31 at 11.01.29.png\",\n        \"2162\",\n        \"1388\",\n        \"#588092\",\n        \"\"\n      ],\n      \"caption\": \"Typeform embedded as Fullscreen\"\n    }\n  ]\n}\n[/block]\nCode for `fullscreen` embed:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"<!--Upload this file to your server-->\\n\\n<!DOCTYPE HTML PUBLIC \\\"-//W3C//DTD HTML 4.01 Transitional//EN\\\" \\\"http://www.w3.org/TR/html4/loose.dtd\\\">\\n<html>\\n<head>\\n\\t<!--Add the title of your typeform below-->\\n\\t<title>All fields</title>\\n\\n\\t<!--CSS styles that ensure your typeform takes up all the available screen space (DO NOT EDIT!)-->\\n<style type=\\\"text/css\\\">\\n\\t\\thtml{\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\theight: 100%;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t}\\n\\t\\tiframe{\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tleft:0;\\n\\t\\t\\tright:0;\\n\\t\\t\\tbottom:0;\\n\\t\\t\\ttop:0;\\n\\t\\t\\tborder:0;\\n\\t\\t}\\n\\t</style>\\n</head>\\n<body>\\n\\t<iframe id=\\\"typeform-full\\\" width=\\\"100%\\\" height=\\\"100%\\\" frameborder=\\\"0\\\" src=\\\"YOUR TYPEFORM URL HERE\\\"></iframe>\\n\\t<script type=\\\"text/javascript\\\" src=\\\"https://s3-eu-west-1.amazonaws.com/share.typeform.com/embed.js\\\"></script>\\n</body>\\n</html>\\n\",\n      \"language\": \"html\"\n    }\n  ]\n}\n[/block]","excerpt":"","slug":"embedding-modes","type":"basic","title":"Embedding - Modes","__v":0,"childrenPages":[]}

Embedding - Modes


There are 4 different embed modes you can use to add a typeform to your webpage: `modal`, `drawer`, `widget` and `fullscreen`. [block:callout] { "type": "warning", "body": "If you embed your typeform as a widget, a banner will be automatically generated on mobile devices which links to the source URL of your typeform.\n\nIn case of a full page embed, the banner is not generated and the browser simply redirects to the source URL.\n\nFor more information on this (including why!), please see this article: [Forced redirection on touch devices](http://helpcenter.typeform.com/hc/en-us/articles/200065856--Redirection-on-touch-devices-embed-).", "title": "Embedding on touch devices", "sidebar": true } [/block] [block:api-header] { "type": "basic", "title": "Modal Embed" } [/block] Opens your typeform in a classic modal window (occupying most of the screen), like this: [block:image] { "images": [ { "image": [ "https://files.readme.io/nr1qKsTTS6OATgFfBjAA_Screen%20Shot%202015-08-31%20at%2010.57.43.png", "Screen Shot 2015-08-31 at 10.57.43.png", "2162", "1388", "#607a97", "" ], "caption": "Typeform embedded as Modal" } ] } [/block] Code for `modal` embed: [block:code] { "codes": [ { "code": "<a class=\"typeform-share link\" href=\"YOUR TYPEFORM URL HERE\" data-mode=\"1\" target=\"_blank\">Launch me!</a>\n\n<script>(function(){var qs,js,q,s,d=document,gi=d.getElementById,ce=d.createElement,gt=d.getElementsByTagName,id='typef_orm',b='https://s3-eu-west-1.amazonaws.com/share.typeform.com/';if(!gi.call(d,id)){js=ce.call(d,'script');js.id=id;js.src=b+'share.js';q=gt.call(d,'script')[0];q.parentNode.insertBefore(js,q)}})()</script>\n", "language": "html" } ] } [/block] [block:api-header] { "type": "basic", "title": "Drawer Embed" } [/block] Opens the typeform in a drawer-like container which slides in and occupies half of the screen (or more on smaller displays), like this. [block:image] { "images": [ { "image": [ "https://files.readme.io/4JziDwS7SneFqpQLXEqU_Screen%20Shot%202015-08-31%20at%2010.58.57.png", "Screen Shot 2015-08-31 at 10.58.57.png", "2162", "1388", "#607a97", "" ], "caption": "Typeform embedded as Drawer" } ] } [/block] Code for `drawer` embed: [block:code] { "codes": [ { "code": "<a class=\"typeform-share link\" href=\"YOUR TYPEFORM URL HERE\" data-mode=\"2\" target=\"_blank\">Launch me!</a>\n\n<script>(function(){var qs,js,q,s,d=document,gi=d.getElementById,ce=d.createElement,gt=d.getElementsByTagName,id='typef_orm',b='https://s3-eu-west-1.amazonaws.com/share.typeform.com/';if(!gi.call(d,id)){js=ce.call(d,'script');js.id=id;js.src=b+'share.js';q=gt.call(d,'script')[0];q.parentNode.insertBefore(js,q)}})()</script>\n", "language": "html" } ] } [/block] [block:api-header] { "type": "basic", "title": "Widget Embed" } [/block] For when you want to embed the typeform directly into your web page, in a specific place. You can resize the widget how you want, and it looks like this: [block:image] { "images": [ { "image": [ "https://files.readme.io/79riJZzESSil1tOc1vc3_Screen%20Shot%202015-08-31%20at%2011.00.11.png", "Screen Shot 2015-08-31 at 11.00.11.png", "2162", "1388", "#517d8c", "" ], "caption": "Typeform embedded as Widget" } ] } [/block] Code for `widget` embed: [block:code] { "codes": [ { "code": "<!-- Change the width and height values to suit you best -->\n<div class=\"typeform-widget\" data-url=\"YOUR TYPEFORM URL HERE\" data-text=\"All fields\" style=\"width:100%;height:500px;\"></div>\n\n<script>(function(){var qs,js,q,s,d=document,gi=d.getElementById,ce=d.createElement,gt=d.getElementsByTagName,id='typef_orm',b='https://s3-eu-west-1.amazonaws.com/share.typeform.com/';if(!gi.call(d,id)){js=ce.call(d,'script');js.id=id;js.src=b+'widget.js';q=gt.call(d,'script')[0];q.parentNode.insertBefore(js,q)}})()</script>", "language": "html" } ] } [/block] [block:api-header] { "type": "basic", "title": "Fullscreen Embed" } [/block] For when you want your typeform to fill up the entire page, like this: [block:image] { "images": [ { "image": [ "https://files.readme.io/TwHKuqOESES8z8RPPbfz_Screen%20Shot%202015-08-31%20at%2011.01.29.png", "Screen Shot 2015-08-31 at 11.01.29.png", "2162", "1388", "#588092", "" ], "caption": "Typeform embedded as Fullscreen" } ] } [/block] Code for `fullscreen` embed: [block:code] { "codes": [ { "code": "<!--Upload this file to your server-->\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<head>\n\t<!--Add the title of your typeform below-->\n\t<title>All fields</title>\n\n\t<!--CSS styles that ensure your typeform takes up all the available screen space (DO NOT EDIT!)-->\n<style type=\"text/css\">\n\t\thtml{\n\t\t\tmargin: 0;\n\t\t\theight: 100%;\n\t\t\toverflow: hidden;\n\t\t}\n\t\tiframe{\n\t\t\tposition: absolute;\n\t\t\tleft:0;\n\t\t\tright:0;\n\t\t\tbottom:0;\n\t\t\ttop:0;\n\t\t\tborder:0;\n\t\t}\n\t</style>\n</head>\n<body>\n\t<iframe id=\"typeform-full\" width=\"100%\" height=\"100%\" frameborder=\"0\" src=\"YOUR TYPEFORM URL HERE\"></iframe>\n\t<script type=\"text/javascript\" src=\"https://s3-eu-west-1.amazonaws.com/share.typeform.com/embed.js\"></script>\n</body>\n</html>\n", "language": "html" } ] } [/block]
There are 4 different embed modes you can use to add a typeform to your webpage: `modal`, `drawer`, `widget` and `fullscreen`. [block:callout] { "type": "warning", "body": "If you embed your typeform as a widget, a banner will be automatically generated on mobile devices which links to the source URL of your typeform.\n\nIn case of a full page embed, the banner is not generated and the browser simply redirects to the source URL.\n\nFor more information on this (including why!), please see this article: [Forced redirection on touch devices](http://helpcenter.typeform.com/hc/en-us/articles/200065856--Redirection-on-touch-devices-embed-).", "title": "Embedding on touch devices", "sidebar": true } [/block] [block:api-header] { "type": "basic", "title": "Modal Embed" } [/block] Opens your typeform in a classic modal window (occupying most of the screen), like this: [block:image] { "images": [ { "image": [ "https://files.readme.io/nr1qKsTTS6OATgFfBjAA_Screen%20Shot%202015-08-31%20at%2010.57.43.png", "Screen Shot 2015-08-31 at 10.57.43.png", "2162", "1388", "#607a97", "" ], "caption": "Typeform embedded as Modal" } ] } [/block] Code for `modal` embed: [block:code] { "codes": [ { "code": "<a class=\"typeform-share link\" href=\"YOUR TYPEFORM URL HERE\" data-mode=\"1\" target=\"_blank\">Launch me!</a>\n\n<script>(function(){var qs,js,q,s,d=document,gi=d.getElementById,ce=d.createElement,gt=d.getElementsByTagName,id='typef_orm',b='https://s3-eu-west-1.amazonaws.com/share.typeform.com/';if(!gi.call(d,id)){js=ce.call(d,'script');js.id=id;js.src=b+'share.js';q=gt.call(d,'script')[0];q.parentNode.insertBefore(js,q)}})()</script>\n", "language": "html" } ] } [/block] [block:api-header] { "type": "basic", "title": "Drawer Embed" } [/block] Opens the typeform in a drawer-like container which slides in and occupies half of the screen (or more on smaller displays), like this. [block:image] { "images": [ { "image": [ "https://files.readme.io/4JziDwS7SneFqpQLXEqU_Screen%20Shot%202015-08-31%20at%2010.58.57.png", "Screen Shot 2015-08-31 at 10.58.57.png", "2162", "1388", "#607a97", "" ], "caption": "Typeform embedded as Drawer" } ] } [/block] Code for `drawer` embed: [block:code] { "codes": [ { "code": "<a class=\"typeform-share link\" href=\"YOUR TYPEFORM URL HERE\" data-mode=\"2\" target=\"_blank\">Launch me!</a>\n\n<script>(function(){var qs,js,q,s,d=document,gi=d.getElementById,ce=d.createElement,gt=d.getElementsByTagName,id='typef_orm',b='https://s3-eu-west-1.amazonaws.com/share.typeform.com/';if(!gi.call(d,id)){js=ce.call(d,'script');js.id=id;js.src=b+'share.js';q=gt.call(d,'script')[0];q.parentNode.insertBefore(js,q)}})()</script>\n", "language": "html" } ] } [/block] [block:api-header] { "type": "basic", "title": "Widget Embed" } [/block] For when you want to embed the typeform directly into your web page, in a specific place. You can resize the widget how you want, and it looks like this: [block:image] { "images": [ { "image": [ "https://files.readme.io/79riJZzESSil1tOc1vc3_Screen%20Shot%202015-08-31%20at%2011.00.11.png", "Screen Shot 2015-08-31 at 11.00.11.png", "2162", "1388", "#517d8c", "" ], "caption": "Typeform embedded as Widget" } ] } [/block] Code for `widget` embed: [block:code] { "codes": [ { "code": "<!-- Change the width and height values to suit you best -->\n<div class=\"typeform-widget\" data-url=\"YOUR TYPEFORM URL HERE\" data-text=\"All fields\" style=\"width:100%;height:500px;\"></div>\n\n<script>(function(){var qs,js,q,s,d=document,gi=d.getElementById,ce=d.createElement,gt=d.getElementsByTagName,id='typef_orm',b='https://s3-eu-west-1.amazonaws.com/share.typeform.com/';if(!gi.call(d,id)){js=ce.call(d,'script');js.id=id;js.src=b+'widget.js';q=gt.call(d,'script')[0];q.parentNode.insertBefore(js,q)}})()</script>", "language": "html" } ] } [/block] [block:api-header] { "type": "basic", "title": "Fullscreen Embed" } [/block] For when you want your typeform to fill up the entire page, like this: [block:image] { "images": [ { "image": [ "https://files.readme.io/TwHKuqOESES8z8RPPbfz_Screen%20Shot%202015-08-31%20at%2011.01.29.png", "Screen Shot 2015-08-31 at 11.01.29.png", "2162", "1388", "#588092", "" ], "caption": "Typeform embedded as Fullscreen" } ] } [/block] Code for `fullscreen` embed: [block:code] { "codes": [ { "code": "<!--Upload this file to your server-->\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n<head>\n\t<!--Add the title of your typeform below-->\n\t<title>All fields</title>\n\n\t<!--CSS styles that ensure your typeform takes up all the available screen space (DO NOT EDIT!)-->\n<style type=\"text/css\">\n\t\thtml{\n\t\t\tmargin: 0;\n\t\t\theight: 100%;\n\t\t\toverflow: hidden;\n\t\t}\n\t\tiframe{\n\t\t\tposition: absolute;\n\t\t\tleft:0;\n\t\t\tright:0;\n\t\t\tbottom:0;\n\t\t\ttop:0;\n\t\t\tborder:0;\n\t\t}\n\t</style>\n</head>\n<body>\n\t<iframe id=\"typeform-full\" width=\"100%\" height=\"100%\" frameborder=\"0\" src=\"YOUR TYPEFORM URL HERE\"></iframe>\n\t<script type=\"text/javascript\" src=\"https://s3-eu-west-1.amazonaws.com/share.typeform.com/embed.js\"></script>\n</body>\n</html>\n", "language": "html" } ] } [/block]
{"category":"56d6cfdf2417921500c46815","project":"54f06f596210dd21004627ce","user":"54f06f1ca17a1521003180f3","version":"56d6cfdf2417921500c4680d","updates":[],"_id":"56d6cfe02417921500c46818","createdAt":"2015-08-31T08:37:53.021Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","auth":"required","params":[],"url":""},"order":37,"body":"There is currently one `form-submit` event that is sent to the parent frame (if there is one) when the respondent finishes your typeform and presses the \"Submit\" button. The event is only sent if it's a successful submit. It's not sent when the user have validation errors in the form or the network connection dies while filling out the form.\n\nWhen you have a typeform embedded on your webpage, it will send the `form-submit` to your `window` object when a form is submitted. Take a look at the `.originalEvent.data` property of the event, where the type of the event is declared.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"$(document).ready(function() {\\n  $(window).on('message', function(ev) {\\n    if(ev.originalEvent.data === \\\"form-submit\\\") {\\n      console.log('Form was submitted now!');\\n    }\\n  });\\n});\",\n      \"language\": \"javascript\"\n    }\n  ]\n}\n[/block]\nTo see a demo of how this can help you build you application, please take a look at the following application: http://typeformio.github.io/form-submit-demo/\n\nThe source to this demo can be found here: https://github.com/TypeformIO/form-submit-demo","excerpt":"","slug":"events","type":"basic","title":"Embedding - Events","__v":0,"childrenPages":[]}

Embedding - Events


There is currently one `form-submit` event that is sent to the parent frame (if there is one) when the respondent finishes your typeform and presses the "Submit" button. The event is only sent if it's a successful submit. It's not sent when the user have validation errors in the form or the network connection dies while filling out the form. When you have a typeform embedded on your webpage, it will send the `form-submit` to your `window` object when a form is submitted. Take a look at the `.originalEvent.data` property of the event, where the type of the event is declared. [block:code] { "codes": [ { "code": "$(document).ready(function() {\n $(window).on('message', function(ev) {\n if(ev.originalEvent.data === \"form-submit\") {\n console.log('Form was submitted now!');\n }\n });\n});", "language": "javascript" } ] } [/block] To see a demo of how this can help you build you application, please take a look at the following application: http://typeformio.github.io/form-submit-demo/ The source to this demo can be found here: https://github.com/TypeformIO/form-submit-demo
There is currently one `form-submit` event that is sent to the parent frame (if there is one) when the respondent finishes your typeform and presses the "Submit" button. The event is only sent if it's a successful submit. It's not sent when the user have validation errors in the form or the network connection dies while filling out the form. When you have a typeform embedded on your webpage, it will send the `form-submit` to your `window` object when a form is submitted. Take a look at the `.originalEvent.data` property of the event, where the type of the event is declared. [block:code] { "codes": [ { "code": "$(document).ready(function() {\n $(window).on('message', function(ev) {\n if(ev.originalEvent.data === \"form-submit\") {\n console.log('Form was submitted now!');\n }\n });\n});", "language": "javascript" } ] } [/block] To see a demo of how this can help you build you application, please take a look at the following application: http://typeformio.github.io/form-submit-demo/ The source to this demo can be found here: https://github.com/TypeformIO/form-submit-demo
{"__v":1,"_id":"56d6d00d04712c0b0061978f","api":{"auth":"required","params":[],"results":{"codes":[{"status":200,"language":"json","code":"{}","name":""},{"status":400,"language":"json","code":"{}","name":""}]},"settings":"","url":""},"body":"Piping is a feature that makes it easy to take your respondent's answers and include them in the text of other questions.\n\nYou can use piping to:\n\n - Personalise your typeform as a respondent answers\n - Ask respondents to confirm information before submitting\n - Merge answers from multiple questions into a statement\n\nHere's an example of a JSON payload for a form which uses piping:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"title\\\": \\\"Form with piping\\\",\\n  \\\"fields\\\": [\\n    {\\n      \\\"type\\\": \\\"short_text\\\",\\n      \\\"question\\\": \\\"What is your favorite pipes store?\\\",\\n      \\\"ref\\\": \\\"to_pipe\\\"\\n    },\\n    {\\n      \\\"type\\\": \\\"short_text\\\",\\n      \\\"question\\\": \\\"So {{to_pipe}} is your favorite store, why?\\\"\\n    }\\n  ]\\n}\",\n      \"language\": \"json\"\n    }\n  ]\n}\n[/block]\nOnce this form has been created, and a respondent fills the referenced question, its answer will appear in the place where the pipe is:\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/h4DrRiyT3mGa4h8IzreE_Captura%20de%20pantalla%202016-01-26%20a%20las%2010.26.10.png\",\n        \"Captura de pantalla 2016-01-26 a las 10.26.10.png\",\n        \"510\",\n        \"391\",\n        \"#71aead\",\n        \"\"\n      ]\n    }\n  ]\n}\n[/block]\n\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"title\": \"Pipes Validation\",\n  \"body\": \"When using Piping in a question, we automatically hide that question until an answer is provided to the pipe emitter question. The emitter question can not be a statement type field and must be answered in order for the typeform to materialize the question where piping is used, otherwise the typeform will end prematurely. Please make sure the piping emitter question will be answered by:\\n\\n- making it a Required question,\\n- not asking your respondents to skip it,\\n- and not offering a possibility for it to be skipped when creating your Logic Jumps.\"\n}\n[/block]","category":"56d6d0002417921500c4683c","createdAt":"2016-03-02T11:35:41.651Z","excerpt":"","githubsync":"","hidden":false,"link_external":false,"link_url":"","order":999,"project":"54f06f596210dd21004627ce","slug":"piping-introduction","sync_unique":"","title":"Piping - Introduction","type":"basic","updates":[],"user":"566e9498e61c1917005aa118","version":"56d6cfdf2417921500c4680d","childrenPages":[]}

Piping - Introduction


Piping is a feature that makes it easy to take your respondent's answers and include them in the text of other questions. You can use piping to: - Personalise your typeform as a respondent answers - Ask respondents to confirm information before submitting - Merge answers from multiple questions into a statement Here's an example of a JSON payload for a form which uses piping: [block:code] { "codes": [ { "code": "{\n \"title\": \"Form with piping\",\n \"fields\": [\n {\n \"type\": \"short_text\",\n \"question\": \"What is your favorite pipes store?\",\n \"ref\": \"to_pipe\"\n },\n {\n \"type\": \"short_text\",\n \"question\": \"So {{to_pipe}} is your favorite store, why?\"\n }\n ]\n}", "language": "json" } ] } [/block] Once this form has been created, and a respondent fills the referenced question, its answer will appear in the place where the pipe is: [block:image] { "images": [ { "image": [ "https://files.readme.io/h4DrRiyT3mGa4h8IzreE_Captura%20de%20pantalla%202016-01-26%20a%20las%2010.26.10.png", "Captura de pantalla 2016-01-26 a las 10.26.10.png", "510", "391", "#71aead", "" ] } ] } [/block] [block:callout] { "type": "warning", "title": "Pipes Validation", "body": "When using Piping in a question, we automatically hide that question until an answer is provided to the pipe emitter question. The emitter question can not be a statement type field and must be answered in order for the typeform to materialize the question where piping is used, otherwise the typeform will end prematurely. Please make sure the piping emitter question will be answered by:\n\n- making it a Required question,\n- not asking your respondents to skip it,\n- and not offering a possibility for it to be skipped when creating your Logic Jumps." } [/block]
Piping is a feature that makes it easy to take your respondent's answers and include them in the text of other questions. You can use piping to: - Personalise your typeform as a respondent answers - Ask respondents to confirm information before submitting - Merge answers from multiple questions into a statement Here's an example of a JSON payload for a form which uses piping: [block:code] { "codes": [ { "code": "{\n \"title\": \"Form with piping\",\n \"fields\": [\n {\n \"type\": \"short_text\",\n \"question\": \"What is your favorite pipes store?\",\n \"ref\": \"to_pipe\"\n },\n {\n \"type\": \"short_text\",\n \"question\": \"So {{to_pipe}} is your favorite store, why?\"\n }\n ]\n}", "language": "json" } ] } [/block] Once this form has been created, and a respondent fills the referenced question, its answer will appear in the place where the pipe is: [block:image] { "images": [ { "image": [ "https://files.readme.io/h4DrRiyT3mGa4h8IzreE_Captura%20de%20pantalla%202016-01-26%20a%20las%2010.26.10.png", "Captura de pantalla 2016-01-26 a las 10.26.10.png", "510", "391", "#71aead", "" ] } ] } [/block] [block:callout] { "type": "warning", "title": "Pipes Validation", "body": "When using Piping in a question, we automatically hide that question until an answer is provided to the pipe emitter question. The emitter question can not be a statement type field and must be answered in order for the typeform to materialize the question where piping is used, otherwise the typeform will end prematurely. Please make sure the piping emitter question will be answered by:\n\n- making it a Required question,\n- not asking your respondents to skip it,\n- and not offering a possibility for it to be skipped when creating your Logic Jumps." } [/block]