Skip to main content
Use the quickstart client. Replace uppercase IDs with your resource IDs.

Choose a model

The reasoning model handles the conversation. Generation models produce images, video, audio, and 3D media. models.listAgentModels() returns reasoning model IDs, labels, and optional tags. Set general.defaultModel to an available ID. Use null to restore the service default.
After the user selects a model, save its ID:
Choose a model for one response with model. This leaves the saved default unchanged:
Use fal.generation_settings_overrides for generation choices on one response:
Generation settings require access to that feature. Unavailable controls return 403. Use fal.generation_settings when submitting a complete settings snapshot from settings.conversations.retrieve(conversationId). Search generation models with models.list({ keywords, categories, page, limit }). The page starts at 1. The default limit is 40, with a maximum of 100. The result contains items and optional total, page, size, and pages fields.
Each model has an id, modelId, title, category, shortDescription, thumbnailUrl, and isFavorited flag. An optional modelLabId identifies its provider. Capabilities describe the endpoint’s fields. Each field has a name, label, type, description, and required flag. A field can include a defaultValue and additional schema properties. Use these values to build controls. Do not assume that every model accepts the same options.

Set generation defaults

Defaults apply at three scopes. A conversation inherits project defaults, which inherit personal defaults. Use the returned sources to identify the effective source of each field. A defaults read returns these fields: Use expectedLocal to detect a concurrent edit. Send the local object from your last read.
changes sets the supplied fields. Omitted fields retain their local values. A null value selects automatic behavior at this scope. It does not restore inheritance. Use inherit to remove a local override:
For model defaults, use changes.preferredModels or inherit.preferredModels with a generation task name. A selected endpoint must support that task. Generation tasks are text-to-image, text-to-video, image-to-video, music, text-to-speech, sound-effects, and image-to-3d. A model’s capabilities can restrict which preference values it supports. Source values are personal, project, chat, generation, and auto.

Change generation settings

Use settings.conversations for a conversation and settings.projects for a project. Both expose retrieve(id) and update(id, { settings, expectedRevision }). An update sends the complete settings object. Preserve fields that you do not intend to change.
Use settings.defaults.update for inherited preferences and model defaults. Use the complete settings update for groups and reviewBeforeGenerating. On 409, read the settings again and apply your changes to that version before submitting another update.

Update account preferences

preferences.retrieve() returns the account preferences. preferences.update(section, input) changes supplied fields within one section and returns the updated preferences. Arrays replace the corresponding array. An omitted field stays unchanged.

General

The type reference lists every voice and profession value. A model or setting unavailable to the account returns 403.

Cost

The threshold requests approval. It is not a hard spending limit.

Skills

The disabled lists default to empty arrays. Use skills methods to discover, install, edit, or enable individual skills.

Notifications

turnComplete controls completion notifications in the fal Agent interface. It defaults to true. This preference does not deliver a webhook or send notifications from your application.

Recover an uncertain update

Settings and preference writes are not retried automatically. After a network error, read the affected resource before repeating a write. See the method reference for complete signatures and return types.