Skip to main content

AI Providers

TryPost’s AI features are built on Laravel AI (GitHub), the official first-party AI SDK for Laravel. Every provider and model documented on this page is whatever that package supports — TryPost doesn’t add its own provider integrations on top. If a provider/capability combination isn’t listed below, it’s because the package’s provider class doesn’t implement it, not a TryPost limitation. TryPost only uses this SDK for text (the Generate / Review / Create AI flows in the post editor) and image generation (the Create wizard) — the package also supports audio, transcription, embeddings, and reranking, but no TryPost feature calls any of those today. The Generate / Review / Create AI flows need a configured text-generation provider. Without one, the AI buttons stay disabled.
Self-hosted instances skip the credit/quota check entirely (SELF_HOSTED=true), so AI calls go straight to the configured provider — you pay the provider directly.

Pinning a specific model

Each provider ships with a sensible default text/image model, so setting just AI_TEXT_PROVIDER / AI_IMAGE_PROVIDER above is enough to get started. To pin a specific model instead of the provider’s default, set the matching <PROVIDER>_TEXT_MODEL / <PROVIDER>_IMAGE_MODEL env var:
All of these are optional — leave them unset to use the provider’s built-in default. azure is the exception to the naming pattern: it resolves models via deployment names you create in the Azure portal (AZURE_OPENAI_DEPLOYMENT, AZURE_OPENAI_IMAGE_DEPLOYMENT), not raw model identifiers. openai-compatible is the other exception: OPENAI_COMPATIBLE_TEXT_MODEL is required, since an arbitrary self-hosted endpoint has no sensible default to fall back to.
Using OpenRouter for images: the app generates images through OpenRouter’s chat-completions API, which only works with multimodal chat models — the Gemini image-preview family (the default) is confirmed working. Dedicated image-only models like openai/gpt-image-2 or openai/gpt-image-1 are not compatible this way — OpenRouter rejects them outright (404), since those require OpenRouter’s separate Image API, which this app doesn’t call. If image generation fails immediately after switching to OpenRouter, check that OPENROUTER_IMAGE_MODEL points at a Gemini-family model.OpenRouter credit pre-checks: OpenRouter validates your balance against a request’s maximum possible token usage before generating anything, not the tokens actually used. A low-balance key can fail with 402 insufficient credits even on a cheap model and a short prompt, because the check is based on the model’s max output ceiling (which can be tens of thousands of tokens), not your real usage. Funding the account with a few dollars usually clears this — see OpenRouter’s limits documentation for how credits and rate limits work.For anything else OpenRouter-specific (available models, pricing, routing behavior), check OpenRouter’s documentation directly — TryPost just passes your prompt through.