Search & OCR
Search
Section titled “Search”Search the web or documents across 12 providers (Brave, Tavily, Google PSE, etc.):
Basic web search request with a simple query
import asyncioimport osfrom liter_llm import create_clientfrom liter_llm._internal_bindings import SearchRequest
async def main() -> None: client = create_client(api_key=os.environ["API_KEY"]) req = SearchRequest.from_json("{\"model\":\"brave/web-search\",\"query\":\"What is Rust programming language?\"}") result = await client.search(req) print(result)
asyncio.run(main())Basic web search request with a simple query
import { createClient } from "@xberg-io/liter-llm";async function main() { const client = createClient("your-api-key"); const result = await client.search({ model: "brave/web-search", query: "What is Rust programming language?" }); console.log(result);}
void main();Basic web search request with a simple query
use liter_llm::BatchClient;use liter_llm::FileClient;use liter_llm::LlmClient;use liter_llm::ResponseClient;
#[tokio::main]async fn main() { let req_json: serde_json::Value = serde_json::from_str(r#"{"model":"brave/web-search","query":"What is Rust programming language?"}"#).unwrap(); let req = serde_json::from_value(req_json).unwrap(); let client = liter_llm::create_client(std::env::var("API_KEY").expect("API_KEY must be set"), None, None, None, None).unwrap(); let result = client.search(req).await; println!("{:?}", result);}Basic web search request with a simple query
package main
import ( "fmt" pkg "github.com/xberg-io/liter-llm/packages/go/v2")
func main() { req := pkg.SearchRequest{ Model: `brave/web-search`, Query: `What is Rust programming language?`, } client, clientErr := pkg.CreateClient("your-api-key", nil, nil, nil, nil) if clientErr != nil { panic(clientErr) } defer client.Free() result, err := client.Search(req) if err != nil { panic(err) } fmt.Printf("%+v\n", result)}Basic web search request with a simple query
import io.xberg.literllm.*;
public final class Example { public static void main(String[] args) throws Exception { var reqJson = "{\"model\":\"brave/web-search\",\"query\":\"What is Rust programming language?\"}"; var req = JsonUtil.fromJson(reqJson, SearchRequest.class); var apiKey = System.getenv("API_KEY"); if (apiKey == null || apiKey.isEmpty()) throw new IllegalStateException("API_KEY must be set"); try (var client = LiterLlm.createClient(apiKey, null, null, null, null)) { var result = client.search(req); System.out.println(result); } }}Basic web search request with a simple query
using System;using LiterLlm;
var apiKey = Environment.GetEnvironmentVariable("API_KEY") ?? throw new InvalidOperationException("API_KEY must be set"); using var client = LiterLlmConverter.CreateClient(apiKey, null, null, null, null);var result = await client.SearchAsync(new SearchRequest { Model = "brave/web-search", Query = "What is Rust programming language?" });Console.WriteLine(result);Basic web search request with a simple query
require "liter_llm"result = LiterLlm.search(LiterLlm::SearchRequest.new(model: 'brave/web-search', query: 'What is Rust programming language?'))puts result.inspectBasic web search request with a simple query
<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use Liter\Llm\LiterLlm;use Liter\Llm\SearchRequest;$result = LiterLlm::search(new \Liter\Llm\SearchRequest(model: "brave/web-search",query: "What is Rust programming language?"));var_dump($result);Basic web search request with a simple query
api_key = System.fetch_env!("API_KEY"){:ok, client} = LiterLlm.create_client(api_key)result = LiterLlm.defaultclient_search_async(client, "{\"model\":\"brave/web-search\",\"query\":\"What is Rust programming language?\"}")IO.inspect(result)Basic web search request with a simple query
import { WasmSearchRequest, createClient } from "@xberg-io/liter-llm-wasm";async function main() { const req: WasmSearchRequest = (() => { const _u0 = WasmSearchRequest.default(); _u0.model = "brave/web-search"; _u0.query = "What is Rust programming language?"; return _u0; })(); const client = createClient("your-api-key"); try { const result = await client.search(req); console.log(result); } finally { client.free(); }}
void main();Search Parameters
Section titled “Search Parameters”| Parameter | Type | Description |
|---|---|---|
model |
string | Search provider (e.g. "brave/web-search") |
query |
string | Search query |
max_results |
int | Maximum results to return |
search_domain_filter |
array | Restrict to specific domains |
country |
string | ISO country code for localized results |
Search Providers
Section titled “Search Providers”The registry ships 12 search providers. Browse the full Providers capability matrix; the most common are:
| Provider | Prefix |
|---|---|
| Brave | brave/ |
| Tavily | tavily/ |
| Google PSE | google_pse/ |
| Serper | serper/ |
| DuckDuckGo | duckduckgo/ |
| Exa | exa_ai/ |
| Firecrawl | firecrawl/ |
| Linkup | linkup/ |
| Parallel AI | parallel_ai/ |
| Perplexity | perplexity/ |
| SearXNG | searxng/ |
| DataForSEO | dataforseo/ |
Extract text from documents via OCR across 4 providers (Mistral, Azure Doc Intelligence, etc.):
OCR request with a document URL input
import asyncioimport osfrom liter_llm import create_clientfrom liter_llm._internal_bindings import OcrRequest
async def main() -> None: client = create_client(api_key=os.environ["API_KEY"]) req = OcrRequest.from_json("{\"document\":{\"type\":\"document_url\",\"url\":\"https://example.com/doc.pdf\"},\"model\":\"mistral/mistral-ocr-latest\"}") result = await client.ocr(req) print(result)
asyncio.run(main())OCR request with a document URL input
import { OcrDocument, createClient } from "@xberg-io/liter-llm";async function main() { const client = createClient("your-api-key"); const result = await client.ocr({ document: { type: "document_url", url: "https://example.com/doc.pdf" } as OcrDocument, model: "mistral/mistral-ocr-latest" }); console.log(result);}
void main();OCR request with a document URL input
use liter_llm::BatchClient;use liter_llm::FileClient;use liter_llm::LlmClient;use liter_llm::ResponseClient;
#[tokio::main]async fn main() { let req_json: serde_json::Value = serde_json::from_str(r#"{"document":{"type":"document_url","url":"https://example.com/doc.pdf"},"model":"mistral/mistral-ocr-latest"}"#).unwrap(); let req = serde_json::from_value(req_json).unwrap(); let client = liter_llm::create_client(std::env::var("API_KEY").expect("API_KEY must be set"), None, None, None, None).unwrap(); let result = client.ocr(req).await; println!("{:?}", result);}OCR request with a document URL input
package main
import ( "fmt" pkg "github.com/xberg-io/liter-llm/packages/go/v2")
func main() { req := pkg.OcrRequest{ Model: `mistral/mistral-ocr-latest`, Document: pkg.OcrDocumentURL{URL: `https://example.com/doc.pdf`}, } client, clientErr := pkg.CreateClient("your-api-key", nil, nil, nil, nil) if clientErr != nil { panic(clientErr) } defer client.Free() result, err := client.Ocr(req) if err != nil { panic(err) } fmt.Printf("%+v\n", result)}OCR request with a document URL input
import io.xberg.literllm.*;
public final class Example { public static void main(String[] args) throws Exception { var reqJson = "{\"document\":{\"type\":\"document_url\",\"url\":\"https://example.com/doc.pdf\"},\"model\":\"mistral/mistral-ocr-latest\"}"; var req = JsonUtil.fromJson(reqJson, OcrRequest.class); var apiKey = System.getenv("API_KEY"); if (apiKey == null || apiKey.isEmpty()) throw new IllegalStateException("API_KEY must be set"); try (var client = LiterLlm.createClient(apiKey, null, null, null, null)) { var result = client.ocr(req); System.out.println(result); } }}OCR request with a document URL input
using System;using System.Text.Json;using LiterLlm;
var ConfigOptions = new JsonSerializerOptions { PropertyNameCaseInsensitive = true };var apiKey = Environment.GetEnvironmentVariable("API_KEY") ?? throw new InvalidOperationException("API_KEY must be set"); using var client = LiterLlmConverter.CreateClient(apiKey, null, null, null, null);var result = await client.OcrAsync(new OcrRequest { Document = JsonSerializer.Deserialize<OcrDocument>("{\"type\":\"document_url\",\"url\":\"https://example.com/doc.pdf\"}", ConfigOptions)!, Model = "mistral/mistral-ocr-latest" });Console.WriteLine(result);OCR request with a document URL input
require "liter_llm"result = LiterLlm.ocr(LiterLlm::OcrRequest.new(document: { 'type' => 'document_url', 'url' => 'https://example.com/doc.pdf' }, model: 'mistral/mistral-ocr-latest'))puts result.inspectOCR request with a document URL input
<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use Liter\Llm\LiterLlm;use Liter\Llm\OcrRequest;$req = \Liter\Llm\OcrRequest::from_json(json_encode(["document" => ["type" => "document_url", "url" => "https://example.com/doc.pdf"], "model" => "mistral/mistral-ocr-latest"]));$result = LiterLlm::ocr($req);var_dump($result);OCR request with a document URL input
api_key = System.fetch_env!("API_KEY"){:ok, client} = LiterLlm.create_client(api_key)result = LiterLlm.defaultclient_ocr_async(client, "{\"document\":{\"type\":\"document_url\",\"url\":\"https://example.com/doc.pdf\"},\"model\":\"mistral/mistral-ocr-latest\"}")IO.inspect(result)OCR request with a document URL input
import { WasmOcrRequest, createClient } from "@xberg-io/liter-llm-wasm";async function main() { const req: WasmOcrRequest = (() => { const _u0 = WasmOcrRequest.default(); _u0.document = { type: "document_url", url: "https://example.com/doc.pdf" }; _u0.model = "mistral/mistral-ocr-latest"; return _u0; })(); const client = createClient("your-api-key"); try { const result = await client.ocr(req); console.log(result); } finally { client.free(); }}
void main();OCR Parameters
Section titled “OCR Parameters”| Parameter | Type | Description |
|---|---|---|
model |
string | OCR provider (e.g. "mistral/mistral-ocr-latest") |
document |
object | Document input (URL or base64) |
pages |
array | Specific pages to process (1-indexed) |
include_image_base64 |
bool | Include extracted images |
Document Input Formats
Section titled “Document Input Formats”URL:
{ "type": "document_url", "url": "https://example.com/invoice.pdf" }Base64:
{ "type": "base64", "data": "...", "media_type": "application/pdf" }