Setu Recipes: reusable workflows across every app.Browse templates

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

TypeScript
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

ScopeWhy it is requested
offlineStay connected without asking you to sign in again
accounts:readIdentify the connected Typeform account
forms:readRead your forms and their questions
forms:writeCreate, rename and delete forms
responses:readRead the answers people submitted
responses:writeDelete submitted responses
workspaces:readList 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

InputTypeDescription
titlestringRequiredForm title
fieldsarray of objectOptionalFields: [{"title": "Your name?", "type": "short_text"}]
TypeScript
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

InputTypeDescription
form_idstringRequiredForm ID
TypeScript
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

InputTypeDescription
form_idstringRequiredForm ID
response_idsarray of stringRequiredResponse IDs (the response_id of each response)
TypeScript
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

InputTypeDescription
form_idstringRequiredForm ID, e.g. u6nXL7 from the form URL
TypeScript
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

InputTypeDescription
searchstringOptionalOnly forms whose title contains this text
workspace_idstringOptionalOnly forms in this workspace
pageintegerOptionalPage number, starting at 1
page_sizeintegerOptionalForms per page, 1 to 200 (default 10)
TypeScript
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

InputTypeDescription
form_idstringRequiredForm ID
page_sizeintegerOptionalResponses to return (default 25, maximum 1000)
sincestringOptionalOnly responses submitted at or after this time, ISO 8601 e.g. 2020-03-20T14:00:59
untilstringOptionalOnly responses submitted at or before this time, ISO 8601
afterstringOptionalReturn responses after this response token (for paging)
response_typestringOptionalcompleted, partial or started (comma separated)
querystringOptionalExact phrase to search in answers
TypeScript
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

InputTypeDescription
searchstringOptionalOnly workspaces whose name contains this text
pageintegerOptionalPage number, starting at 1
page_sizeintegerOptionalWorkspaces per page (default 10, maximum 200)
TypeScript
await setu.execute({
  userId: "user_1",
  action: "typeform.list_workspaces",
  input: {},
});
Rename formwritetypeform.rename_formChange a form's title.

Needs scope: forms:write

InputTypeDescription
form_idstringRequiredForm ID
titlestringRequiredNew title
TypeScript
await setu.execute({
  userId: "user_1",
  action: "typeform.rename_form",
  input: {
    "form_id": "<form_id>",
    "title": "<title>"
  },
});