Skip to main content
Private Models let your team call a dedicated or self-hosted deployment through the normal Phaseo API. The model appears only to authenticated members of the workspace and can be used anywhere you would use a public model ID. Typical sources include dedicated deployments on Baseten, Modal, RunPod, Fireworks, or Together, plus services running vLLM or another OpenAI-compatible server.

Before you start

Your deployment must provide:
  • a public HTTPS base URL;
  • an OpenAI-compatible /chat/completions endpoint;
  • Bearer-token authentication; and
  • an upstream model or deployment ID accepted by that endpoint.
Support for /responses is optional. Leave it disabled unless the deployment explicitly implements that endpoint.
Private Models do not adapt native-only provider protocols or custom authentication schemes. Put an OpenAI-compatible layer in front of those deployments or use a supported Phaseo provider integration.

Connect a deployment

1

Open Private Models

Open Dashboard → Settings → Workspace → Private Models, then select Add model. You must be a workspace owner or admin.
2

Name the model

Choose an existing catalogue model to add this deployment to its provider list, or enter a short model slug such as legal-assistant. If no catalogue model has that unique slug, Phaseo combines the trusted workspace namespace with it:
You cannot choose or replace the workspace namespace. Exact catalogue IDs attach to that model without changing its public identity.
3

Configure the endpoint

Enter the base URL before the inference path. For example, use:
Do not include /chat/completions or /responses. Enter the exact upstream model or deployment ID separately; Phaseo substitutes it when forwarding requests.
4

Store the credential

Enter the deployment’s API key. Phaseo encrypts the credential and never returns it after saving. You can replace it later from the model’s settings page.
5

Call the model

Use the generated model ID with the regular Chat Completions endpoint:
cURL
The calling API key must belong to the same workspace as the private model.

How routing works

Private models use the same Phaseo request surface as catalogue models. A standalone workspace model routes only to its configured endpoint. An endpoint attached to a catalogue model joins that model’s provider list according to its Preferred, Normal pool, or Fallback only routing policy. Phaseo sends the stored credential as a Bearer token and substitutes the configured upstream model ID. A private model does not become a public provider route and is not visible to other workspaces. Enabled private models are included in the authenticated model catalogue and appear under the Private filter.

Provider examples

Provider products and URL formats can change. Confirm the base URL, model ID, authentication method, and supported endpoints in the provider’s current deployment documentation.

Manage private models through the API

Server-side administration can use the Private Models API with a management key carrying private_models:read, private_models:write, or private_models:delete as needed. Create and update requests accept model_reference, either an exact catalogue model ID or a short slug. Phaseo derives model_id; clients cannot submit it directly. Use host_provider_id for an existing Phaseo provider, or custom_provider_name and optional custom_provider_url for another operator.

Troubleshooting

  • 404 from the provider: Check that the base URL stops before the inference path.
  • Unknown model: Copy the provider’s upstream deployment ID into Upstream model ID. Do not use the Phaseo workspace model ID there.
  • Unauthorized upstream request: Replace the stored credential and confirm the provider accepts Bearer authentication.
  • Chat works but Responses fails: Disable Responses API unless the provider implements /responses natively.
  • Model missing from the catalogue: Confirm the model is enabled and the caller is authenticated to the same workspace.
Last modified on September 4, 2026