Skip to main content
skill CX Codex

venice-augment — Claude Code skill for parsing, search and setup

This skill connects Venice API endpoints for document text extraction, web-page retrieval as Markdown, and search. Use it when an agent pipeline needs those inputs.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add veniceai/skills --skill venice-augment -a claude-code
Open on GitHub

What venice-augment does

The skill covers three Venice endpoints: /augment/text-parser extracts text from documents and code files, /augment/scrape fetches a URL and returns Markdown, and /augment/search returns web results. Requests need a Bearer API key or an x402 wallet. Each successful call costs $0.01.

The parser accepts files up to 25 MB, but does not OCR scanned PDFs. Scrape rejects X, Reddit, and private or internal addresses. Scrape and search have a limit of 20 requests per minute per user. All three endpoints are marked experimental, so request and response formats may change.

What it helps with

  • extract text from a PDF, EPUB, or DOCX
  • fetch a web page as Markdown
  • search the web for pages on a topic
  • feed extracted file text into an agent pipeline

Example prompts for the agent

  • Extract the text from contract.pdf using Venice.
  • Fetch this URL as Markdown with Venice scrape.
  • Search the web for pages on this topic using Venice search.

How to install venice-augment

1Skills CLI (Vercel)

npx skills add veniceai/skills --skill venice-augment -a claude-code

2Manually: put the files in place

~/.claude/skills/venice-augment/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/venice-augment/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about venice-augment

How do I install venice-augment in Claude Code?

Run npx skills add veniceai/skills --skill venice-augment -a claude-code. The skill file is placed at ~/.claude/skills/venice-augment/SKILL.md.

What does venice-augment do?

It lets an agent use Venice API endpoints to extract text from files, retrieve web pages as Markdown, and search the web.

What are venice-augment’s limits?

The parser accepts files up to 25 MB and does not OCR scanned PDFs. Scrape and search allow 20 requests per minute per user; each successful call costs $0.01.

Source text

SKILL.md · MIT
---
name: venice-augment
description: Venice augmentation endpoints for agent pipelines. Covers POST /augment/text-parser (extract text from PDF/EPUB/DOCX/PPTX/XLSX/XLS, plain text and source code; multipart, up to 25MB; JSON or plain-text response), POST /augment/scrape (fetch a URL and return markdown; blocks X/Reddit and private/internal URLs), and POST /augment/search (Brave ZDR or anonymized Google; structured title/url/content/date results, limit up to 20 but effectively capped at 10 Brave / 5 Google). $0.01 per successful call, 20 req/min on scrape and search, privacy, and error shapes.
---

# Venice Augment (text parse / scrape / search)

Three lightweight helpers for agent pipelines that need document text, web pages, or search results without running your own parser, crawler, or search account. All three are marked **experimental** in the docs — request/response shapes may change.

| Endpoint | Input | Output | Price |
|---|---|---|---|
| `POST /augment/text-parser` | `multipart/form-data` `file` (≤ 25 MB) | `{ text, tokens }` JSON, or `text/plain` | $0.01 / successful call |
| `POST /augment/scrape` | `{ url }` | `{ url, content, format: "markdown" }` | $0.01 / successful call |
| `POST /augment/search` | `{ query, limit?, search_provider? }` | `{ query, results: [{ title, url, content, date }] }` | $0.01 / successful call |

All three accept a **Bearer API key** or an **x402 wallet** (`SIGN-IN-WITH-X` header) — see [`venice-auth`](../venice-auth/SKILL.md). The balance is checked before the work runs; the charge is applied only after a `200` response. (The OpenAPI `x-payment-info` advertises a generic dynamic range of `$0.001–$10.00`; the actual price sheet charge is $0.01.)

## `POST /augment/text-parser` — extract text from documents

### Request

Always `multipart/form-data`:

| Field | Notes |
|---|---|
| `file` | Required. Max **25 MB** (larger → `413`). |
| `response_format` | `json` (default) or `text`. |

Accepted file types (matched by MIME type, or by filename extension when the MIME type isn't recognized, e.g. `application/octet-stream`):

- **Structured documents:** PDF, EPUB, DOCX, PPTX, XLSX, XLS. Legacy `.doc` and `.ppt` are **not** accepted.
- **Text / data:** any `text/*` MIME, plus Markdown, CSV/TSV, JSON/JSONL, YAML, TOML, XML, HTML, RTF, LaTeX, logs, etc.
- **Source code:** `.py`, `.ts`, `.js`, `.go`, `.rs`, `.c`, `.cpp`, `.java`, `.sh`, `.ps1`, `.sql`, … plus extensionless `Dockerfile` / `Makefile` (~140 text/data/code extensions are recognized in total).

Anything else → `400 Unsupported file type`.

```bash
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`:

```json
{
  "text": "…extracted text…",
  "tokens": 3821
}
```

`response_format=text` — the raw extracted text as the body (`Content-Type: text/plain`).

### Tips

- DOCX, PPTX, XLSX/XLS and EPUB come back as **markdown** (spreadsheets as markdown tables). PDFs and text files come back as plain text.
- `tokens` is a character-based estimate (`ceil(chars / 3.2)`), not a model tokenizer count — use it for rough budgeting of a downstream chat request.
- Scanned/image-only PDFs are not OCR'd; if nothing can be extracted you get `400 "No text content could be extracted from the file."` Run page images through a vision model via `/chat/completions` instead.
- Password-protected PDFs → `400 "The PDF file is password-protected…"`; empty/corrupt PDFs → `400 "The PDF file is empty or invalid."`
- Documents are processed **in memory** and content is not retained after the response. (Operational metadata such as request IDs and error traces may still be logged — this is a no-content-retention guarantee, not a zero-log guarantee.)

## `POST /augment/scrape` — URL → markdown

### Request

```json
{ "url": "https://example.com/article" }
```

`url` must be a valid absolute `http://` or `https://` URL.

```bash
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

```json
{
  "url": "https://example.com",
  "content": "# Example Domain\n\nThis domain is for use in …",
  "format": "markdown"
}
```

### How it fetches

Sites that serve markdown directly are returned as-is; otherwise the page is fetched and converted to markdown. Redirects are followed, but a redirect to a private/internal target fails the request (see below). The X/Reddit blocklist is checked against the URL you send, not against redirect targets.

### Tips

- **Blocked sites** — `x.com`, `twitter.com` (incl. `www.` / `mobile.`) and `reddit.com` (incl. `www.` / `old.` / `new.`) are rejected immediately with `400`. Use `enable_x_search` or `enable_web_search` on `/chat/completions` for those — see [`venice-chat`](../venice-chat/SKILL.md).
- **Blocked URLs** — non-HTTP(S) schemes, URLs with embedded credentials, `localhost` / private / reserved IPs and cloud-metadata hosts return `400`. A public hostname that resolves or redirects to such a target fails with `500`.
- Unreachable hosts, timeouts and pages with no extractable content return `500` with a message (e.g. `"URL unreachable: …"`). You are not charged.
- Some sites return a partial body. Check `content` length before piping it into a model.
- Rate limit: **20 requests/minute per user** (`429` beyond that). The counter runs before URL validation, so rejected URLs also count.

## `POST /augment/search` — web search

### Request

| Field | Notes |
|---|---|
| `query` | Required. 1–400 chars. Longer is **rejected** (`400`), not truncated. |
| `limit` | Integer 1–20. Default `10`. See the cap below. |
| `search_provider` | `"brave"` (default) or `"google"`. |

```bash
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

```json
{
  "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"
    }
  ]
}
```

- `date` is whatever the provider reports and may be an **empty string**; don't assume a fixed format.
- Results without a snippet are dropped, so you can get fewer than `limit`. A search with no hits returns `200` with `results: []` (still charged).

### Providers

| Provider | Retention | Results | `content` |
|---|---|---|---|
| `brave` (default) | Zero Data Retention — queries are not stored or logged by the provider. | **At most 10** | Snippet plus any extra snippets. |
| `google` | Anonymized — proxied through Venice so your identity isn't attached to the query; Venice doesn't store or log queries. | **At most 5** | Extracted page summary/markdown (longer), truncated to a budget. |

`limit` accepts up to 20, but the upstream request is fixed at 10 results for `brave` and 5 for `google`, so values above those caps have no effect.

### Tips

- For cited answers inside a chat completion, use `/chat/completions` with `venice_parameters.enable_web_search` + `enable_web_citations` instead. See [`venice-chat`](../venice-chat/SKILL.md).
- For "search + read" pipelines, feed `results[*].url` into `/augment/scrape` — mind the 20/min scrape limit.
- Rate limit: **20 requests/minute per user** (`429` beyond that). Requests that fail body validation still count.

## Errors

| Status | Cause |
|---|---|
| `400` | Missing file, unsupported file type, no extractable text, password-protected/invalid PDF; invalid/blocked URL (X, Reddit, private/internal); empty or > 400-char query; `limit` out of range; non-JSON `Content-Type` on scrape/search (`"'Content-Type' must be 'application/json'"`). Body: `{ error }`, or `{ error: "Invalid request parameters", details, issues }` on schema failures. |
| `401` | Invalid API key or SIWX signature. |
| `402` | Insufficient balance or the key's USD/DIEM spend limit reached. Bearer → `"Insufficient USD or Diem balance…"`; x402 → payment-required body + `PAYMENT-REQUIRED` header. Requests with no credentials at all also get `402` (x402 discovery challenge). |
| `403` | API access disabled for the account (`"API access has been disabled for this account…"`). |
| `413` | Text-parser file over 25 MB (`PAYLOAD_TOO_LARGE`). |
| `429` | Per-endpoint rate limit (scrape/search: 20/min) or the failed-request limiter. Back off with jitter. |
| `500` | Scrape fetch failure, search provider failure (`"Search provider failed to return results…"`), or parse failure (`"Failed to parse document"`). Not charged; safe to retry. |

See [`venice-errors`](../venice-errors/SKILL.md) for body shapes and retry strategy.

## Response headers

- `X-Balance-Remaining` — listed in the spec for x402 callers but not currently set by the server; poll `GET /x402/balance/{walletAddress}` instead.
- `x-ratelimit-limit-requests` / `x-ratelimit-remaining-requests` / `x-ratelimit-reset-requests` — scrape and search.
- `Content-Encoding` — when you send `Accept-Encoding: gzip, br`.

## Patterns

- **Document QA** — upload a PDF to `/augment/text-parser`, put `text` into a `/chat/completions` message, ask questions.
- **Research agent** — `/augment/search` → `/augment/scrape` on the top URLs → `/chat/completions` with the markdown bodies.
- **Data extraction** — XLSX via text-parser yields markdown tables you can pipe to a model with `response_format: { type: "json_schema", ... }`.
- **Code review** — send source files directly to text-parser (no need to convert to PDF) and feed the text to a coding model.

© veniceai · MIT · veniceai/skills

Similar skills

All skills for Agent setup: memory, context, orchestration →

From the same set23

venice-chat Enables your agent to interact with Venice's POST /api/v1/chat/completions endpoint. It helps configure web search, reasoning effort, and structured outputs. CX Codex +1 ★ 160repo stars venice-characters Use Venice’s public character API to search personas, inspect reviews, and apply a character to a chat request. Useful for building a character picker or preset personas into an app. CX Codex +1 ★ 160repo stars venice-billing A skill covering Venice AI billing: DIEM and credit balances, a per-request ledger, and aggregated usage analytics. An ADMIN key is required. CX Codex +1 ★ 160repo stars venice-auth Helps your agent authenticate against Venice API using Bearer tokens or x402 wallet signatures without a traditional account. CX Codex +1 ★ 160repo stars venice-audio-voice-changer A skill for async voice conversion through the Venice API: same speech, different voice, original timing kept. CX Codex +1 ★ 160repo stars venice-audio-transcription Guides audio transcription via the Venice API with word-level or segment timestamps. Useful for voice notes, podcasts, and subtitle generation. CX Codex +1 ★ 160repo stars venice-audio-speech This skill covers Venice API text-to-speech and voice cloning. Use it for narration, spoken replies, or audio returned inside an app. CX Codex +1 ★ 160repo stars venice-audio-music A skill for async music, sound-effect and long voice generation through the Venice API. Useful when a synchronous call would time out. CX Codex +1 ★ 160repo stars

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor