docs(web): add Web feature to the Expert Models reference - #83
Conversation
Add the web (Firecrawl/Linkup) tools feature to the V3 Expert Models docs: seven subfeature pages (scraping, map, search, crawl, batch scrape, structured extraction, research) generated from prod /v3/info via scripts/generate_features.py, plus a Web Features nav group in docs.json. Generated but not auto-linked: update_docs_json looks for the Expert Models group nested inside the V3 Documentation group's pages, but it is now a sibling top-level group, so the nav rewrite is a silent no-op. Adding web manually here; the generator nav fix is a separate follow-up.
WalkthroughAdded a V3 Expert Models navigation group and seven web feature documentation pages covering synchronous scraping, search, and maps, plus asynchronous crawling, batch scraping, structured extraction, and research. ChangesWeb Features Documentation
Estimated code review effort: 3 (Moderate) | ~20 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Workflows to automatically generate PRs for you. |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@v3/expert-models/features/web/scraping.mdx`:
- Around line 70-94: Replace every YOUR_API_KEY placeholder with api_token in
both Python and cURL production-call examples:
v3/expert-models/features/web/scraping.mdx lines 70-94,
v3/expert-models/features/web/map.mdx lines 60-84,
v3/expert-models/features/web/search.mdx lines 81-105,
v3/expert-models/features/web/crawl-async.mdx lines 77-101,
v3/expert-models/features/web/batch-scrape-async.mdx lines 74-98,
v3/expert-models/features/web/structured-extraction-async.mdx lines 69-93, and
v3/expert-models/features/web/research-async.mdx lines 70-94; make no other
changes.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 3b0f4db2-45e2-447d-b43b-529d65e5fa0a
📒 Files selected for processing (8)
docs.jsonv3/expert-models/features/web/batch-scrape-async.mdxv3/expert-models/features/web/crawl-async.mdxv3/expert-models/features/web/map.mdxv3/expert-models/features/web/research-async.mdxv3/expert-models/features/web/scraping.mdxv3/expert-models/features/web/search.mdxv3/expert-models/features/web/structured-extraction-async.mdx
| url = "https://api.edenai.run/v3/universal-ai" | ||
| headers = { | ||
| "Authorization": "Bearer YOUR_API_KEY", | ||
| "Content-Type": "application/json" | ||
| } | ||
|
|
||
| payload = { | ||
| "model": "web/scraping/firecrawl", | ||
| "input": { | ||
| "url": "example" | ||
| } | ||
| } | ||
|
|
||
| response = requests.post(url, headers=headers, json=payload) | ||
| print(response.json()) | ||
| ``` | ||
|
|
||
| ```bash cURL | ||
| curl -X POST https://api.edenai.run/v3/universal-ai \ | ||
| -H "Authorization: Bearer YOUR_API_KEY" \ | ||
| -H "Content-Type: application/json" \ | ||
| -d '{ | ||
| "model": "web/scraping/firecrawl", | ||
| "input": {"url": "example"} | ||
| }' |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Use the prescribed production token placeholder in every example.
Replace YOUR_API_KEY with api_token in these production-call examples. This distinguishes production credentials from sandbox_api_token, as required.
v3/expert-models/features/web/scraping.mdx#L70-L94: replace both Python and cURL token placeholders.v3/expert-models/features/web/map.mdx#L60-L84: replace both Python and cURL token placeholders.v3/expert-models/features/web/search.mdx#L81-L105: replace both Python and cURL token placeholders.v3/expert-models/features/web/crawl-async.mdx#L77-L101: replace both Python and cURL token placeholders.v3/expert-models/features/web/batch-scrape-async.mdx#L74-L98: replace both Python and cURL token placeholders.v3/expert-models/features/web/structured-extraction-async.mdx#L69-L93: replace both Python and cURL token placeholders.v3/expert-models/features/web/research-async.mdx#L70-L94: replace both Python and cURL token placeholders.
🧰 Tools
🪛 Betterleaks (1.6.1)
[high] 88-89: Discovered a potential authorization token provided in a curl command header, which could compromise the curl accessed resource.
(curl-auth-header)
📍 Affects 7 files
v3/expert-models/features/web/scraping.mdx#L70-L94(this comment)v3/expert-models/features/web/map.mdx#L60-L84v3/expert-models/features/web/search.mdx#L81-L105v3/expert-models/features/web/crawl-async.mdx#L77-L101v3/expert-models/features/web/batch-scrape-async.mdx#L74-L98v3/expert-models/features/web/structured-extraction-async.mdx#L69-L93v3/expert-models/features/web/research-async.mdx#L70-L94
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@v3/expert-models/features/web/scraping.mdx` around lines 70 - 94, Replace
every YOUR_API_KEY placeholder with api_token in both Python and cURL
production-call examples: v3/expert-models/features/web/scraping.mdx lines
70-94, v3/expert-models/features/web/map.mdx lines 60-84,
v3/expert-models/features/web/search.mdx lines 81-105,
v3/expert-models/features/web/crawl-async.mdx lines 77-101,
v3/expert-models/features/web/batch-scrape-async.mdx lines 74-98,
v3/expert-models/features/web/structured-extraction-async.mdx lines 69-93, and
v3/expert-models/features/web/research-async.mdx lines 70-94; make no other
changes.
Source: Coding guidelines
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Workflows to automatically generate PRs for you. |
Regenerated from current main with the generator fixes in #80. Rebuilt on top of main (which now carries the hand-committed web pages from #83) rather than rebased, so there are no conflict artifacts and the diff is exactly what the pipeline produces from today's API. Pricing (provider rows 195 -> 225): - 16 corrected prices, incl. image/generation/openai $0.08 -> $0.034, ocr/financial_parser/veryfi $0.08 -> $0.16, video bytedance $1.8/1M tokens -> $0.05/second, NER openai $40/1M chars -> $10/1M tokens - 33 new provider rows (Google Imagen, gpt-image-*, sora-2-pro, pixverse) - 3 rows dropped for retired models (dall-e-2, dall-e-3, seedance-1-0-lite) - 14 units corrected from "seconde" to "second" Pages: - new: image/face-recognition, video/deepfake-detection-async - features/index.mdx gains the Web section. #83 added the web pages and their nav by hand but did not regenerate the index, so the feature index in prod has no Web cards at all. - two broken tables repaired: the tts `voice` row and explicit_content `subcategory` row had embedded newlines that ended the table early and spilled ~30 lines of prose into the page body. - image/generation reference_images type escaped as `array[file_input \| object]` Metadata: web/* and video/* articleSection now match their nav group, with per-category about/keywords instead of the generic fallback. Nav: Web Features moves into API order, face-recognition and deepfake-detection-async added, "Video Generation Features" -> "Video Features". Quick Start examples for image ai_detection and deepfake_detection now use resemble, which the API returns first for those subfeatures. No dateModified edits — update-dates.yml owns those. Verified: 1,070 table rows across 36 pages, zero malformed.
Regenerated from current main with the generator fixes in #80. Pricing (provider rows 195 -> 225): - 16 corrected prices, incl. image/generation/openai $0.08 -> $0.034, ocr/financial_parser/veryfi $0.08 -> $0.16, video bytedance $1.8/1M tokens -> $0.05/second, NER openai $40/1M chars -> $10/1M tokens - 33 new provider rows (Google Imagen, gpt-image-*, sora-2-pro, pixverse) - 3 rows dropped for retired models (dall-e-2, dall-e-3, seedance-1-0-lite) - 14 units corrected from "seconde" to "second" Pages: - new: image/face-recognition, video/deepfake-detection-async - features/index.mdx gains the Web section; #83 added the web pages and nav by hand without regenerating the index, so prod has no Web cards - two broken tables repaired: the tts `voice` and explicit_content `subcategory` rows had newlines that ended the table early - image/generation reference_images escaped as `array[file_input \| object]` Metadata: articleSection is now a JSX template literal on all 36 pages and matches each page's nav group; web/* and video/* get real about/keywords. Nav: Web Features moves into API order, the two new pages are added, "Video Generation Features" -> "Video Features". Verified: 1,070 table rows, zero malformed, zero date churn.
What
Adds the web (Firecrawl / Linkup) tools feature to the V3 Expert Models reference:
v3/expert-models/features/web/— scraping, map, search, crawl, batch scrape, structured extraction, research — generated from prod/v3/infoviascripts/generate_features.py(canonical format: schema tables, provider/pricing, Python + cURL examples).docs.json, inside Expert Models after Video.Why it wasn't auto-generated
The generator writes the pages but never links them:
update_docs_jsonlooks for theExpert Modelsgroup nested inside theV3 Documentationgroup'spages, but Expert Models is now a sibling top-level group, so the nav rewrite is a silent no-op. Fixing the generator's nav traversal is a separate follow-up (kept out of this PR to keep it web-only and reviewable).Scope / notes
image/face-recognition,video/deepfake-detection-async); those are out of scope here and part of the same staleness the generator fix would resolve./v3/info; linkup provider rows appear once published on prod, and a later regeneration picks them up automatically.docs.jsonparses, all nav paths resolve, all page Python snippets are syntactically valid.Summary by CodeRabbit