The Fillout connector lets your AI agent act in each user's Fillout account. Each user connects their own Fillout access token once, and Scalekit sends it with every call, so your agent never handles credentials. It comes with 6 tools.
- Tools
- 6
- What they doRead · write · destructive
- 4 · 1 · 14 read1 write1 destructive
- Users sign in with
- Access token
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret>Create the Fillout connection
In AgentKit > Connections, create a Fillout connection. The name you give it is the
connection_nameyour code passes. See Configure connections.Authorize a user and make your first call
quickstart.mts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'import { createInterface } from 'node:readline/promises'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENVIRONMENT_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'fillout'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Fillout:', link)const rl = createInterface({ input: process.stdin, output: process.stdout })await rl.question('Press Enter after authorizing...')rl.close()// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'fillout_forms_list',toolInput: {},})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "fillout"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Fillout:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="fillout_forms_list",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user opens the link once and enters their Fillout credentials there. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_toolfillout_form_getGet one Fillout form's metadata by its public ID.Read-onlyGet Form
Get one Fillout form's metadata by its public ID. Returns id, name and questions (each with id, name and type), plus calculations, URL parameters, scheduling fields, payment fields and quiz settings when the form uses them. Use fillout_form_get to learn a form's question IDs before reading or creating submissions. Use fillout_forms_list to find the form ID.
Inputs
form_idstringrequired- Public ID of the form, as returned in formId by fillout_forms_list. Example: "foAdHjd1Duus".
fillout_forms_listList every form in the connected Fillout account.Read-onlyList Forms
List every form in the connected Fillout account. Returns an array of forms, each with its formId (public ID) and name. Use fillout_forms_list to find a form ID. Use fillout_form_get for a form's questions and other metadata.
Inputs
This tool takes no inputs.
fillout_submission_getGet one submission of a Fillout form by its submission ID.Read-onlyGet Submission
Get one submission of a Fillout form by its submission ID. Returns submission with submissionId, submissionTime, lastUpdatedAt and question answers, plus calculations, URL parameters, scheduling, payments, quiz and login data when present. Use fillout_submission_get when you have the submission ID. Use fillout_submissions_list to browse or search a form's submissions.
Inputs
form_idstringrequired- Public ID of the form the submission belongs to, as returned in formId by fillout_forms_list. Example: "foAdHjd1Duus".
submission_idstringrequired- ID of the submission, as returned in submissionId by fillout_submissions_list. Example: "abc123-def456".
include_edit_linkboolean- Set to true to add an editLink to the submission, a URL where it can be edited.
fillout_submissions_listList submissions for one Fillout form, with optional date range, status, text search, sort order and offset pagination.Read-onlyList Submissions
List submissions for one Fillout form, with optional date range, status, text search, sort order and offset pagination. Returns responses (each with submissionId, submissionTime, lastUpdatedAt and question answers, plus calculations, URL parameters, scheduling, payments, quiz and login data when present), totalResponses and pageCount. Use fillout_submissions_list to browse or search a form's submissions. Use fillout_submission_get when you already have a submission ID. Get the form ID from fillout_forms_list first.
Inputs
form_idstringrequired- Public ID of the form whose submissions to list, as returned in formId by fillout_forms_list. Example: "foAdHjd1Duus".
after_datestring- Only return submissions submitted after this ISO 8601 date-time. Example: "2024-05-01T00:00:00.000Z".
before_datestring- Only return submissions submitted before this ISO 8601 date-time. Example: "2024-06-01T00:00:00.000Z".
include_edit_linkboolean- Set to true to add an editLink to each submission, a URL where the submission can be edited.
include_previewboolean- Set to true to also return preview submissions, which were made while previewing the form in the Fillout editor.
limitinteger- Maximum number of submissions to return in this page, from 1 to 150. Fillout uses 50 when omitted. Example: 100.
offsetinteger- Zero-based position to start from, for paging through results. Fillout uses 0 when omitted. To get the next page, add the limit to the previous offset (for example offset 50 with limit 50 gives the second page); pageCount in the response tells you how many pages exist.
searchstring- Only return submissions whose answers contain this text. Example: "jane@example.com".
sortstring- Sort order by submission time: "asc" (oldest first) or "desc" (newest first). Fillout uses "asc" when omitted.one of
ascdesc statusstring- Which submissions to return: "finished" (completed submissions) or "in_progress" (started but not yet submitted). Fillout returns only finished submissions when omitted.one of
finishedin_progress
fillout_submissions_createAdd up to 10 new submissions to a Fillout form in one call, as if respondents had filled it in.WriteCreate Submissions
Add up to 10 new submissions to a Fillout form in one call, as if respondents had filled it in. Returns submissions, the created submissions with their new submissionId, submissionTime and answers. Use fillout_submissions_create to import or record responses. Use fillout_submissions_list to read existing ones. Call fillout_form_get first to get the form's question IDs.
Inputs
form_idstringrequired- Public ID of the form to add submissions to, as returned in formId by fillout_forms_list. Example: "foAdHjd1Duus".
submissionsarrayrequired- The submissions to create, from 1 to 10. Each submission needs a questions list that pairs a question ID (from fillout_form_get) with the answer value for that question. Each one can also carry URL parameter values (id, name, value), a submissionTime and lastUpdatedAt as ISO 8601 date-times, scheduling and payment answers, and a login object with the respondent's verified email. Example: [{"questions": [{"id": "5mJ9", "value": "Jane Doe"}, {"id": "kPq2", "value": "jane@example.com"}], "urlParameters": [{"id": "utm_source", "name": "utm_source", "value": "newsletter"}], "submissionTime": "2024-05-01T12:00:00.000Z"}].
fillout_submission_deletePermanently delete one submission from a Fillout form.DestructiveDelete Submission
Permanently delete one submission from a Fillout form. Returns an empty success response; the submission cannot be recovered. Use fillout_submission_delete to remove a single submission. Use fillout_submission_get first to confirm it is the right one.
- Idempotent
Inputs
form_idstringrequired- Public ID of the form the submission belongs to, as returned in formId by fillout_forms_list. Example: "foAdHjd1Duus".
submission_idstringrequired- ID of the submission to delete, as returned in submissionId by fillout_submissions_list. Example: "abc123-def456". Deletion is permanent.
No tools match.