Venice Augment (text parse / scrape / search)
Three lightweight helpers for agent pipelines that need document text, web pages, or search results without spinning up your own crawler.
| Endpoint |
Input |
Output |
Privacy |
POST /augment/text-parser |
multipart/form-data file (PDF / DOCX / XLSX / plain text, ≤ 25 MB) |
{ text, tokens } JSON or plain text |
In-memory only, zero retention |
POST /augment/scrape |
{ url } |
{ url, content (markdown), format: "markdown" } |
Zero retention |
POST /augment/search |
{ query, limit?, search_provider? } |
{ query, results: [{ title, url, content, date }] } |
Brave ZDR / Google anonymized; zero retention |
All three accept Bearer API key or SIWE (x402 wallet). All three are priced dynamically ($0.001–$10.00).
POST /augment/text-parser — extract text from documents
Request
Always multipart/form-data:
| Field |
Notes |
file |
Required. PDF, DOCX, XLSX, or plain text. Max 25 MB. |
response_format |
json (default) or text. |
curl -X POST https://api.venice.ai/api/v1/augment/text-parser \
-H "Authorization: Bearer $VENICE_API_KEY" \
-F "file=@./contract.pdf" \
-F "response_format=json"
Response
response_format=json:
{
"text": "…extracted plaintext…",
"tokens": 3821
}
response_format=text — raw plaintext body (Content-Type: text/plain).
Tips
tokens is the count of the extracted text — use it to pre-budget a downstream chat request.
- Scanned image PDFs are not OCR'd. Run images through a vision model via
/chat/completions instead.
- Documents are processed in memory only and content is not retained after the response. (Operational metadata like request IDs and error traces may still be logged for debugging — this is a no-content-retention guarantee, not a zero-log guarantee.)
POST /augment/scrape — URL → markdown
Request
{ "url": "https://example.com/article" }
curl -X POST https://api.venice.ai/api/v1/augment/scrape \
-H "Authorization: Bearer $VENICE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com"}'
Response
{
"url": "https://example.com",
"content": "# Example Domain\n\nThis domain is for use in …",
"format": "markdown"
}
Tips
- Blocked sites — X/Twitter and Reddit reject automated access and return
400 immediately. Use enable_x_search or enable_web_search on /chat/completions for those.
- Some sites may return a partial body. Verify with the returned
content length before piping into a model.
- Use together with
/chat/completions: scrape → feed markdown into messages → summarize.
- For bulk scraping, issue requests in parallel; each is billed independently.
POST /augment/search — web search
Request
| Field |
Notes |
query |
1–400 chars. Required. |
limit |
1–20. Default 10. |
search_provider |
"brave" (default, ZDR) or "google" (anonymized). |
curl -X POST https://api.venice.ai/api/v1/augment/search \
-H "Authorization: Bearer $VENICE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "venice ai api pricing",
"limit": 5,
"search_provider": "brave"
}'
Response
{
"query": "venice ai api pricing",
"results": [
{
"title": "Pricing — Venice.ai",
"url": "https://venice.ai/pricing",
"content": "Venice offers per-token pricing …",
"date": "2026-04-10"
}
]
}
Providers
| Provider |
Retention |
Bias / filter |
brave (default) |
Zero Data Retention — Brave never stores queries. |
Safesearch defaults, Brave Index. |
google |
Anonymized — proxied through Venice so Google doesn't see you; Venice doesn't log queries. |
Google ranking. |
Tips
- Pair with
/chat/completions + venice_parameters.enable_web_citations to generate cited answers. See venice-chat.
- For "search + read" pipelines, feed
results[*].url into /augment/scrape in parallel.
query is validated as 1–400 chars. Anything longer is rejected (400 INVALID_REQUEST), not truncated.
Errors
| Status |
Cause |
400 |
Missing/oversized file, unsupported format, URL on a blocklist (X, Reddit), empty query, query > 400 chars. |
401 |
Missing/invalid Bearer or SIWE. |
402 |
Insufficient balance. x402 wallets receive the PAYMENT-REQUIRED header with base64 top-up instructions; Bearer users get INSUFFICIENT_BALANCE. |
403 |
Unauthorized access. |
429 |
Rate limit tripped. Back off with jitter. |
500 |
Upstream fetch / parse failure. Safe to retry. |
Response headers
X-Balance-Remaining — remaining x402 credit (x402 auth only).
Content-Encoding — present when Accept-Encoding: gzip, br is sent (text-parser + scrape outputs compress well).
Patterns
- Document QA — Upload PDF via
/augment/text-parser, pass text into a /chat/completions system message, ask questions.
- Research agent —
/augment/search → parallel /augment/scrape → /chat/completions with all markdown bodies.
- Data extraction — XLSX via text-parser surfaces tab-delimited cell data you can then pipe to a model with
response_format: { type: "json_schema", ... }.
- Citation pipeline — Use
/augment/search to pick sources, then give the chat model venice_parameters.enable_web_citations: true for inline [n] marks.
1---2name: venice-venice-augment3description: Venice augmentation endpoints for agent pipelines. Covers POST /augment/text-parser (extract text from PDF/DOCX/XLSX/plain text, multipart, up to 25MB, JSON or plain text response), POST /augment/scrape (fetch a URL and return markdown; blocks X/Reddit), and POST /augment/search (Brave ZDR or anonym4license: MIT5---6
7# Venice Augment (text parse / scrape / search)
8
9Three lightweight helpers for agent pipelines that need document text, web pages, or search results without spinning up your own crawler.
10
11| Endpoint | Input | Output | Privacy |
12|---|---|---|---|
13| `POST /augment/text-parser` | `multipart/form-data` file (PDF / DOCX / XLSX / plain text, ≤ 25 MB) | `{ text, tokens }` JSON or plain text | In-memory only, zero retention |
14| `POST /augment/scrape` | `{ url }` | `{ url, content (markdown), format: "markdown" }` | Zero retention |
15| `POST /augment/search` | `{ query, limit?, search_provider? }` | `{ query, results: [{ title, url, content, date }] }` | Brave ZDR / Google anonymized; zero retention |
16
17All three accept **Bearer API key** or **SIWE** (x402 wallet). All three are priced dynamically (`$0.001–$10.00`).
18
19## `POST /augment/text-parser` — extract text from documents
20
21### Request
22
23Always `multipart/form-data`:
24
25| Field | Notes |
26|---|---|
27| `file` | Required. PDF, DOCX, XLSX, or plain text. Max **25 MB**. |
28| `response_format` | `json` (default) or `text`. |
29
30```bash
31curl -X POST https://api.venice.ai/api/v1/augment/text-parser \
32 -H "Authorization: Bearer $VENICE_API_KEY" \
33 -F "file=@./contract.pdf" \
34 -F "response_format=json"
35```
36
37### Response
38
39`response_format=json`:
40
41```json
42{
43 "text": "…extracted plaintext…",
44 "tokens": 3821
45}
46```
47
48`response_format=text` — raw plaintext body (`Content-Type: text/plain`).
49
50### Tips
51
52- `tokens` is the count of the extracted text — use it to pre-budget a downstream chat request.
53- Scanned image PDFs are not OCR'd. Run images through a vision model via `/chat/completions` instead.
54- Documents are processed **in memory only** and **content is not retained** after the response. (Operational metadata like request IDs and error traces may still be logged for debugging — this is a no-content-retention guarantee, not a zero-log guarantee.)
55
56## `POST /augment/scrape` — URL → markdown
57
58### Request
59
60```json
61{ "url": "https://example.com/article" }
62```
63
64```bash
65curl -X POST https://api.venice.ai/api/v1/augment/scrape \
66 -H "Authorization: Bearer $VENICE_API_KEY" \
67 -H "Content-Type: application/json" \
68 -d '{"url":"https://example.com"}'
69```
70
71### Response
72
73```json
74{
75 "url": "https://example.com",
76 "content": "# Example Domain\n\nThis domain is for use in …",
77 "format": "markdown"
78}
79```
80
81### Tips
82
83- **Blocked sites** — X/Twitter and Reddit reject automated access and return `400` immediately. Use `enable_x_search` or `enable_web_search` on `/chat/completions` for those.
84- Some sites may return a partial body. Verify with the returned `content` length before piping into a model.
85- Use together with `/chat/completions`: scrape → feed markdown into messages → summarize.
86- For bulk scraping, issue requests in parallel; each is billed independently.
87
88## `POST /augment/search` — web search
89
90### Request
91
92| Field | Notes |
93|---|---|
94| `query` | 1–400 chars. Required. |
95| `limit` | 1–20. Default `10`. |
96| `search_provider` | `"brave"` (default, ZDR) or `"google"` (anonymized). |
97
98```bash
99curl -X POST https://api.venice.ai/api/v1/augment/search \
100 -H "Authorization: Bearer $VENICE_API_KEY" \
101 -H "Content-Type: application/json" \
102 -d '{
103 "query": "venice ai api pricing",
104 "limit": 5,
105 "search_provider": "brave"
106 }'
107```
108
109### Response
110
111```json
112{
113 "query": "venice ai api pricing",
114 "results": [
115 {
116 "title": "Pricing — Venice.ai",
117 "url": "https://venice.ai/pricing",
118 "content": "Venice offers per-token pricing …",
119 "date": "2026-04-10"
120 }
121 ]
122}
123```
124
125### Providers
126
127| Provider | Retention | Bias / filter |
128|---|---|---|
129| `brave` (default) | Zero Data Retention — Brave never stores queries. | Safesearch defaults, Brave Index. |
130| `google` | Anonymized — proxied through Venice so Google doesn't see you; Venice doesn't log queries. | Google ranking. |
131
132### Tips
133
134- Pair with `/chat/completions` + `venice_parameters.enable_web_citations` to generate cited answers. See [`venice-chat`](../venice-chat/SKILL.md).
135- For "search + read" pipelines, feed `results[*].url` into `/augment/scrape` in parallel.
136- `query` is validated as 1–400 chars. Anything longer is **rejected** (400 `INVALID_REQUEST`), not truncated.
137
138## Errors
139
140| Status | Cause |
141|---|---|
142| `400` | Missing/oversized file, unsupported format, URL on a blocklist (X, Reddit), empty query, query > 400 chars. |
143| `401` | Missing/invalid Bearer or SIWE. |
144| `402` | Insufficient balance. x402 wallets receive the `PAYMENT-REQUIRED` header with base64 top-up instructions; Bearer users get `INSUFFICIENT_BALANCE`. |
145| `403` | Unauthorized access. |
146| `429` | Rate limit tripped. Back off with jitter. |
147| `500` | Upstream fetch / parse failure. Safe to retry. |
148
149## Response headers
150
151- `X-Balance-Remaining` — remaining x402 credit (x402 auth only).
152- `Content-Encoding` — present when `Accept-Encoding: gzip, br` is sent (text-parser + scrape outputs compress well).
153
154## Patterns
155
156- **Document QA** — Upload PDF via `/augment/text-parser`, pass `text` into a `/chat/completions` system message, ask questions.
157- **Research agent** — `/augment/search` → parallel `/augment/scrape` → `/chat/completions` with all markdown bodies.
158- **Data extraction** — XLSX via text-parser surfaces tab-delimited cell data you can then pipe to a model with `response_format: { type: "json_schema", ... }`.
159- **Citation pipeline** — Use `/augment/search` to pick sources, then give the chat model `venice_parameters.enable_web_citations: true` for inline `[n]` marks.