/inference
Four ways to run
Every mode shares the same API and the same meter, you change lanes, not code.
Start on Serverless; move workloads as they mature. Dedicated is capacity you can inspect.
Grid is how products call it. OpenAI-compatible. S Series, open weights, or your own models. Thousands of concurrent requests. Tune it on your data when you are ready.
/inference
Every mode shares the same API and the same meter, you change lanes, not code.
Start on Serverless; move workloads as they mature. Dedicated is capacity you can inspect.
Elastic traffic, zero idle cost. Pay per use, scale to zero.
Async inference at a discount. Queue it, get it back cheaper.
Committed capacity, predictable latency.
An isolated environment for regulated workloads.
/smart-router
Set model to grid-auto. Smart Router reads each request, task, context, complexity, and does the choosing, so you never hardcode a model again.
import os
import openai
client = openai.OpenAI(
base_url="https://api.genai.forlex.cloud/v1",
api_key=os.environ["FORLEX_API_KEY"],
)
resp = client.chat.completions.create(
model="grid-auto",
messages=[{"role": "user", "content": "Hello!"}],
)
print(resp.choices[0].message.content)
Every response returns x-grid-routed-model: which model answered, and why.
Audit any call and pin a specific model whenever you want control back.
chat.completions
· req_8f3a92c1
Latency
412ms
TTFT
87ms
Tokens
1,204
Response
200 OK · 512t
x-grid-routed-model: LIVIA S2.6 Flash
x-grid-request-id: req_8f3a92c1
{ "model": "grid-auto", "choices": [ { "message": { "role": "assistant", "content": "You were charged twice because your plan renewed while an upgrade was still pending, and the duplicate has been refunded." } } ], "usage": { "prompt_tokens": 692, "completion_tokens": 512 } }
/training
SFT, DPO, ORPO, and reinforcement fine-tuning, plus custom loops on the training API. The artifact lands in your catalog with an id of its own. Invitation. Not self-serve GA.
Create new SFT job
LoRA-first. The artifact lands in your catalog.
Base model
Qwen 3.8-27B
Qwen/Qwen3.8-27B
Dataset URI
s3://fwdi-data/sft/train.jsonl
Output URI
s3://fwdi-training/outputs/sft-v4
Method
How the job changes the base weights.
LoRA
Adapter over the base, rank 16
Full
Full fine-tune of the base weights
Serving, after promotion
Where the artifact runs when the job lands.
{ "baseModel": "Qwen/Qwen3.8-27B", "datasetUri": "s3://fwdi-data/sft/train.jsonl", "outputUri": "s3://fwdi-training/outputs/sft-v4", "method": "lora", "loraRank": 16, "promotionProfile": "qwen-3.8-27b-serverless" }
/Models
Selected open weights or your own models. Each request routes to the option that balances cost and quality for that call.
LIVIA S2.6 Flash
LIVIA S2.6 Flash
LIVIA S2.6
LIVIA S2.6
DeepSeek V4 Flash
deepseek-ai/DeepSeek-V4-Flash
Inkling Small
thinkingmachines/Inkling-Small
Qwen 3.8-27B
Qwen/Qwen3.8-27B

MiniMax-M3
MiniMaxAI/MiniMax-M3
Kimi K3
moonshotai/Kimi-K3
LIVIA S2.6 Flash
LIVIA S2.6 Flash
LIVIA S2.6
LIVIA S2.6
DeepSeek V4 Flash
deepseek-ai/DeepSeek-V4-Flash
Inkling Small
thinkingmachines/Inkling-Small
Qwen 2.4T
Qwen/Qwen3.8-2.4T-A95B
Qwen 3.8-27B
Qwen/Qwen3.8-27B

MiniMax-M3
MiniMaxAI/MiniMax-M3
Kimi K3
moonshotai/Kimi-K3
Qwen 2.4T
Qwen/Qwen3.8-2.4T-A95B
LIVIA S2.6
LIVIA S2.6
DeepSeek V4 Flash
deepseek-ai/DeepSeek-V4-Flash
/FAQ
Short answers to what you’d ask before your first call: compatibility, routing, auditing, and cost.
Yes. Grid exposes an OpenAI-compatible API at https://api.genai.forlex.cloud/v1, so the official OpenAI SDKs and any client that speaks that protocol work without a wrapper. Chat completions, streaming responses and tool calls all go through the same client you already use. Compatibility coverage is tracked in the docs, so you can check a specific parameter before you depend on it.
You change two things: the base_url and the model name. Generate a key in Console under Keys, point base_url at https://api.genai.forlex.cloud/v1, and run your existing call. Your first response comes back with the tokens used and the model that answered. Keep your retry logic in place: Serverless scales to zero, so an idle lane can answer 503 with a Retry-After header while it warms up.
It is Smart Router, an optional mode you turn on per request by sending model: grid-auto. Instead of hardcoding one model for all of your traffic, Grid selects the lowest-cost lane that is capable of the request, drawn from a curated catalog. It is opt-in and it is not a black box: every routed response tells you which model handled it.
It reads the request, matches it against the curated catalog and picks the cheapest lane that can serve it well. Where a safe semantic cache applies, it can serve from cache instead of re-running inference. The decision is never hidden from you: the resolved model comes back in the x-grid-routed-model response header, alongside the routing policy where available.
Yes, on every call. The x-grid-routed-model header names the model that produced the response, so you can log it next to your own request id and reconstruct any answer later. The usage dashboard breaks consumption down by model, by SKU and by period in tokens, and finance teams can pull the same data as a CSV export with a quota ledger.
Yes. Routing is opt-in, so if you do not send model grid-auto nothing is routed. Call any catalog model directly by its id and that is exactly what runs. Pinning is the right choice when you need deterministic behaviour or release control, since a pinned version does not move under you when the catalog changes.
No. There is no surcharge for using Smart Router. You pay for the model that actually answered, metered in tokens, the same way every mode is metered. Invoices settle in the currency on your contract.
Yes. Grid runs S Series models, open weights and models you bring yourself, which is what model-portable means here. Register your own weights or a LoRA adapter and it joins your catalog, callable by id like any other model and routable by Smart Router if you want it in the mix. Teams with isolation or residency requirements usually run these on Grid Private.
Yes, by invitation. Managed jobs cover SFT, DPO, ORPO, and reinforcement fine-tuning. Custom loops run on the serverless or dedicated training API. The artifact lands in your catalog with an id of its own. Join the waitlist, or get a quote if you want our team to train it. Training is jobs, not requests, so Batch is not the way to do it. The training page lists every method.
Connect puts Grid in the coding harnesses your engineers already use. Smart Router is the engine inside it: set model to grid-auto and Grid selects a capable lane, or pin an id. It is invitation, not a public self-serve overlay, and it is not a second factory. Grid remains how you serve, route, and fine-tune.
Rollout inference for teams that already have a trainer. You keep the algorithm. Grid serves the samples on reserved capacity. That is not managed reinforcement fine-tuning, which runs the whole loop for you. Talk to us to size a proof of concept.
Yes. Bring a workload and we will design how it runs on Grid and operate it with you. Quoted. Not a packaged SKU. That is not custom training, which is one SFT, DPO, ORPO, or RFT job, and it is not a site in the pipeline. Talk to us from the custom projects page.
On the factory Forward Intelligence operates on AWS. That is the plant that serves inference now. Dedicated and Private are scoped in writing for isolation and residency. Forward Intelligence is also developing three infrastructure sites, two in Brazil and one in the United States. Those sites are in the pipeline. They are not the runtime for Grid today. Status and timelines are on the About page.