# Basin

Basin is a no-code form backend that enables users to set up powerful, reliable forms quickly without writing server-side code.

- **Category:** forms & surveys
- **Auth:** API_KEY
- **Composio Managed App Available?** N/A
- **Tools:** 20
- **Triggers:** 0
- **Slug:** `BASIN`
- **Version:** 20260312_00

## Tools

### Create Form

**Slug:** `BASIN_CREATE_FORM`

Tool to create a new form in Basin. Use when you need to automate form setup with name, timezone, and project association; optionally configure redirect, notifications, or spam protection.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Name of the form |
| `timezone` | string | Yes | IANA timezone used for form timestamps |
| `use_ajax` | boolean | No | Whether the form should submit via AJAX |
| `project_id` | integer | Yes | ID of the project under which this form is created |
| `redirect_url` | string | No | URL to redirect after submission |
| `notifications` | object | No | Email notification settings for a form. |
| `spam_settings` | object | No | Spam protection configuration for a form. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Form Webhook

**Slug:** `BASIN_CREATE_FORM_WEBHOOK`

Tool to create a new webhook for a specific form. Use when you need to programmatically add a webhook once you have the form ID and callback URL confirmed.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `url` | string | Yes | Destination URL where Basin will POST the submission payload |
| `name` | string | Yes | Friendly label for this webhook (for your reference) |
| `format` | string | No | Payload format (e.g., 'slack'). Omit for default JSON. |
| `enabled` | boolean | No | Whether the webhook is active upon creation |
| `form_id` | integer | Yes | ID of the form to attach the webhook to |
| `trigger_when_spam` | boolean | No | If true, fire this webhook even when a submission is flagged as spam |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Project

**Slug:** `BASIN_CREATE_PROJECT`

Tool to create a new Basin project. Use when you need a new organizational container for forms. Example: "Create a project named Marketing Leads."

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Name of the new project; must be non-empty. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Form

**Slug:** `BASIN_DELETE_FORM`

Tool to delete a form. Use when permanently removing a form after it's no longer needed. Ensure the form_id is correct; this operation is irreversible.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `form_id` | string | Yes | ID of the form to permanently delete |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Project

**Slug:** `BASIN_DELETE_PROJECT`

Tool to delete a project. Use when you need to remove a project after confirming its ID. Returns the deleted project's details.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `project_id` | integer | Yes | ID of the project to delete |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Submission

**Slug:** `BASIN_DELETE_SUBMISSION`

Tool to permanently delete a form submission by its ID. Use when you need to remove a submission after confirming its ID. This operation is irreversible.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | ID of the submission to permanently delete |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Webhook

**Slug:** `BASIN_DELETE_WEBHOOK`

Tool to delete a specific webhook. Use when you need to remove a webhook from a form after confirming its ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `webhook_id` | integer | Yes | ID of the webhook to delete |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Domains

**Slug:** `BASIN_GET_DOMAINS`

Tool to retrieve a list of all custom domains associated with the Basin account. Custom domains allow you to send emails from your own domain through Basin forms. Supports pagination and filtering by domain name or ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number for pagination (starts at 0) |
| `query` | string | No | Filter domains by ID or name |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Form Details

**Slug:** `BASIN_GET_FORM_DETAILS`

Retrieves comprehensive details about a specific Basin form including configuration, notification settings, security options, branding, webhooks, and submission counts. Use this when you need complete information about a form's setup and current state. Requires a form ID (obtain from Get Forms action if needed).

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `form_id` | string | Yes | The numeric ID of the form (as a string). Can be obtained from the 'id' field in the Get Forms action response. Example: '55229' |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Forms

**Slug:** `BASIN_GET_FORMS`

Retrieves a list of all Basin forms with their configuration and metadata. Supports optional pagination via the 'page' parameter and filtering via the 'query' parameter (searches across form id, name, uuid, and project_id). Returns comprehensive form details including webhooks, submission counts, notification settings, and security configurations.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number for pagination (default: 1) |
| `query` | string | No | Filter forms by id, name, uuid, or project_id. Partial matches supported. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Form Webhook

**Slug:** `BASIN_GET_FORM_WEBHOOK`

Tool to retrieve details of a specific form webhook by its ID. Use when you need to view webhook configuration including URL, format, and trigger settings.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the form webhook to retrieve |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Project Details

**Slug:** `BASIN_GET_PROJECT_DETAILS`

Tool to retrieve detailed information about a specific project. Use when you have a project ID and need its metadata (name, created_at, updated_at).

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `project_id` | string | Yes | Unique identifier of the project to retrieve |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Projects

**Slug:** `BASIN_GET_PROJECTS`

Retrieves a list of Basin projects from your account. Returns project details including IDs, names, and timestamps. Use this to list all projects or filter by name/ID. The response includes pagination metadata to help navigate large result sets. Typical use: Get project IDs for use with other project-specific endpoints like forms or submissions.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number for pagination (default: 1). Use this to navigate through multiple pages of results. |
| `query` | string | No | Search filter to match projects by name or ID. Returns projects containing this text in their name or matching the ID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Submissions

**Slug:** `BASIN_GET_SUBMISSIONS`

Retrieve form submissions from Basin with optional filtering, sorting, and search capabilities. Can retrieve all submissions across forms or filter by specific form_id. Supports filtering by status (new/spam/trash/all), text search, date range, and sorting by date or email.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `query` | string | No | Search submissions by text across all fields |
| `form_id` | string | No | ID of the form to get submissions from. Required if using a shared account API token. |
| `order_by` | string ("date_asc" | "date_desc" | "email_asc" | "email_desc") | No | Sort submissions by 'date_asc', 'date_desc', 'email_asc', or 'email_desc'. |
| `filter_by` | string ("new" | "spam" | "trash" | "all") | No | Filter submissions by status. One of 'new', 'spam', 'trash', or 'all'. |
| `date_range` | string | No | Filter submissions by date range in format 'YYYY-MM-DD+to+YYYY-MM-DD'. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Webhooks

**Slug:** `BASIN_GET_WEBHOOKS`

Tool to retrieve all webhooks associated with a specific form. Use after obtaining the form ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number for pagination, if multiple pages of webhooks exist |
| `query` | string | No | Optional search term to filter webhooks by name, id, url, or form_id |
| `form_id` | integer | Yes | ID of the form to retrieve webhooks for |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Form Views

**Slug:** `BASIN_LIST_FORM_VIEWS`

Retrieves a list of all Basin form views with their configuration and metadata. Supports optional pagination via the 'page' parameter and filtering via the 'query' parameter (searches across form view id, uuid, form id, and form uuid).

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `page` | integer | No | Page number for pagination (default: 1) |
| `query` | string | No | Filter form views by id, uuid, form id, or form uuid. Partial matches supported. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Form

**Slug:** `BASIN_UPDATE_FORM`

Tool to update an existing Basin form by ID. Use when you need to modify form settings including name, notifications, spam protection, redirects, or other configuration options.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | string | Yes | ID of the form to update |
| `logo` | string | No | URL to logo image for the form |
| `name` | string | No | Name of the form |
| `timezone` | string | No | IANA timezone for the form |
| `use_ajax` | boolean | No | Whether the form should submit via AJAX |
| `autoreply` | boolean | No | Whether to send auto-reply emails to submitters |
| `domain_id` | integer | No | ID of custom domain to use for the form |
| `project_id` | integer | No | ID of the project this form belongs to |
| `domain_email` | string | No | Custom domain email address |
| `redirect_url` | string | No | URL to redirect after form submission |
| `autoreply_body` | string | No | Body text for auto-reply emails |
| `autoreply_name` | string | No | Name to show as sender in auto-reply emails |
| `force_hcaptcha` | boolean | No | Whether to require hCaptcha verification |
| `honeypot_field` | string | No | Name of honeypot field to trap spam bots |
| `retention_days` | integer | No | Number of days to retain form submissions |
| `allowed_domains` | array | No | List of domains allowed to submit the form |
| `autoreply_email` | string | No | Email address to send auto-replies from |
| `autoreply_title` | string | No | Title for auto-reply emails |
| `blocked_domains` | array | No | List of domains blocked from submitting the form |
| `custom_template` | string | No | Custom HTML template for notification emails |
| `force_recaptcha` | boolean | No | Whether to require Google reCAPTCHA verification |
| `force_turnstile` | boolean | No | Whether to require Cloudflare Turnstile verification |
| `duplicate_filter` | boolean | No | Whether to filter duplicate submissions |
| `redirect_heading` | string | No | Heading text for redirect page |
| `redirect_message` | string | No | Message text for redirect page |
| `turnstile_secret` | string | No | Cloudflare Turnstile secret key |
| `autoreply_subject` | string | No | Subject line for auto-reply emails |
| `button_text_color` | string | No | Text color for submit button (hex code) |
| `content_blacklist` | array | No | List of content patterns to block in submissions |
| `autoreply_greeting` | string | No | Greeting text for auto-reply emails |
| `data_receipt_email` | boolean | No | Whether to send data receipt emails |
| `turnstile_site_key` | string | No | Cloudflare Turnstile site key |
| `autoreply_from_name` | string | No | From name for auto-reply emails |
| `notification_emails` | string | No | Comma-separated list of email addresses to notify on submission |
| `use_custom_template` | boolean | No | Whether to use a custom template for notification emails |
| `notification_subject` | string | No | Custom subject line for notification emails |
| `recaptcha_failed_url` | string | No | URL to redirect to when reCAPTCHA verification fails |
| `redirect_button_text` | string | No | Text for button on redirect page |
| `hide_dashboard_button` | boolean | No | Whether to hide the dashboard button on success page |
| `smtp_email_validation` | boolean | No | Whether to validate email addresses via SMTP |
| `notification_cc_emails` | string | No | Comma-separated list of CC email addresses for notifications |
| `notification_from_name` | string | No | Name to show as sender in notification emails |
| `button_background_color` | string | No | Background color for submit button (hex code) |
| `notification_bcc_emails` | string | No | Comma-separated list of BCC email addresses for notifications |
| `whitelist_source_domains` | string | No | Comma-separated list of whitelisted source domains |
| `autoreply_custom_template` | string | No | Custom HTML template for auto-reply emails |
| `redirect_button_text_color` | string | No | Text color for redirect page button (hex code) |
| `exclude_submitter_from_reply` | boolean | No | Whether to exclude the submitter from reply emails |
| `autoreply_use_custom_template` | boolean | No | Whether to use a custom template for auto-replies |
| `confirmation_mail_template_id` | integer | No | ID of confirmation mail template to use |
| `notification_mail_template_id` | integer | No | ID of notification mail template to use |
| `auto_response_mail_template_id` | integer | No | ID of auto-response mail template to use |
| `redirect_button_background_color` | string | No | Background color for redirect page button (hex code) |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Project

**Slug:** `BASIN_UPDATE_PROJECT`

Tool to update details of an existing project. Use when you need to change a project's name after confirming the project ID. Example: "Update project 123 to 'Rebrand Launch'".

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | New name for the project. Must be non-empty and cannot exceed 100 characters. |
| `project_id` | integer | Yes | ID of the project to update |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Webhook

**Slug:** `BASIN_UPDATE_WEBHOOK`

Tool to update settings of an existing webhook for a form. Use after obtaining the webhook's ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `url` | string | No | Endpoint URL to receive webhook payloads |
| `name` | string | No | Human-readable name for this webhook |
| `format` | string | No | Payload format for this webhook. Valid values: 'json', 'slack', 'form_url_encoded' |
| `enabled` | boolean | No | Whether this webhook is active after update |
| `form_id` | integer | No | ID of the form this webhook is attached to |
| `webhook_id` | integer | Yes | ID of the webhook to update |
| `trigger_when_spam` | boolean | No | If true, send this webhook even on spam submissions |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |
