All integrations

Feathery

MARKETING · MARKETING

Forms, their full schema, and submissions in the account they connected.

Acts as the person, not as itself

Each user connects their own account. Every call carries both identities — the agent and the person it is acting for — so the agent can never reach past what that individual can already do.

Credentials never touch the agent

Tokens live in the vault and attach server-side at call time. The agent holds a session, not a secret, and revoking access does not mean rotating a key.

Every call on the record

Who asked, which agent acted, which action ran, and the verdict that let it through — one audit trail across every integration, not one per vendor.

What an agent can do

Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.

feathery_delete_api_document_envelope_by_envelope_idWRITE

Delete a document envelope via DELETE /api/document/envelope/{envelope_id}/. Permanently delete one document envelope, named entirely by its id in the path. Feathery documents no recycle bin and no restore endpoint for envelopes, so treat this as irreversible.

api
feathery_delete_api_field_hidden_deleteWRITE

Delete hidden fields via DELETE /api/field/hidden/delete/. Permanently delete hidden fields named by a `field_ids` array in the request body, and return the ids that were deleted. Deleting a hidden field discards the values users have submitted into it; Feathery documents no restore endpoint, so treat this as irreversible.

api
feathery_delete_api_form_by_form_idWRITE

Delete a form via DELETE /api/form/{form_id}/. Permanently delete one form, named by id in the path. The body must carry `confirm_delete: true` -- Feathery requires the confirmation and refuses without it. Deleting a form takes its submissions' context with it and Feathery documents no restore endpoint, so treat this as irreversible.

api
feathery_delete_api_form_link_by_link_idWRITE

Revoke a form access link via DELETE /api/form/link/{link_id}/. Revoke one access link, named by id in the path. It stops opening its form immediately, and the response returns the link in its final state rather than an empty body. Revoking an already-revoked link changes nothing. Revoking does NOT reopen the submission through its plain ?_id= URL -- a submission that has been given an access link stays closed until a new link is created for it.

api
feathery_delete_api_user_by_idWRITE

Delete an end user via DELETE /api/user/{id}/. Permanently delete one Feathery end user, named by id in the path. A user IS their submissions across every form, so this discards all of that person's submitted data. Feathery documents no restore endpoint; treat this as irreversible.

api
feathery_delete_api_workspace_by_workspace_idWRITE

Delete a workspace via DELETE /api/workspace/{workspace_id}/. Permanently delete one Feathery workspace connected to this main account, named by id in the path. This takes the workspace's forms and submissions with it and Feathery documents no restore endpoint; treat this as irreversible. White-label only.

api
feathery_get_api_accountREAD

Retrieve account information via GET /api/account/. Retrieve this Feathery team's account information: the team name and the list of accounts that belong to it. Changes nothing in the workspace.

api
feathery_get_api_ai_extractionREAD

List AI document extractions via GET /api/ai/extraction/. List this organization's AI document extractions, each with its id, name, `file_type` (image, csv, meeting or ai_query) and `extraction_type`. The response is paginated. Requires the Document Intelligence feature to be enabled on the account; without it this answers an error rather than an empty list, which is a plan state and not a bad key. Changes nothing in the workspace.

api
feathery_get_api_ai_extraction_by_extraction_idREAD

Retrieve an AI extraction via GET /api/ai/extraction/{extraction_id}/. Retrieve the full configuration of one AI document extraction: its queries (each with `question_type`, entities, criteria, validation rules and the fields extracted values are saved to), its variants, its post-extraction logic rules, its file sources and its active integrations. Requires the Document Intelligence feature. Changes nothing in the workspace.

api
feathery_get_api_ai_run_batch_by_extraction_idREAD

List AI extraction runs via GET /api/ai/run/batch/{extraction_id}/. List the runs of one AI document extraction, optionally narrowed by `start_time`, `end_time` or `user_id`. Each run reports the document processed, whether it succeeded, the datapoints extracted, the approval state and approver, and the inbound email or audio that triggered it. Changes nothing in the workspace.

api
feathery_get_api_computer_agent_by_agent_id_runREAD

List computer agent runs via GET /api/computer-agent/{agent_id}/run/. List one computer agent's runs, newest first. The response is paginated (`count`, `next`, `previous`, `total_pages`, `current_page`, `results`) and each entry carries the same fields as a single run retrieval. Changes nothing in the workspace.

api
feathery_get_api_computer_agent_by_agent_id_run_by_run_idREAD

Retrieve a computer agent run via GET /api/computer-agent/{agent_id}/run/{run_id}/. Retrieve one computer agent run's status and result, plus the data stored on its submission. `status` is one of pending, running, awaiting_approval, succeeded, failed or cancelled -- awaiting_approval means the run is paused for a human reviewer inside Feathery, so it is not a failure. Poll this until the status is terminal. Changes nothing in the workspace.

api
feathery_get_api_document_envelopeREAD

List document envelopes via GET /api/document/envelope/. List document envelopes -- the filled-out documents this account's users have produced -- looked up either by document template or by submission: `type` is 'document' or 'user' and `id` is the corresponding id. Each envelope reports its file URL, its signer and sender, and whether the signer has viewed and signed it. Changes nothing in the workspace.

api
feathery_get_api_document_templateREAD

List document templates via GET /api/document/template/. List the document templates this team has uploaded, optionally narrowed by `name` (substring match) or `tags`. The tag filter has its own grammar: `;;` matches any tag in a set (OR) and repeating the parameter requires several sets (AND). Uploading a template is not available through this integration -- it is a multipart file upload. Changes nothing in the workspace.

api
feathery_get_api_fieldREAD

List all data for a user via GET /api/field/. For one user (`id`, their Feathery user id), list every field they have submitted data for -- form fields and hidden fields alike -- with the value, the display text, and when the value was first submitted and last updated. For repeated and file fields the two timestamps are arrays aligned with the value array. Called without `id` it lists the account's fields with no user values attached. Changes nothing in the workspace.

api
feathery_get_api_field_hiddenREAD

List hidden fields via GET /api/field/hidden/. List every hidden field in this Feathery account, each with its id, internal id, type, server-side flag, tags and timestamps. Changes nothing in the workspace.

api
feathery_get_api_formREAD

List forms via GET /api/form/. List this account's Feathery forms, optionally narrowed by `tags` (a comma-separated list, all of which must be present) or by `active`. Each form reports its id, name, active flag and tags. `internal_id` is returned only for white-label workspaces. Changes nothing in the workspace.

api
feathery_get_api_form_by_form_idREAD

Retrieve a form schema via GET /api/form/{form_id}/. Retrieve the full schema of one form: its steps and every element on them (images, videos, progress bars, texts, buttons and fields, each with its hide rules), its navigation conditions, its logic rules, its shared code snippets, its active integrations and its translation map. This is the read that tells an agent which field ids a submission may set. Changes nothing in the workspace.

api
feathery_get_api_form_defaultREAD

Retrieve form defaults via GET /api/form/default/. Fetch the form settings this team applies to newly created forms -- the workspace's own defaults merged over anything inherited from a parent workspace. Changes nothing in the workspace.

api
feathery_get_api_form_linkREAD

List form access links via GET /api/form/link/. List this environment's access links, newest first, optionally narrowed to one form or one submission -- the read that says whether a link you sent has been opened, has expired or has been revoked (`status` is active, redeemed, expired or revoked). Listed links never include `token` or `url`: only the response that created a link hands out its credential. Paginated. Changes nothing in the workspace.

api
feathery_get_api_form_submissionREAD

List form submissions via GET /api/form/submission/. List submission data for one form (`form_id` is required), with filters for user, update-time and creation-time windows, completion state, a `field_search` array of field id / value pairs, a `fuzzy_search` trigram search with per-parameter weights summing to 1, a `fields` allowlist and `no_field_values` for a faster metadata-only read. The response is paginated at 500 rows, raised with `page_size` up to 1000. `use_cache` trades freshness for latency and omits `value_created_at`/`value_updated_at`. `field_search` and `fuzzy_search` are STRINGIFIED JSON, not objects. Changes nothing in the workspace.

api
feathery_get_api_logs_api_connector_by_form_idREAD

List API connector errors via GET /api/logs/api-connector/{form_id}/. List recent error responses from API connector requests triggered by one form, each with the endpoint URL, the status code, and the request and response bodies (truncated at 400 characters). Feathery keeps AT MOST THE LAST WEEK of this data, so an empty result for an older window is a retention fact and not a failure. Changes nothing in the workspace.

api
feathery_get_api_logs_email_extraction_by_extraction_idREAD

List forwarded AI extraction emails via GET /api/logs/email/extraction/{extraction_id}/. List emails that triggered one AI extraction and were then forwarded, each with the original sender, the forward recipients and the email group they are defined under, the subject prefix, and the user the extraction was attributed to. Optionally narrowed by time window or `user_id`. Changes nothing in the workspace.

api
feathery_get_api_logs_email_form_by_form_idREAD

List emails sent from a form via GET /api/logs/email/form/{form_id}/. List recent emails sent by Feathery's email integration on one form, each with the template it was based on, its recipients, its subject and when it was sent. At most the last week of data. Changes nothing in the workspace.

api
feathery_get_api_logs_email_issuesREAD

List email bounces and complaints via GET /api/logs/email/issues/. List the Bounce and Complaint events raised while sending email through Feathery, optionally narrowed to one `event_type` or a time window. Each entry names the recipients the message went to and the ones that were rejected. Changes nothing in the workspace.

api
feathery_get_api_logs_quik_by_form_idREAD

List Quik integration requests via GET /api/logs/quik/{form_id}/. List recent Quik integration requests and responses triggered by one form, each with the Quik URL, the status code, and the request and response bodies. At most the last week of data. Changes nothing in the workspace.

api
feathery_get_api_logs_webhook_by_form_idREAD

List webhook errors via GET /api/logs/webhook/{form_id}/. List recent webhook delivery failures for one form, including HTTP 4xx/5xx responses and connection or timeout failures -- a `status_code` of 0 means no HTTP response was received at all. Request and response bodies are truncated at 1200 characters. At most the last week of data. Changes nothing in the workspace.

api
feathery_get_api_userREAD

List end users via GET /api/user/. List this account's Feathery end users -- a user IS their submissions across every form -- optionally narrowed by creation-time window or by a single field value (`filter_field_id` paired with `filter_field_value`). Each user reports its id, timestamps and collaborator activity. Changes nothing in the workspace.

api
feathery_get_api_user_by_user_id_eventREAD

Get a user's form events via GET /api/user/{user_id}/event/. Get one user's form events, grouped by form and ordered oldest to newest: load, complete and skip events with the step they occurred on and the step navigated to. Feathery OVERWRITES an event of the same type on the same step rather than appending, so this is a current-state read rather than a full history. Changes nothing in the workspace.

api
feathery_get_api_user_by_user_id_sessionREAD

Get a user's form session via GET /api/user/{user_id}/session/. Get one user's form session data: every form they are working on, the step each was last on, whether and when it was completed, and whether the form remembers their location. Changes nothing in the workspace.

api
feathery_get_api_workspaceREAD

List workspaces via GET /api/workspace/. List the Feathery workspaces connected to this main account, each with its branding, feature limits, disabled tabs and member accounts; set `submission_data` to also return each workspace's submission usage for the current billing cycle. WHITE LABEL ONLY: this is available only on Feathery's white-label product, so an account without it gets an error rather than an empty list -- a plan state, not a bad key. A test API key returns only test workspaces. Changes nothing in the workspace.

api
feathery_get_api_workspace_by_workspace_idREAD

Retrieve a workspace via GET /api/workspace/{workspace_id}/. Retrieve one Feathery workspace by id, with its branding, feature limits, member accounts and -- with `submission_data` -- its submission usage for the current billing cycle. Feathery ALSO returns this workspace's live and test API keys and live and test SDK keys; Agentic Fabriq REDACTS all four, because each is a working credential for that workspace and a tool result reaches the model's context and the audit pipeline. Read them from the Feathery dashboard instead. White-label only. Changes nothing in the workspace.

api
feathery_get_api_workspace_report_formREAD

Workspace form report via GET /api/workspace/report/form/. A paginated report of every child workspace with its forms (id, name, active flag and step count) and per-field-type usage statistics, plus `field_types`, the full list of standard field type values. `page_size` defaults to 50 and caps at 100. White-label only; a test API key returns only test workspaces. Changes nothing in the workspace.

api
feathery_get_api_workspace_report_submissionsREAD

Workspace submission report via GET /api/workspace/report/submissions/. A paginated report of each workspace's completed submissions within a billing cycle, with `cycle_start` and `cycle_end`, counting live submissions only. `billing_cycle_offset` walks back through earlier cycles (at most 11 for monthly billing, 1 for yearly). `hidden_field_id` may be repeated to break the counts down by hidden field, up to 10 distinct values. `page_size` defaults to 50 and caps at 100. White-label only. Changes nothing in the workspace.

api
feathery_patch_api_accountWRITE

Edit a team account via PATCH /api/account/. Edit one existing member of this Feathery team: their role ('admin', 'editor' or 'viewer') and the five per-account permission flags (edit form results, invite collaborators, edit collaborator settings, edit logic rules, edit themes). Names the member by `email` or by `account_id`; one of the two must be given. Feathery roles govern what a teammate can do in the Feathery dashboard, not what an API key can reach -- every key sees the same fields and forms. Sends no mail.

api
feathery_patch_api_account_uninviteWRITE

Remove a team account via PATCH /api/account/uninvite/. Remove a user from this Feathery team, named by `email` or `account_id`; one of the two must be given. Returns the team's remaining accounts. Irreversible from here -- re-adding the person needs an invitation, which this integration does not offer. Sends no mail.

api
feathery_patch_api_field_hidden_detailWRITE

Edit hidden fields via PATCH /api/field/hidden/detail/. Edit one or more hidden fields, as a JSON ARRAY of objects each naming the field's `id` and the properties to change (`type`, `server_side`, `tags`). At most 100 fields per request. Setting `tags` REPLACES the field's existing tags rather than merging into them.

api
feathery_patch_api_form_by_form_idWRITE

Update a form via PATCH /api/form/{form_id}/. Update one form's properties: `enabled` (its live status), `form_name`, `translations` (a map of default text to translations -- setting it REPLACES any existing translations) and `fields`, which sets per-field tags on the named form fields only. Three of Feathery's parameters are NOT offered here: `integrations` would register a caller-chosen webhook URL and headers that receive submission data on every future submission, and `logic_rules` and `shared_codes` carry caller-supplied `code` objects Feathery executes -- each also with replace-all semantics that silently delete anything not resent.

api
feathery_patch_api_form_defaultWRITE

Set form defaults via PATCH /api/form/default/. Set the form settings this team applies to NEWLY created forms: redirect URL, error display, autocomplete, autofocus, Enter-to-submit, scroll behaviour, branding position, completion behaviour, user and location tracking, data saving, authentication mode, edit-after-completion, hidden-field handling, URL-parameter saving and hash tracking. Every parameter is optional and only what is sent is changed. THESE APPLY ONLY GOING FORWARD: existing forms are never modified and a form's settings are never re-synced, and a straight duplicate of an existing form keeps its source's settings rather than taking these.

api
feathery_patch_api_workspace_by_workspace_idWRITE

Update a workspace via PATCH /api/workspace/{workspace_id}/. Update one Feathery workspace's name, branding, feature limits, hidden tabs and settings, enabled integrations and metadata. White-label only. Sending a list-valued field replaces that list rather than adding to it.

api
feathery_post_api_computer_agent_by_agent_id_runWRITE

Trigger a computer agent run via POST /api/computer-agent/{agent_id}/run/. Start a run of a Feathery computer agent, which drives a real browser session to carry out the task configured on that agent in the Feathery dashboard. The `fields` mapping is stored on a Feathery submission and substituted into the agent's task wherever it uses {{field_id}} placeholders; `user_id` names the submission to store them on and creates it if it does not exist. The task itself is account-configured and is not a parameter of this call. The run starts ASYNCHRONOUSLY: this returns `run_id`, `run_url` and `user_id`, and the run's outcome is read back with the retrieve tool.

api
feathery_post_api_data_hub_by_hub_id_actionWRITE

Perform a data hub entry action via POST /api/data-hub/{hub_id}/action/. Create, retrieve, update or DELETE entries in one Feathery data hub. The `operation` field selects which -- 'create', 'get', 'update' or 'delete' -- so ONE tool carries all four effects and the argument decides: 'delete' permanently removes the entry named by `entry_id` and answers 204. `data` is the entry's field mapping for create and update and the filter criteria for get; `entry_id` is required for update and delete; `fields` narrows which field keys a get returns. Classified destructive because one of its four operations is.

api
feathery_post_api_document_fillWRITE

Fill a document template via POST /api/document/fill/. Fill out a document template that has already been uploaded and mapped in this Feathery account, from a `field_values` mapping of field id to value, optionally associating the result with an existing Feathery user. Returns `file_url`, the URL of the filled document. Feathery's `signer_email` parameter is NOT offered here: it routes the document to an address for signature, and an agent-chosen recipient receives mail that cannot be unsent, so this tool fills the document and hands back the URL for the customer to route themselves.

api
feathery_post_api_field_hiddenWRITE

Create hidden fields via POST /api/field/hidden/. Create a hidden field in this Feathery account: a new unique `id`, a `type` of json_value, number_value or text_value, `server_side` for a field the browser never sees, and optional `tags` (at most 10KB). THE REFERENCE CONTRADICTS ITSELF ABOUT THE BODY SHAPE: its prose says "by passing an array of field objects. Bulk creation is limited to 100 fields per request", while every one of its three code samples and its example response send and return a SINGLE object. This tool ships the object shape its examples show; the array form could not be discriminated without a real key, because Feathery authenticates before it validates a body. If this answers 400 on a well-formed object, the array form is the one to try.

api
feathery_post_api_formWRITE

Create a form from a template via POST /api/form/. Create a new form by copying an existing template form, naming the new form (`form_name`, which must be unique), the `template_form_id` to copy, the `steps` to create and the `navigation_rules` connecting them. Integrations on the template are copied over as well. Element arrays inside each step edit the copied elements; anything not named is copied as-is. Feathery's `logic_rules` parameter is NOT offered here: a logic rule carries a `code` object Feathery executes for every future end user, and this integration does not accept caller-supplied code.

api
feathery_post_api_form_copyWRITE

Copy a form via POST /api/form/copy/. Duplicate an existing form in this account under a new name, from `copy_form_id` and `form_name`. Returns the new form's id, name, active flag and tags. A straight duplicate keeps its source form's settings; it does not pick up the team's form defaults.

api
feathery_post_api_form_hidden_fieldWRITE

Create hidden fields (deprecated route) via POST /api/form/hidden_field/. Create hidden fields through Feathery's DEPRECATED /api/form/hidden_field/ route. The reference says plainly: "Use /api/field/hidden/ instead. This endpoint accepts and returns an array of objects and does not include internal_id, created_at, or updated_at in the response." Prefer the create hidden fields tool on /api/field/hidden/; this one exists so an existing integration that depends on the array shape is not silently dropped.

api
feathery_post_api_form_linkWRITE

Create a form access link via POST /api/form/link/. Create an access link that opens ONE submission of ONE form, optionally expiring (`expires_in` seconds or an `expires_at` timestamp, at most ten years, and not both), optionally single-use (bound to the first device that opens it), and optionally prefilled from a `fields` mapping. `form` takes the form's id, slug or name. Creating a link also creates the submission it opens, and from then on that submission can ONLY be opened through an access link -- not through its plain ?_id= URL. THE RESPONSE CARRIES A CREDENTIAL: `token`, and the `url` that contains it, are returned only here and never again by listing or revoking, so they reach this caller's context and the audit log. They are deliberately not redacted, because the link is the whole point of the call; treat the result as a secret, and revoke the link if it goes somewhere it should not.

api
feathery_post_api_form_submissionWRITE

Create or update form submissions via POST /api/form/submission/. Set field values for a user and initialise their submissions. `fields` maps field identifier (id or internal id) to value -- a signature field takes {"file": <base64>, "name": <filename>}. `user_id` names a new or existing user and is generated and returned when omitted; `forms` lists form ids to initialise submissions for; `complete` sets the completion state, and omitting it on an existing submission leaves that state unchanged. `documents` generates the named documents and returns values read back from the `output_location` cells of spreadsheet documents. This WRITES a user's submitted data.

api
feathery_post_api_form_submission_pdfWRITE

Export form submission PDFs via POST /api/form/submission/pdf/. Create a PDF export of one submission (`user_id`) or of many at once (a `start_time`/`end_time` or `created_after`/`created_before` window, optionally narrowed by `completed`); `form_id` is required and the two modes are mutually exclusive. Returns `pdf_url`, or `results` plus `submission_count` for a bulk export. THE FILE IS NOT IMMEDIATELY AVAILABLE: poll the URL, which the reference suggests doing up to five times, once per second. A `pdf_url` of null means the submission has no data to render. Once a submission is complete its PDF is frozen and re-requesting does not update it. Feathery's `webhook` parameter -- a caller-chosen callback URL -- is NOT offered here; polling is the documented alternative.

api
feathery_post_api_userWRITE

Create or fetch an end user via POST /api/user/. Create, update or retrieve one Feathery end user by `id`: if no user with that id exists it is created, otherwise the existing one is returned. Feathery also returns that user's `sdk_key`, which authenticates the React library for displaying forms as this user -- Agentic Fabriq REDACTS it, because a bearer credential in a tool result reaches the model's context and the audit pipeline. The user's id and timestamps are returned as normal.

api
feathery_post_api_workspaceWRITE

Create a workspace via POST /api/workspace/. Create a new Feathery workspace under this main account, with its name, branding (logo, brand URL, favicon, name, primary and secondary colours), `features` limits, the dashboard and form-editor tabs to hide, the form settings to hide, the form elements to hide, the integrations to enable and arbitrary `metadata`. White-label only. A test API key creates a TEST workspace rather than a live one.

api
feathery_post_api_workspace_by_workspace_id_create_template_formWRITE

Populate a workspace from a template via POST /api/workspace/{workspace_id}/create-template-form/. Create a form inside one workspace from one of the main account's forms or custom templates, naming the new form (`form_name`) and the `template_id` to populate from. Returns the new form's id, name and internal id. White-label only.

api

Put Feathery behind one governed endpoint.

Same permissions, same audit trail, whatever else you connect next.