Integrations / Typeform
Typeform
Forms and surveys: list and create forms, read responses, manage workspaces.
8 actions
OAuth 2
4 read2 write2 destructive
Calls api.typeform.com
Connect
const conn = await setu.connections.initiate({ userId: "user_1", toolkit: "typeform" });
console.log(conn.connectUrl); // show this to your user
await conn.waitUntilActive();Permissions requested
| Scope | Why it is requested |
|---|---|
offline | Stay connected without asking you to sign in again |
accounts:read | Identify the connected Typeform account |
forms:read | Read your forms and their questions |
forms:write | Create, rename and delete forms |
responses:read | Read the answers people submitted |
responses:write | Delete submitted responses |
workspaces:read | List your workspaces |
Actions
Create formwritetypeform.create_formCreate a form with a title and optionally its fields (questions). Each field needs a title and a type such as short_text, long_text, multiple_choice, yes_no, rating, email or number.
Needs scope: forms:write
| Input | Type | Description | |
|---|---|---|---|
title | string | Required | Form title |
fields | array of object | Optional | Fields: [{"title": "Your name?", "type": "short_text"}] |
await setu.execute({
userId: "user_1",
action: "typeform.create_form",
input: {
"title": "<title>"
},
});Delete formdestructivetypeform.delete_formDelete a form and all of its responses. This cannot be undone.
Needs scope: forms:write
| Input | Type | Description | |
|---|---|---|---|
form_id | string | Required | Form ID |
await setu.execute({
userId: "user_1",
action: "typeform.delete_form",
input: {
"form_id": "<form_id>"
},
confirm: true,
});Delete responsesdestructivetypeform.delete_responsesDelete specific submitted responses from a form by response ID (up to 1000). Typeform processes the deletion shortly after accepting the request.
Needs scope: responses:write
| Input | Type | Description | |
|---|---|---|---|
form_id | string | Required | Form ID |
response_ids | array of string | Required | Response IDs (the response_id of each response) |
await setu.execute({
userId: "user_1",
action: "typeform.delete_responses",
input: {
"form_id": "<form_id>",
"response_ids": []
},
confirm: true,
});Get formreadtypeform.get_formGet a form's title, settings and fields (questions with their IDs and types).
Needs scope: forms:read
| Input | Type | Description | |
|---|---|---|---|
form_id | string | Required | Form ID, e.g. u6nXL7 from the form URL |
await setu.execute({
userId: "user_1",
action: "typeform.get_form",
input: {
"form_id": "<form_id>"
},
});List formsreadtypeform.list_formsList the forms in the user's Typeform account with their IDs, titles and links, optionally filtered by text or workspace.
Needs scope: forms:read
| Input | Type | Description | |
|---|---|---|---|
search | string | Optional | Only forms whose title contains this text |
workspace_id | string | Optional | Only forms in this workspace |
page | integer | Optional | Page number, starting at 1 |
page_size | integer | Optional | Forms per page, 1 to 200 (default 10) |
await setu.execute({
userId: "user_1",
action: "typeform.list_forms",
input: {},
});List form responsesreadtypeform.list_responsesGet the submitted responses to a form, newest first, with answers per question. Use since/until (ISO 8601) or after (a response token) to page; very recent responses may lag by up to 30 minutes.
Needs scope: responses:read
| Input | Type | Description | |
|---|---|---|---|
form_id | string | Required | Form ID |
page_size | integer | Optional | Responses to return (default 25, maximum 1000) |
since | string | Optional | Only responses submitted at or after this time, ISO 8601 e.g. 2020-03-20T14:00:59 |
until | string | Optional | Only responses submitted at or before this time, ISO 8601 |
after | string | Optional | Return responses after this response token (for paging) |
response_type | string | Optional | completed, partial or started (comma separated) |
query | string | Optional | Exact phrase to search in answers |
await setu.execute({
userId: "user_1",
action: "typeform.list_responses",
input: {
"form_id": "<form_id>"
},
});List workspacesreadtypeform.list_workspacesList the workspaces the user can access with their IDs, names and form counts. Workspace IDs can filter list_forms.
Needs scope: workspaces:read
| Input | Type | Description | |
|---|---|---|---|
search | string | Optional | Only workspaces whose name contains this text |
page | integer | Optional | Page number, starting at 1 |
page_size | integer | Optional | Workspaces per page (default 10, maximum 200) |
await setu.execute({
userId: "user_1",
action: "typeform.list_workspaces",
input: {},
});Rename formwritetypeform.rename_formChange a form's title.
Needs scope: forms:write
| Input | Type | Description | |
|---|---|---|---|
form_id | string | Required | Form ID |
title | string | Required | New title |
await setu.execute({
userId: "user_1",
action: "typeform.rename_form",
input: {
"form_id": "<form_id>",
"title": "<title>"
},
});