Send a request through the dummy model
Configure Relay's built-in dummy provider and verify the routed gateway without an external account.
Purpose
Send a complete routed request without using a paid provider. The built-in dummy provider returns deterministic responses for local verification.
Prerequisites
- Relay is running at
http://localhost:11730. - You unlocked the admin interface.
Add the provider
- Open Providers.
- Add an API Key Provider with these values:
| Field | Value |
|---|---|
| Provider name | Local Dummy |
| Base URL | http://localhost:11730/v1/dummy |
| Authentication | Bearer, using your RELAY_API_TOKEN |
| Enabled | Yes |
Caution: Do not use http://localhost:11730/v1. That address is Relay's routed gateway. Relay rejects this self-referential provider configuration.- Add a model under
Local Dummy. - Set the model name and upstream model to
dummy. - Select a Chat-compatible route kind.
- Enable the model.
Send the request
curl http://localhost:11730/v1/chat/completions \
-H 'Authorization: Bearer <RELAY_API_TOKEN>' \
-H 'Content-Type: application/json' \
-d '{"model":"dummy","messages":[{"role":"user","content":"wait_0"}]}'Response — 200 OK
Example non-streaming response (selected fields). Content, model, and usage depend on the selected provider.
{
"id": "<COMPLETION_ID>",
"object": "chat.completion",
"model": "dummy",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "I waited 0 seconds."
},
"finish_reason": "stop"
}
]
}Expected result
Relay selects Local Dummy/dummy. The response contains a deterministic dummy completion.
Open Logs and confirm these fields:
- Selected provider and model.
- Queue and provider timing.
- Input and output token counts.
- Completion status.
Verification
Open Logs. Confirm the selected Provider and Model, queue and provider timing, token counts, and completion status.
Recovery
- If Relay reports no route, confirm that the provider and model are enabled.
- If Relay rejects the provider URL, use the required
/v1/dummysuffix. - If the dummy provider rejects the prompt, use
wait_0,wait_5, or a documented rate-limit command.