Bringing Your Own Model
FYAI includes platform models you can use straight away. Bring your own model when you need a model the platform doesn't offer, want usage billed to your own provider contract, or must keep traffic in a specific cloud account or region.
Bring-your-own-key models need a plan that allows them. On the standard plans that is Pro and Business. You also need the Editor role or higher in the project.
Step 1: Store the credential in an integration
The model form has no API key field. The key lives in an integration that the model links to.
-
Go to Resources → Integrations and click +.
-
Give it an Integration Name (for example
OpenAI (Acme)) and a Tree Path (for example/llm-keys/openai). -
Under Secrets, add the secrets your provider needs, using these exact names:
Provider / auth mode Secret names OpenAI, Anthropic, Google AI Studio, DeepSeek, GitHub Copilot, OpenAI-compatible api_keyAzure, API Key api_keyAzure, Client Secret (Entra ID) azure_tenant_id,azure_client_id,azure_client_secretAmazon Bedrock, API Key (bearer token) aws_bearer_tokenAmazon Bedrock, IAM Access Keys aws_access_key_id,aws_secret_access_key, optionallyaws_session_tokenAmazon Bedrock, Assume Role (cross-account) aws_role_arn,aws_external_idGoogle Vertex AI gcp_service_account_json(the service account key file contents)Ollama None needed unless your server requires a key You can also store
base_urlororganizationas secrets instead of on the model. -
Click Create.
Use a separate integration per environment or per key so you can rotate them independently.
Step 2: Create the model
- Go to Resources → Models and click +.
- Enter a Model Name, for example
GPT-5 Pro (Acme key). Optionally add a Description, Path and Tags. - Choose the Platform and API Type, then fill in the fields for your provider:
OpenAI
| Field | Value |
|---|---|
| Platform | Standard (OpenAI-compatible) |
| API Type | OpenAI (Responses) for reasoning models, or OpenAI (Completions) |
| model | For example gpt-5-pro |
| Reasoning Effort | Responses API only: Default (unset), Low, Medium or High. Some reasoning models require High. |
Leave base_url blank.
Anthropic
| Field | Value |
|---|---|
| Platform | Standard (OpenAI-compatible) |
| API Type | OpenAI (Completions) |
| model | A Claude model ID, for example claude-sonnet-5-5. IDs beginning claude- are routed to Anthropic's API. |
Any OpenAI-compatible endpoint
| Field | Value |
|---|---|
| Platform | Standard (OpenAI-compatible) |
| API Type | OpenAI (Completions) |
| model | The provider's model ID |
| base_url | The API root, for example https://api.example.com/v1. Don't include /chat/completions; it's stripped if you do. |
Google Gemini (AI Studio key)
| Field | Value |
|---|---|
| Platform | Standard (OpenAI-compatible) |
| API Type | |
| model | For example gemini-3-pro |
| Google Search Grounding | On to let the model ground answers with Google Search. |
DeepSeek
Platform Standard (OpenAI-compatible), API Type DeepSeek, and the DeepSeek model ID.
GitHub Copilot
Platform Standard (OpenAI-compatible), API Type GitHub Copilot, and the model ID. The linked integration's api_key holds the GitHub token.
Ollama
Platform Standard (OpenAI-compatible), API Type Ollama, the model name (for example llama3) and base_url set to your Ollama server. The server must be reachable from FYAI's cloud, so localhost on your own machine won't work.
Azure OpenAI or Azure AI Foundry
| Field | Value |
|---|---|
| Platform | Azure (OpenAI / AI Services) |
| API Type | Chat Completions, Responses API (stateful), or DeepSeek (AI Foundry) for a DeepSeek deployment |
| Deployment Name | The deployment name in your Azure resource |
| Endpoint URL | Your resource endpoint, for example https://my-resource.openai.azure.com |
| api_version | The Azure API version, if your endpoint needs one |
| Auth Mode | API Key or Client Secret (Entra ID) |
Amazon Bedrock
| Field | Value |
|---|---|
| Platform | Amazon Bedrock |
| API Type | Required by the form but not used for Bedrock; choose OpenAI (Completions) |
| Model / inference-profile id | For example au.anthropic.claude-sonnet-5-5 |
| AWS Region (e.g. us-east-1) | Required |
| Auth Mode | API Key (bearer token), IAM Access Keys or Assume Role (cross-account) |
Google Vertex AI
| Field | Value |
|---|---|
| Platform | Google Vertex AI |
| API Type | Required by the form but not used for Vertex AI; choose Google |
| model | For example gemini-3-pro |
| GCP Project ID (e.g. fyai-prod-123456) | Required |
| GCP Location (e.g. us-central1) | Required |
| Google Search Grounding | Optional |
- Under API Key Integration, click Link Integration, choose the integration from Step 1 and click Link.
- Optionally set Context Length (total tokens) and Max Output (completion tokens) so the platform trims history correctly. Other generation settings are listed in Model Settings.
- Click Create.
Step 3: Check it
- Open the model's Definition tab.
- Check the Credential card says the key is referenced from the vault, and that Findings is empty.
- Check the Context budget leaves reasonable Prompt headroom.
- Click Run preflight. Each check shows pass or fail with a reason.
Preflight confirms a client can be built. To confirm the provider answers, chat with an agent that uses the model.
Step 4: Use it
- Open an agent under Build → Agents.
- Set LLM Configuration to your new model.
- Save, then send the agent a message from Chat or the collaboration pane.
Different agents in a team can use different models: a fast, cheap model for routing and a stronger one for analysis. To spread one agent across several models or deployments, use a model group.
Troubleshooting
| Problem | What to check |
|---|---|
| Authentication errors | The linked integration has the right secret names (Step 1) and the value has no stray spaces. |
| 404 from the provider | The model or Deployment Name is exact (they're case-sensitive), and base_url is the API root. |
| "Model is required when creating a non-folder config." | Fill in the model (or Deployment Name / Model / inference-profile id) field. |
| Model missing from the agent picker | The model saved in the current project. Switch projects if needed. |
default_headers rejected | It contains a credential header. Move the credential to the integration. |