Parallel (web-researched answers and Search)
Parallel does two jobs. parallel/parallel researches a question on the live web and answers with its sources; it is called through Chat Completions. parallel/search is web search for agents and applications: you send an objective and queries to /v1/search and get ranked URLs and excerpts back, with no generated answer.
The price is per request rather than per token, and it is Parallel's list price.
Models
Section titled “Models”| Model | Endpoint | Price |
|---|---|---|
parallel/parallel |
/v1/chat/completions |
By depth, below |
parallel/search |
/v1/search |
By mode, below |
parallel/parallel-free |
/v1/chat/completions |
Free |
parallel/search-free |
/v1/search |
Free |
Free use
Section titled “Free use”parallel/parallel-free and parallel/search-free are free until 4 January 2027, 23:59 (TRT); if the quota set aside for free use runs out first, both close together before that date. Free use is limited per account, and the two models share one allowance. Deeper research uses more of it.
When the period ends these models answer 410 model_retired, and the error message names the paid counterpart. A request is never forwarded to a paid model on its own; to continue, change the model field.
Web-researched answers
Section titled “Web-researched answers”curl "$LLMTR_BASE_URL/v1/chat/completions" \ -H "Authorization: Bearer llmtr-your_key" \ -H "Content-Type: application/json" \ -d '{ "model": "parallel/parallel", "reasoning_effort": "low", "messages": [ { "role": "system", "content": "Answer in one sentence." }, { "role": "user", "content": "When was the Galata Tower built?" } ] }'reasoning_effort picks the research depth. The same choice can be written as a model suffix: parallel/parallel:low.
| Depth | Price ($/request) | When |
|---|---|---|
low |
0.01 | Single-step fact questions |
medium (default) |
0.05 | Questions that combine several sources |
high |
0.25 | Questions that need extensive research |
Deeper research takes longer. high can take about a minute, so set your client timeout accordingly.
The response is in Chat Completions shape. Sources arrive in two top-level fields:
{ "id": "chatcmpl-...", "object": "chat.completion", "model": "parallel/parallel", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "The Galata Tower was built by the Genoese in 1348." }, "finish_reason": "stop" } ], "citations": ["https://example.com/galata"], "search_results": [{ "url": "https://example.com/galata", "title": "Galata Tower" }], "usage": { "prompt_tokens": 18, "completion_tokens": 14, "total_tokens": 32 }}The token counts in usage are approximate and do not affect the bill.
Limits and behaviour:
- Text only. A request with an image or a file answers
400. - Messages can total at most 20,000 characters and at least one user message is required. System messages count toward the total.
- Conversation history travels in
messagesand is not kept on the server. - There is no tool calling.
toolsandtool_choiceare ignored. - Fields such as
temperature,top_pandmax_tokensare ignored too. The names of ignored fields appear in the response'sllmtr_dropped_parametersfield and thex-llmtr-dropped-parametersheader. response_formatsupportsjson_schema.json_objectis not supported and is ignored.- A streaming request (
stream: true) works, but the answer arrives in one piece after the research finishes.
Web search
Section titled “Web search”curl "$LLMTR_BASE_URL/v1/search" \ -H "Authorization: Bearer llmtr-your_key" \ -H "Content-Type: application/json" \ -d '{ "model": "parallel/search", "mode": "fast", "objective": "Find sources on the history of the Galata Tower.", "search_queries": ["Galata Tower history", "Galata Tower construction date"] }'| Field | Required | Description |
|---|---|---|
model |
Yes | parallel/search or parallel/search-free |
search_queries |
Yes | Short keyword queries. Two or three work best; those after the fifth are dropped and reported in warnings. |
objective |
No | The purpose of the search in natural language, at most 5,000 characters |
mode |
No | turbo, fast, basic, advanced (default) |
max_chars_total |
No | Upper bound on the total characters across excerpts |
session_id |
No | Groups searches that belong to one task. It is private to your account and never mixes with another account's session. |
client_model |
No | The name of the model that will consume the results |
advanced_settings |
No | source_policy, fetch_policy, excerpt_settings, location, max_results |
max_budget_usd |
No | On a paid model, the most to set aside for the request |
| Mode | Price ($/request) | Approximate time |
|---|---|---|
turbo |
0.001 | 200 ms |
fast |
0.001 | 700 ms |
basic |
0.005 | 1 s |
advanced (default) |
0.005 | 3 s |
Each request includes up to 10 results. advanced_settings.max_results can ask for up to 20, and each result past the tenth costs $0.001.
{ "object": "web_search", "search_id": "8f14e45f-...", "model": "parallel/search", "session_id": "session_3a7c...", "results": [ { "url": "https://example.com/galata", "title": "Galata Tower", "publish_date": null, "excerpts": ["The tower was built by the Genoese in 1348..."] } ], "warnings": null, "usage": { "search_requests": 1, "additional_results": 0 }}/v1/search is not in the OpenAI SDKs; call it with plain HTTP.
Errors
Section titled “Errors”| Status | Type | What to do |
|---|---|---|
| 400 | invalid_request |
Fix the request fields |
| 402 | insufficient_credits |
Paid model: top up your balance |
| 402 | insufficient_quota |
Free model: your allowance for this period is used up |
| 410 | model_retired |
The free period ended; switch to the model the error names |
| 429 | rate_limit_error |
The daily free allowance is used up or the rate limit was hit; wait for Retry-After |
| 503 | model_unavailable |
Temporarily unavailable; try again later |
See Errors for the other error shapes.
These models are served through a third-party provider. Under the provider's terms, inputs and outputs may be used to train models without being linked to a person, and may be stored. Do not send sensitive data.