> **Building with AI coding agents?** Install the authstack plugin with one command. This equips your agent with accurate Scalekit implementation patterns.
>
> **Recommended** (the `-y` flags skip prompts, so the command runs without an interactive terminal):
> ```bash
> npx -y @scalekit-inc/cli setup -y
> ```
>
> Global:
> ```bash
> npm install -g @scalekit-inc/cli
> scalekit setup -y
> ```
>
> Supports Claude Code, Cursor, GitHub Copilot, Codex + skills for other Agent Skills-compatible agents in `~/.agents/skills`.
> Skills: integrate-agentkit, implement-saaskit, add-mcp-oauth, implement-sso, implement-scim.
> [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# Connect AI agents to Fal AI

The Fal AI connector lets your AI agent act in each user's Fal AI account. Each user connects their own Fal AI API key once, and Scalekit sends it with every call, so your agent never handles credentials. It comes with 29 tools.

**Authentication:** API Key
**Categories:** AI, Media
**Tools:** 29: 21 read, 7 write, 1 destructive
**Users sign in with:** API key
**Built by:** Scalekit connector
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=FAL)

## Setup

1. ### Install the SDK

   **Node.js**

   ```bash
   npm install @scalekit-sdk/node dotenv
   ```

   **Python**

   ```bash
   pip install scalekit-sdk-python python-dotenv
   ```

2. ### Set your credentials

   Add your Scalekit credentials to your `.env` file. Find values in **[app.scalekit.com](https://app.scalekit.com)** > **Developers** > **API Credentials**.

   ```sh title=".env"
   SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
   SCALEKIT_CLIENT_ID=<your-client-id>
   SCALEKIT_CLIENT_SECRET=<your-client-secret>
   ```

3. ### Create the Fal AI connection

   In **AgentKit > Connections**, create a Fal AI connection. The name you give it is the `connection_name` your code passes. See [Configure connections](/agentkit/connections/).

4. ### Authorize a user and make your first call

   **Node.js** (`quickstart.mts`)

   ```typescript
   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.actions

   const connector = 'fal'
   const identifier = 'user_123'

   // Generate an authorization link for the user
   const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
   console.log('Authorize Fal AI:', link)
   const rl = createInterface({ input: process.stdin, output: process.stdout })
   await rl.question('Press Enter after authorizing...')
   rl.close()

   // Make your first call
   const result = await actions.executeTool({
     connector,
     identifier,
     toolName: 'fal_browse_assets',
     toolInput: {},
   })
   console.log(result)
   ```

   ```bash
   npx tsx quickstart.mts
   ```

   **Python** (`quickstart.py`)

   ```python
   import os
   from scalekit import ScalekitClient
   from dotenv import load_dotenv
   load_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.actions

   connection_name = "fal"
   identifier = "user_123"

   # Generate an authorization link for the user
   link_response = actions.get_authorization_link(
       connection_name=connection_name,
       identifier=identifier,
   )
   print("Authorize Fal AI:", link_response.link)
   input("Press Enter after authorizing...")

   # Make your first call
   result = actions.execute_tool(
       tool_input={},
       tool_name="fal_browse_assets",
       connection_name=connection_name,
       identifier=identifier,
   )
   print(result)
   ```

   ```bash
   python quickstart.py
   ```

   Each user opens the link once and enters their Fal AI credentials there. See [Authorize a user](/agentkit/tools/authorize/) for the full flow and statuses.

## Tools

Pass the exact name to `execute_tool`, with an input like each tool's example. To ask for a tool that's missing, use the [request form](https://scalekitsupport.portal.usepylon.com/forms/request-a-connector-tool).

**Node.js**

```typescript
const result = await actions.executeTool({
  toolName: 'fal_browse_assets',
  toolInput: {},
  connector: 'fal',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="fal_browse_assets",
    tool_input={},
    connection_name="fal",
    identifier="user_123",
)
```

`result.data` is the app's response as JSON, and `result.execution_id` (`executionId` in Node.js) is the ID of the call.

### `fal_browse_assets`

Browse Assets · Read-only

Browse or semantically search the fal Assets library across uploads, generations, favorites and collections.
Returns assets with asset_id, url, type, title, endpoint and created_at, plus a cursor for the next page.
Use fal_get_asset for one asset.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `collection_id` (`string`, optional): Only assets in this collection.
- `cursor` (`string`, optional): Pagination cursor from the previous response's next_cursor. Keep all other filters unchanged while paging.
- `limit` (`integer`, optional): Maximum number of items to return per page.
- `q` (`string`, optional): Text query for semantic search.
- `search_image_url` (`string`, optional): Image URL for visual similarity search.
- `search_video_url` (`string`, optional): Video URL for visual similarity search.
- `section` (`string`, optional): Library section to browse. Defaults to all-media. One of: `all-media`, `uploads`, `favorites`, `generated`.

Example input: `{}`

### `fal_estimate_cost`

Estimate Cost · Read-only

Estimate the cost of a planned workload on fal models. This only reads pricing and creates nothing.
Returns estimate_type, total_cost and currency.
Use before large runs; use fal_get_model_pricing for raw unit prices.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `endpoints` (`object`, required): Object mapping each endpoint ID to its quantity. For historical_api_price use {"call_quantity": 100}; for unit_price use {"unit_quantity": 100}. Example: {"fal-ai/flux/dev": {"unit_quantity": 100}}.
- `estimate_type` (`string`, required): Estimation method: historical_api_price (cost per API call, endpoints map to call_quantity) or unit_price (unit price times billing units, endpoints map to unit_quantity). One of: `historical_api_price`, `unit_price`.

Example input: `{"endpoints":{},"estimate_type":"historical_api_price"}`

### `fal_get_account_billing`

Get Account Billing · Read-only

Get billing information for the authenticated fal account.
Returns username and, when expand includes credits, credits with current_balance and currency.
Use to check the remaining credit balance.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `expand` (`string`, optional): Extra details to include. Use credits to include the credit balance.

Example input: `{}`

### `fal_get_app_queue_size`

Get App Queue Size · Read-only

Get the number of requests currently waiting in a Serverless app's queue.
Returns queue_size.
Needs an API key with serverless queue read permission (SERVERLESS, READONLY or FULL preset).

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `name` (`string`, required): App name.
- `owner` (`string`, required): Owner (username or team) of the app.

Example input: `{"name":"<name>","owner":"<owner>"}`

### `fal_get_asset`

Get Asset · Read-only

Get one asset from the fal Assets library by asset ID or vector ID.
Returns the asset with asset_id, url, type, title, endpoint, source and created_at.
Find IDs with fal_browse_assets.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `asset_id` (`string`, required): Asset ID (a vector ID is also accepted).

Example input: `{"asset_id":"<asset_id>"}`

### `fal_get_asset_collection`

Get Asset Collection · Read-only

Get one collection from the fal Assets library.
Returns the collection with id, type, name, icon, color, cover_image_url and parent_collection_id.
Find IDs with fal_list_asset_collections.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `collection_id` (`string`, required): ID of the collection.

Example input: `{"collection_id":"<collection_id>"}`

### `fal_get_model_analytics`

Get Model Analytics · Read-only

Get time-bucketed request metrics for fal model endpoints.
Returns buckets with request, success and error counts and latency percentiles per endpoint_id, plus next_cursor.
Use for reliability and latency monitoring; use fal_get_model_usage for cost.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `endpoint_id` (`string`, required): Endpoint ID(s) to query, comma-separated (up to 50). Example: fal-ai/flux/dev,fal-ai/flux/schnell.
- `bound_to_timeframe` (`string`, optional): Whether start and end are aligned to timeframe boundaries with an exclusive end. Defaults to true. One of: `true`, `false`.
- `cursor` (`string`, optional): Pagination cursor from the previous response's next_cursor. Keep all other filters unchanged while paging.
- `end` (`string`, optional): End of the time range (exclusive), as an ISO 8601 date or datetime. Defaults to now.
- `expand` (`string`, optional): Metrics to include, comma-separated: time_series, request_count, success_count, error_count, p50_duration, p90_duration and similar. Defaults to time_series,request_count.
- `limit` (`integer`, optional): Maximum number of items to return per page.
- `start` (`string`, optional): Start of the time range, as an ISO 8601 date or datetime. Defaults to 24 hours ago.
- `timeframe` (`string`, optional): Aggregation bucket size. Auto-detected from the date range when omitted. One of: `minute`, `hour`, `day`, `week`, `month`.
- `timezone` (`string`, optional): IANA timezone used to bucket dates, for example UTC or America/New_York.

Example input: `{"endpoint_id":"<endpoint_id>"}`

### `fal_get_model_pricing`

Get Model Pricing · Read-only

Get unit pricing for one or more fal model endpoints.
Returns prices with endpoint_id, unit_price, unit and currency.
Use to compare model costs; use fal_estimate_cost to project the cost of a planned workload.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `endpoint_id` (`string`, required): Endpoint ID(s) to price, comma-separated (up to 50). Example: fal-ai/flux/dev,fal-ai/flux/schnell.

Example input: `{"endpoint_id":"<endpoint_id>"}`

### `fal_get_model_usage`

Get Model Usage · Read-only

Get billed usage of fal model endpoints over a time range.
Returns time_series buckets (or a summary) with endpoint_id, unit, quantity, unit price and cost, plus next_cursor.
Needs an API key with billing permission (BILLING or FULL preset). Use fal_get_model_analytics for request counts and latency.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `bound_to_timeframe` (`string`, optional): Whether start and end are aligned to timeframe boundaries with an exclusive end. Defaults to true. One of: `true`, `false`.
- `cursor` (`string`, optional): Pagination cursor from the previous response's next_cursor. Keep all other filters unchanged while paging.
- `end` (`string`, optional): End of the time range (exclusive), as an ISO 8601 date or datetime. Defaults to now.
- `endpoint_id` (`string`, optional): Filter by one or more endpoint IDs, comma-separated (up to 50). Example: fal-ai/flux/dev,fal-ai/flux/schnell.
- `expand` (`string`, optional): Data to include, comma-separated: time_series (default), summary, auth_method.
- `limit` (`integer`, optional): Maximum number of items to return per page.
- `start` (`string`, optional): Start of the time range, as an ISO 8601 date or datetime. Defaults to 24 hours ago.
- `timeframe` (`string`, optional): Aggregation bucket size. Auto-detected from the date range when omitted. One of: `minute`, `hour`, `day`, `week`, `month`.
- `timezone` (`string`, optional): IANA timezone used to bucket dates, for example UTC or America/New_York.

Example input: `{}`

### `fal_get_request_result`

Get Request Result · Read-only

Fetch the output of a completed fal queue request.
Returns the model-specific result JSON, for example images, video or audio objects with media URLs.
Call only after fal_get_request_status reports COMPLETED; app_id is the owner/alias part of the endpoint_id used at submit.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `app_id` (`string`, required): Application ID: only the first two segments (owner/alias) of the endpoint ID the request was submitted to. For fal-ai/flux/dev use fal-ai/flux.
- `request_id` (`string`, required): Request ID returned when the request was submitted to the queue.

Example input: `{"app_id":"<app_id>","request_id":"<request_id>"}`

### `fal_get_request_status`

Get Request Status · Read-only

Check the state of a queued fal request.
Returns status (IN_QUEUE, IN_PROGRESS or COMPLETED), request_id, queue_position while queued, and optional runner logs and metrics.
Use after fal_submit_request, passing only the owner/alias part of its endpoint_id as app_id; once the status is COMPLETED call fal_get_request_result.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `app_id` (`string`, required): Application ID: only the first two segments (owner/alias) of the endpoint ID the request was submitted to. For fal-ai/flux/dev use fal-ai/flux.
- `request_id` (`string`, required): Request ID returned when the request was submitted to the queue.
- `logs` (`integer`, optional): Set to 1 to include runner logs in the response, 0 to omit them. One of: `0`, `1`.

Example input: `{"app_id":"<app_id>","request_id":"<request_id>"}`

### `fal_get_workflow`

Get Workflow · Read-only

Get one fal workflow including its full definition.
Returns the workflow with name, title, user_nickname, is_public, created_at and contents (nodes, schema, output).
Find names with fal_list_workflows.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `username` (`string`, required): Username (nickname) of the workflow owner.
- `workflow_name` (`string`, required): Workflow name (letters, digits, underscores and hyphens).

Example input: `{"username":"<username>","workflow_name":"<workflow_name>"}`

### `fal_list_asset_collections`

List Asset Collections · Read-only

List collections in the fal Assets library.
Returns collections with id, type, name, icon, color and parent_collection_id.
Use fal_get_asset_collection for one collection.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `limit` (`integer`, optional): Maximum number of collections to return (1-100, default 50).
- `offset` (`integer`, optional): Number of collections to skip, for paging. Defaults to 0.

Example input: `{}`

### `fal_list_asset_tags`

List Asset Tags · Read-only

List tags in the fal Assets library.
Returns tags with id, name and created_at.
Use tag ids to filter assets or tag them.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `fal_list_billing_events`

List Billing Events · Read-only

List individual billing events for fal requests.
Returns events with request_id, endpoint_id, timestamp, quantity, unit and cost breakdown, plus next_cursor.
Needs an API key with billing permission (BILLING or FULL preset). Use fal_get_model_usage for aggregated usage.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `api_key_id` (`string`, optional): Filter by API key ID(s), comma-separated.
- `cursor` (`string`, optional): Pagination cursor from the previous response's next_cursor. Keep all other filters unchanged while paging.
- `end` (`string`, optional): End of the time range (exclusive), as an ISO 8601 date or datetime. Defaults to now.
- `endpoint_id` (`string`, optional): Filter by one or more endpoint IDs, comma-separated (up to 50). Example: fal-ai/flux/dev,fal-ai/flux/schnell.
- `limit` (`integer`, optional): Maximum number of items to return per page.
- `login_username` (`string`, optional): Filter by team member login username(s), comma-separated.
- `request_id` (`string`, optional): Filter by request ID(s), comma-separated.
- `start` (`string`, optional): Start of the time range, as an ISO 8601 date or datetime. Defaults to 24 hours ago.

Example input: `{}`

### `fal_list_requests_by_endpoint`

List Requests by Endpoint · Read-only

List past requests made to one or more fal endpoints.
Returns items with request_id, endpoint_id, timestamps, HTTP status and duration, plus next_cursor.
Use to audit or debug runs; use fal_search_requests for semantic search of generated content.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `endpoint_id` (`string`, required): Endpoint ID(s) to query, comma-separated (up to 50). Example: fal-ai/flux/dev,fal-ai/flux/schnell.
- `cursor` (`string`, optional): Pagination cursor from the previous response's next_cursor. Keep all other filters unchanged while paging.
- `end` (`string`, optional): End of the time range (exclusive), as an ISO 8601 date or datetime. Defaults to now.
- `limit` (`integer`, optional): Maximum number of requests to return (1-100, default 50).
- `request_id` (`string`, optional): Return only the request with this UUID.
- `sort_by` (`string`, optional): Sort field: ended_at (default) or duration. One of: `ended_at`, `duration`.
- `start` (`string`, optional): Start of the time range, as an ISO 8601 date or datetime. Defaults to the last 24 hours.
- `status` (`string`, optional): Filter by request outcome. One of: `success`, `error`, `user_error`.

Example input: `{"endpoint_id":"<endpoint_id>"}`

### `fal_list_serverless_apps`

List Serverless Apps · Read-only

List fal Serverless apps owned by the account.
Returns apps with endpoint_id (owner/name), environment, machine_type, auth_mode and concurrency settings.
Use an app's endpoint_id with the queue, analytics and request tools.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `environment` (`string`, optional): Filter by environment name.
- `expand` (`string`, optional): Extra fields to include, comma-separated.
- `search` (`string`, optional): Filter by app name text.

Example input: `{}`

### `fal_list_workflows`

List Workflows · Read-only

List workflows owned by the authenticated fal user.
Returns workflows with name, title, user_nickname, tags and the endpoint_ids they use, plus next_cursor.
Use fal_get_workflow to read a workflow definition.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `cursor` (`string`, optional): Pagination cursor from the previous response's next_cursor. Keep all other filters unchanged while paging.
- `limit` (`integer`, optional): Maximum number of items to return per page.
- `search` (`string`, optional): Search by workflow name or title.
- `used_endpoint_ids` (`string`, optional): Only workflows that use these endpoint ID(s), comma-separated.

Example input: `{}`

### `fal_search_models`

Search Models · Read-only

List or search fal model endpoints, or look up specific endpoints by ID.
Returns models with endpoint_id and metadata such as display name, category, description and status.
Use to find an endpoint_id before calling fal_submit_request; use fal_get_model_pricing for prices.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `category` (`string`, optional): Filter by category, for example text-to-image, image-to-video or training.
- `cursor` (`string`, optional): Pagination cursor from the previous response's next_cursor. Keep all other filters unchanged while paging.
- `endpoint_id` (`string`, optional): Look up specific endpoint ID(s), comma-separated (up to 50). Example: fal-ai/flux/dev.
- `expand` (`string`, optional): Extra fields to include, comma-separated: openapi-3.0 (full OpenAPI schema of the model) or enterprise_status.
- `limit` (`integer`, optional): Maximum number of items to return per page.
- `q` (`string`, optional): Free-text search over model name, description and category.
- `sort` (`string`, optional): Result ordering: relevant (default) or recent. One of: `relevant`, `recent`.
- `status` (`string`, optional): Filter by model status. Omit to include all. One of: `active`, `deprecated`.

Example input: `{}`

### `fal_search_requests`

Search Requests · Read-only

Search or browse your fal request history, including semantic search by text, image or video.
Returns results with request_id, endpoint_id, timestamps and status, plus next_cursor.
Use to find earlier generations; use fal_list_requests_by_endpoint to filter by endpoint and time.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `cursor` (`string`, optional): Pagination cursor from the previous response's next_cursor. Keep all other filters unchanged while paging.
- `endpoint_id` (`string`, optional): Restrict to one or more endpoint IDs, comma-separated.
- `exclude_api_requests` (`boolean`, optional): Exclude requests made through the API.
- `image_url` (`string`, optional): Image URL for image-to-image similarity search.
- `limit` (`integer`, optional): Maximum number of items to return per page.
- `min_similarity` (`number`, optional): Minimum similarity score between 0 and 1 for semantic search.
- `only_api_requests` (`boolean`, optional): Return only requests made through the API.
- `query` (`string`, optional): Text query for semantic search over generated content.
- `video_url` (`string`, optional): Video URL for video similarity search.

Example input: `{}`

### `fal_sign_file_url`

Sign File URL · Read-only

Create a temporary signed URL for a fal CDN file, even if its access is restricted. This creates nothing permanent.
Returns signed_url.
Use to share an access-restricted generated file.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `expiration_seconds` (`integer`, required): How long the signed URL stays valid, in seconds (1 to 604800).
- `url` (`string`, required): URL of the fal CDN file to sign.

Example input: `{"expiration_seconds":1,"url":"<url>"}`

### `fal_add_asset_to_collection`

Add Asset to Collection · Write

Add an asset to a manual fal Assets collection.
Returns success true when added.
Provide exactly one of asset_id, request_id or vector_id.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `collection_id` (`string`, required): ID of the collection to add to.
- `asset_id` (`string`, optional): Asset ID to add.
- `request_id` (`string`, optional): Request ID whose output to add as an asset.
- `vector_id` (`string`, optional): Vector ID of the asset to add.

Example input: `{"collection_id":"<collection_id>"}`

### `fal_cancel_request`

Cancel Request · Write

Cancel a queued or running fal request.
Returns a cancellation status such as CANCELLATION_REQUESTED; a request already mid-processing may still complete.
Use to stop a request submitted with fal_submit_request; app_id is the owner/alias part of its endpoint_id.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `app_id` (`string`, required): Application ID: only the first two segments (owner/alias) of the endpoint ID the request was submitted to. For fal-ai/flux/dev use fal-ai/flux.
- `request_id` (`string`, required): Request ID returned when the request was submitted to the queue.

Example input: `{"app_id":"<app_id>","request_id":"<request_id>"}`

### `fal_create_asset_collection`

Create Asset Collection · Write

Create a manual collection in the fal Assets library.
Returns the created collection with id, name and type.
Use fal_add_asset_to_collection afterwards to fill it.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `name` (`string`, required): Collection name (1-255 characters).
- `color` (`string`, optional): Optional color for the collection.
- `icon` (`string`, optional): Optional icon for the collection.
- `parent_collection_id` (`string`, optional): Optional ID of a parent collection to nest this one under.

Example input: `{"name":"<name>"}`

### `fal_run_model`

Run Model Synchronously · Write

Run a fal model with a direct blocking call and wait for the result, with no queue.
Returns the model-specific output JSON, for example images, video or audio objects with media URLs.
Use for fast models; use fal_submit_request for long-running generation.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `endpoint_id` (`string`, required): Endpoint ID of the model or app, in the form owner/app or owner/app/path. Example: fal-ai/flux/dev.
- `input` (`object`, required): JSON object with the model's input arguments, exactly as documented on the model's API page. Example: {"prompt": "a sunset over mountains"}.

Example input: `{"endpoint_id":"<endpoint_id>","input":{"prompt":"a sunset over mountains"}}`

### `fal_submit_request`

Submit Request · Write

Submit a generation request to a fal model or app through the durable queue and return immediately.
Returns request_id, status_url, response_url, cancel_url and queue_position.
Use fal_get_request_status to poll and fal_get_request_result to fetch the output. Use fal_run_model for a short blocking call instead.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `endpoint_id` (`string`, required): Endpoint ID of the model or app, in the form owner/app or owner/app/path. Example: fal-ai/flux/dev.
- `input` (`object`, required): JSON object with the model's input arguments, exactly as documented on the model's API page. Example: {"prompt": "a sunset over mountains"}.
- `priority` (`string`, optional): Queue priority for this request. Defaults to normal. One of: `low`, `normal`, `high`. Default: `normal`.
- `webhook_url` (`string`, optional): Optional HTTPS URL that fal calls with the result when the request completes.

Example input: `{"endpoint_id":"<endpoint_id>","input":{"prompt":"a sunset over mountains"}}`

### `fal_update_asset_collection`

Update Asset Collection · Write

Update the name, icon, color or cover image of a fal Assets collection.
Returns the updated collection.
Only the fields you provide change.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `collection_id` (`string`, required): ID of the collection to update.
- `color` (`string`, optional): New color for the collection.
- `cover_image_url` (`string`, optional): New cover image URL.
- `icon` (`string`, optional): New icon for the collection.
- `name` (`string`, optional): New collection name (1-255 characters).

Example input: `{"collection_id":"<collection_id>"}`

### `fal_upload_asset`

Upload Asset from URL · Write

Add a media file to the fal Assets library from a public URL.
Returns the created asset with asset_id, url, type and created_at.
Use fal_browse_assets to find it afterwards.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `type` (`string`, required): Media type of the file. One of: `image`, `video`, `audio`, `3d`.
- `url` (`string`, required): Public URL of the file to import.
- `collection_id` (`string`, optional): Optional collection to place the asset in.
- `favorite` (`boolean`, optional): Mark the asset as a favorite. Defaults to false. Default: `false`.
- `prompt` (`string`, optional): Optional prompt or description to store with the asset (up to 2000 characters).

Example input: `{"type":"image","url":"<url>"}`

### `fal_delete_request_payloads`

Delete Request Payloads · Destructive

Permanently delete the stored input and output payloads and output CDN files of one fal request.
Returns cdn_delete_results listing each deleted link and any error.
Irreversible; needs an API key with the FULL preset.

Read only: no. Destructive: yes. Idempotent (safe to retry): yes.

Inputs:

- `request_id` (`string`, required): UUID of the request whose payloads to delete. Irreversible.

Example input: `{"request_id":"<request_id>"}`

## Related

Other AI connectors ([all 134](/agentkit/connectors/?category=ai)):

- [Chorus](/agentkit/connectors/chorus/): Scalekit connector, Username and password, 9 tools
- [Gong](/agentkit/connectors/gong/): Scalekit connector, OAuth, 69 tools
- [Jiminny](/agentkit/connectors/jiminny/): Scalekit connector, Access token, 27 tools


---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
