Skip to content

docs: refresh AI feature pages from prod /v3/info (first since 2026-05-08) - #81

Merged
FahimaGold merged 3 commits into
mainfrom
fahima/refresh-feature-docs-2026-07
Jul 27, 2026
Merged

docs: refresh AI feature pages from prod /v3/info (first since 2026-05-08)#81
FahimaGold merged 3 commits into
mainfrom
fahima/refresh-feature-docs-2026-07

Conversation

@FahimaGold

@FahimaGold FahimaGold commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

Why

First refresh of the Expert Models feature pages since 2026-05-08. generate-features.yml has been unable to open a PR since 2026-05-12, so the pricing tables have drifted for ~2.5 months. #80 fixes the pipeline; this PR carries the content that backed up behind it.

Replaces #13 (closed), whose snapshot was from 2026-05-08 and had itself gone stale.

Generated with the fixed generator from #80. This branch deliberately leaves scripts/ and .github/ at main, so the diff here is content only — 19 files, no code.

16 corrected prices

Model string Was Now
image/generation/openai $0.08 per image $0.034 per image
image/generation/leonardo/Leonardo Kino XL $0.017 $0.014
image/generation/leonardo/Leonardo Vision XL $0.017 $0.014
image/generation/leonardo/SDXL 0.9 $0.014 $0.017
image/generation/bytedance/seedream-5-0-260128 $0.035 per token $0.035 per image
image/ai_detection/winstonai $0.021 per request $0.0145 per image
image/deepfake_detection/sightengine $0.002 per image $0.0145 per image
ocr/financial_parser/veryfi $0.08 per file $0.16 per file
ocr/financial_parser/affinda $0.08 per page $0.07 per page
text/named_entity_recognition/openai $40 per 1M chars $10 per 1M tokens
translation/automatic_translation/openai $20 per 1M tokens $20 per 1M chars
video/generation_async/bytedance $1.8 per 1M tokens $0.05 per second
video/generation_async/bytedance/seedance-1-0-pro-250528 $0.62 per request $2.5 per 1M tokens
video/generation_async/google/veo-3.1-generate-preview $0.4 per second $0.6 per second
video/generation_async/google/veo-3.0-fast-generate-001 $0.15 per second $0.12 per second
video/generation_async/minimax/MiniMax-Hailuo-2.3 $0.28 per request $0.084 per request

Several of these were understating what we bill (veryfi 2×, veo-3.1 1.5×) or overstating it (openai image generation, NER, Hailuo). Worth a sanity check from someone who knows the billing side before merge.

9 new pages

Never published because update_docs_json was silently no-opping (fixed in #80):

  • web/ — a whole undocumented category: scraping, map, search, crawl-async, batch-scrape-async, structured-extraction-async, research-async (firecrawl)
  • image/face-recognition
  • video/deepfake-detection-async

37 new provider rows

Provider rows go 188 → 222. Notable: all of Google Imagen (imagen-3.0-*, imagen-4.0-*, gemini-2.5-flash-image, gemini-3-pro-image-preview), the whole gpt-image-* family (gpt-image-1, -1-mini, -1.5, -2), openai/sora-2-pro, bytedance/seedance-2-0-260128, and pixverse (c1, v5, v5.5, v6).

3 rows dropped

Models no longer served by the API: image/generation/openai/dall-e-2, image/generation/openai/dall-e-3, video/generation_async/bytedance/seedance-1-0-lite-t2v-250428.

Other changes

  • 14 unit strings corrected from "seconde" to "second" (the API returns the French spelling; normalised in fix(ci): unblock the feature-docs generator (76 consecutive failures) #80). This is the whole audio/speech-to-text-async.mdx diff and part of the video one — no price movement in those rows.
  • Nav label change: Video Generation FeaturesVideo Features. Derived from the API, not hand-edited: the name comes from the common prefix of subfeature names, which shortened once video gained a second subfeature. Group names aren't URLs, so no link rot.
  • dateModified handling. The generated commit stamps dates only on the two brand-new pages
    (image/face-recognition, video/deepfake-detection-async); it does not touch any existing page's
    dates. update-dates.yml then bumped the 10 existing pages this PR changes, in commit f40e75a.
    That is the intended split — the generator preserves dates, the dates workflow owns bumping them.

Verification

  • Regenerated from live /v3/info; every price above is what the API returns today
  • Zero date-only diffs — the failure mode that made up 24 of docs: update AI feature documentation #13's 27 files
  • Nav: Web Features (7 pages) added, Image Features 10 → 11, Video Features 1 → 2; the V3 API Reference tab keeps its own AI Features group
  • All 9 python snippets on the new pages parse; test-snippets.yml has never exercised them, so it may still find runtime issues

Follow-ups, not blockers

The web category has no entry in _FEATURE_SCHEMA_META or _ICON_KEYWORDS, so its 7 pages fall back to generic JSON-LD (about="AI API", keywords expert models) and a cube nav icon. Two lines in the generator; happy to add it to #80 before merge if you'd rather these pages ship with proper SEO metadata.

Merge order

Merge #80 first, then this one, then delete the stale auto/update-feature-docs branch and trigger the workflow manually — the first automated run should then come back with an empty diff.

Summary by CodeRabbit

  • New Features
    • Added/expanded documentation cards and navigation for Web Features, including scraping, site maps, web search, async crawling, batch scraping, structured extraction, and deep research.
    • Added new image Face Recognition documentation and async Video Deepfake Detection documentation.
  • Documentation Updates
    • Updated Universal AI feature reference to reflect new Web/Image/Video cards.
    • Refreshed multiple Quick Start examples, request/response fields, and provider/model pricing (including unit/wording standardization).
    • Expanded image feature support details (e.g., Face detection providers, image generation options, and explicit-content subcategory lists).

@coderabbitai

coderabbitai Bot commented Jul 27, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

You’ve reached a temporary PR review limit under our Fair Usage Limits Policy.

Your recent review volume is higher than typical usage, so adaptive limits are currently applied.

Next review available in: 52 seconds

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: b7700221-20c5-49cd-a400-aa9742cdb239

📥 Commits

Reviewing files that changed from the base of the PR and between f40e75a and 91e5aad.

📒 Files selected for processing (38)
  • docs.json
  • v3/expert-models/features/audio/speech-to-text-async.mdx
  • v3/expert-models/features/audio/tts.mdx
  • v3/expert-models/features/image/ai-detection.mdx
  • v3/expert-models/features/image/anonymization.mdx
  • v3/expert-models/features/image/background-removal.mdx
  • v3/expert-models/features/image/deepfake-detection.mdx
  • v3/expert-models/features/image/explicit-content.mdx
  • v3/expert-models/features/image/face-compare.mdx
  • v3/expert-models/features/image/face-detection.mdx
  • v3/expert-models/features/image/face-recognition.mdx
  • v3/expert-models/features/image/generation.mdx
  • v3/expert-models/features/image/logo-detection.mdx
  • v3/expert-models/features/image/object-detection.mdx
  • v3/expert-models/features/index.mdx
  • v3/expert-models/features/ocr/financial-parser.mdx
  • v3/expert-models/features/ocr/identity-parser.mdx
  • v3/expert-models/features/ocr/ocr-async.mdx
  • v3/expert-models/features/ocr/ocr-tables-async.mdx
  • v3/expert-models/features/ocr/ocr.mdx
  • v3/expert-models/features/ocr/resume-parser.mdx
  • v3/expert-models/features/text/ai-detection.mdx
  • v3/expert-models/features/text/moderation.mdx
  • v3/expert-models/features/text/named-entity-recognition.mdx
  • v3/expert-models/features/text/plagia-detection.mdx
  • v3/expert-models/features/text/spell-check.mdx
  • v3/expert-models/features/text/topic-extraction.mdx
  • v3/expert-models/features/translation/automatic-translation.mdx
  • v3/expert-models/features/translation/document-translation.mdx
  • v3/expert-models/features/video/deepfake-detection-async.mdx
  • v3/expert-models/features/video/generation-async.mdx
  • v3/expert-models/features/web/batch-scrape-async.mdx
  • v3/expert-models/features/web/crawl-async.mdx
  • v3/expert-models/features/web/map.mdx
  • v3/expert-models/features/web/research-async.mdx
  • v3/expert-models/features/web/scraping.mdx
  • v3/expert-models/features/web/search.mdx
  • v3/expert-models/features/web/structured-extraction-async.mdx

Walkthrough

The documentation adds web, image, and video feature pages, expands feature navigation, updates API contracts and examples, and revises provider metadata and pricing across existing pages.

Changes

Expert model feature documentation

Layer / File(s) Summary
Web feature documentation
docs.json, v3/expert-models/features/index.mdx, v3/expert-models/features/web/*
Adds Web Crawl documentation, updates web metadata and providers, and expands web navigation and feature cards.
Image feature documentation
docs.json, v3/expert-models/features/index.mdx, v3/expert-models/features/image/*
Adds face recognition and updates image detection, deepfake detection, and generation contracts, providers, pricing, metadata, examples, and navigation.
Video feature documentation
docs.json, v3/expert-models/features/index.mdx, v3/expert-models/features/video/*
Adds async video deepfake detection and updates video generation inputs, outputs, providers, pricing, metadata, and navigation.
Provider pricing and terminology updates
v3/expert-models/features/audio/*, v3/expert-models/features/ocr/*, v3/expert-models/features/text/*, v3/expert-models/features/translation/*
Updates metadata dates, pricing values, pricing units, and image output terminology.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Client
  participant UniversalAI
  participant AsyncJobEndpoint
  Client->>UniversalAI: Submit sync or async feature request
  UniversalAI-->>Client: Return result or job_id
  Client->>AsyncJobEndpoint: Poll async job status
  AsyncJobEndpoint-->>Client: Return feature output
Loading

Possibly related PRs

  • edenai/docs#80: Updates related generated navigation and pricing/unit wording.
  • edenai/docs#83: Touches the same Web Features navigation and documentation pages.

Suggested reviewers: hmed22

Poem

A rabbit hops through docs so bright,
Web pages bloom from left to right.
Images and videos join the show,
With tidy prices set below.
Async jobs wiggle, then they’re done!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change: refreshing AI feature docs from the production /v3/info API.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fahima/refresh-feature-docs-2026-07

Comment @coderabbitai help to get the list of available commands.

@mintlify

mintlify Bot commented Jul 27, 2026

Copy link
Copy Markdown

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated (UTC)
edenai 🟢 Ready View Preview Jul 27, 2026, 12:05 PM

💡 Tip: Enable Workflows to automatically generate PRs for you.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

🤖 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/image/generation.mdx`:
- Line 33: Escape the union-type separator in the reference_images table type
cell so the `array[file_input | object]` text remains within a single Markdown
table column. Update only the `reference_images` row and preserve its documented
type and description.

In `@v3/expert-models/features/video/deepfake-detection-async.mdx`:
- Around line 12-15: Update the frontmatter in deepfake-detection-async.mdx to
classify the API under “Video Features” instead of “Video Generation Features,”
and replace the generation-specific keyword with the corresponding video-feature
classification. Keep the remaining metadata unchanged.

In `@v3/expert-models/features/web/batch-scrape-async.mdx`:
- Around line 78-102: Replace the placeholder authorization token in both
examples at v3/expert-models/features/web/batch-scrape-async.mdx:78-102,
v3/expert-models/features/web/crawl-async.mdx:81-105, and
v3/expert-models/features/video/deepfake-detection-async.mdx:61-85 by defining
and using the production token identifier api_token in each Python and cURL
snippet; do not use YOUR_API_KEY or sandbox_api_token.
- Line 22: Update the endpoint section in
v3/expert-models/features/web/batch-scrape-async.mdx at line 22 to use the full
POST https://api.edenai.run/v3/universal-ai/async URL; apply the same endpoint
replacement in v3/expert-models/features/web/crawl-async.mdx at line 22 and
v3/expert-models/features/video/deepfake-detection-async.mdx at line 22.

In `@v3/expert-models/features/web/map.mdx`:
- Around line 60-64: Replace the production placeholder token in each affected
example with the documented api_token variable, preserving sandbox_api_token
only in sandbox examples. Apply this change in
v3/expert-models/features/web/map.mdx (60-64), research-async.mdx (70-74),
scraping.mdx (74-78), search.mdx (87-91), structured-extraction-async.mdx
(69-73), and v3/expert-models/features/image/face-recognition.mdx (58-62) and
ai-detection.mdx (56-60); update the corresponding Python and shell snippets
consistently.

In `@v3/expert-models/features/web/research-async.mdx`:
- Around line 64-84: Complete the async examples in
v3/expert-models/features/web/research-async.mdx (lines 64-84) and
v3/expert-models/features/web/structured-extraction-async.mdx (lines 63-83) by
adding a follow-up GET request to /v3/universal-ai/async/{job_id}, using the
submission response’s public_id as the job ID, and demonstrate handling a
terminal job status after polling.
🪄 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: 6fa1e1fa-a7d3-47f4-9196-8831c010a378

📥 Commits

Reviewing files that changed from the base of the PR and between cb8972b and 95f8af0.

📒 Files selected for processing (19)
  • docs.json
  • v3/expert-models/features/audio/speech-to-text-async.mdx
  • v3/expert-models/features/image/ai-detection.mdx
  • v3/expert-models/features/image/deepfake-detection.mdx
  • v3/expert-models/features/image/face-recognition.mdx
  • v3/expert-models/features/image/generation.mdx
  • v3/expert-models/features/index.mdx
  • v3/expert-models/features/ocr/financial-parser.mdx
  • v3/expert-models/features/text/named-entity-recognition.mdx
  • v3/expert-models/features/translation/automatic-translation.mdx
  • v3/expert-models/features/video/deepfake-detection-async.mdx
  • v3/expert-models/features/video/generation-async.mdx
  • v3/expert-models/features/web/batch-scrape-async.mdx
  • v3/expert-models/features/web/crawl-async.mdx
  • v3/expert-models/features/web/map.mdx
  • v3/expert-models/features/web/research-async.mdx
  • v3/expert-models/features/web/scraping.mdx
  • v3/expert-models/features/web/search.mdx
  • v3/expert-models/features/web/structured-extraction-async.mdx

Comment thread v3/expert-models/features/image/generation.mdx Outdated
Comment thread v3/expert-models/features/video/deepfake-detection-async.mdx Outdated

## Endpoint

`POST /v3/universal-ai/async` (async)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

Use the full Universal AI endpoint in the endpoint sections.

  • v3/expert-models/features/web/batch-scrape-async.mdx#L22-L22: change the relative path to POST https://api.edenai.run/v3/universal-ai/async.
  • v3/expert-models/features/web/crawl-async.mdx#L22-L22: change the relative path to POST https://api.edenai.run/v3/universal-ai/async.
  • v3/expert-models/features/video/deepfake-detection-async.mdx#L22-L22: change the relative path to POST https://api.edenai.run/v3/universal-ai/async.

As per coding guidelines, use https://api.edenai.run/v3/universal-ai endpoint format for Universal AI endpoints.

📍 Affects 3 files
  • v3/expert-models/features/web/batch-scrape-async.mdx#L22-L22 (this comment)
  • v3/expert-models/features/web/crawl-async.mdx#L22-L22
  • v3/expert-models/features/video/deepfake-detection-async.mdx#L22-L22
🤖 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/batch-scrape-async.mdx` at line 22, Update the
endpoint section in v3/expert-models/features/web/batch-scrape-async.mdx at line
22 to use the full POST https://api.edenai.run/v3/universal-ai/async URL; apply
the same endpoint replacement in v3/expert-models/features/web/crawl-async.mdx
at line 22 and v3/expert-models/features/video/deepfake-detection-async.mdx at
line 22.

Source: Coding guidelines

Comment on lines +78 to +102
url = "https://api.edenai.run/v3/universal-ai/async"
headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
}

payload = {
"model": "web/batch_scrape_async/firecrawl",
"input": {
"urls": ["value1", "value2"]
}
}

response = requests.post(url, headers=headers, json=payload)
print(response.json())
```

```bash cURL
curl -X POST https://api.edenai.run/v3/universal-ai/async \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "web/batch_scrape_async/firecrawl",
"input": {"urls": ["value1", "value2"]}
}'

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🟡 Minor | ⚡ Quick win

Use the documented production token identifier in examples.

  • v3/expert-models/features/web/batch-scrape-async.mdx#L78-L102: define and use api_token instead of YOUR_API_KEY in both snippets.
  • v3/expert-models/features/web/crawl-async.mdx#L81-L105: define and use api_token instead of YOUR_API_KEY in both snippets.
  • v3/expert-models/features/video/deepfake-detection-async.mdx#L61-L85: define and use api_token instead of YOUR_API_KEY in both snippets.

As per coding guidelines, distinguish token types in code examples: api_token for production and sandbox_api_token for testing.

🧰 Tools
🪛 Betterleaks (1.6.1)

[high] 96-97: Discovered a potential authorization token provided in a curl command header, which could compromise the curl accessed resource.

(curl-auth-header)

📍 Affects 3 files
  • v3/expert-models/features/web/batch-scrape-async.mdx#L78-L102 (this comment)
  • v3/expert-models/features/web/crawl-async.mdx#L81-L105
  • v3/expert-models/features/video/deepfake-detection-async.mdx#L61-L85
🤖 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/batch-scrape-async.mdx` around lines 78 - 102,
Replace the placeholder authorization token in both examples at
v3/expert-models/features/web/batch-scrape-async.mdx:78-102,
v3/expert-models/features/web/crawl-async.mdx:81-105, and
v3/expert-models/features/video/deepfake-detection-async.mdx:61-85 by defining
and using the production token identifier api_token in each Python and cURL
snippet; do not use YOUR_API_KEY or sandbox_api_token.

Source: Coding guidelines

Comment on lines +60 to +64
url = "https://api.edenai.run/v3/universal-ai"
headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Use the documented production token name in every example.

Replace YOUR_API_KEY with an api_token variable in Python and shell snippets; reserve sandbox_api_token for sandbox examples.

  • v3/expert-models/features/web/map.mdx#L60-L64: use api_token.
  • v3/expert-models/features/web/research-async.mdx#L70-L74: use api_token.
  • v3/expert-models/features/web/scraping.mdx#L74-L78: use api_token.
  • v3/expert-models/features/web/search.mdx#L87-L91: use api_token.
  • v3/expert-models/features/web/structured-extraction-async.mdx#L69-L73: use api_token.
  • v3/expert-models/features/image/face-recognition.mdx#L58-L62: use api_token.
  • v3/expert-models/features/image/ai-detection.mdx#L56-L60: use api_token.

As per coding guidelines, “Distinguish token types in code examples: api_token for production and sandbox_api_token for testing.”

📍 Affects 7 files
  • v3/expert-models/features/web/map.mdx#L60-L64 (this comment)
  • v3/expert-models/features/web/research-async.mdx#L70-L74
  • v3/expert-models/features/web/scraping.mdx#L74-L78
  • v3/expert-models/features/web/search.mdx#L87-L91
  • v3/expert-models/features/web/structured-extraction-async.mdx#L69-L73
  • v3/expert-models/features/image/face-recognition.mdx#L58-L62
  • v3/expert-models/features/image/ai-detection.mdx#L56-L60
🤖 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/map.mdx` around lines 60 - 64, Replace the
production placeholder token in each affected example with the documented
api_token variable, preserving sandbox_api_token only in sandbox examples. Apply
this change in v3/expert-models/features/web/map.mdx (60-64), research-async.mdx
(70-74), scraping.mdx (74-78), search.mdx (87-91),
structured-extraction-async.mdx (69-73), and
v3/expert-models/features/image/face-recognition.mdx (58-62) and
ai-detection.mdx (56-60); update the corresponding Python and shell snippets
consistently.

Source: Coding guidelines

Comment on lines +64 to +84
> This is an **async** feature. The initial response returns a job ID. Poll `GET /v3/universal-ai/async/{job_id}` until the job completes.

<CodeGroup>
```python Python
import requests

url = "https://api.edenai.run/v3/universal-ai/async"
headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
}

payload = {
"model": "web/research_async/firecrawl",
"input": {
"prompt": "example"
}
}

response = requests.post(url, headers=headers, json=payload)
print(response.json())

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Complete the advertised async workflow.

Both pages tell users to poll, but the examples stop after job submission. Add a follow-up GET /v3/universal-ai/async/{job_id} example using the creation response’s public_id, then show how to handle a terminal job status.

  • v3/expert-models/features/web/research-async.mdx#L64-L84: add polling after submission.
  • v3/expert-models/features/web/structured-extraction-async.mdx#L63-L83: add polling after submission.
📍 Affects 2 files
  • v3/expert-models/features/web/research-async.mdx#L64-L84 (this comment)
  • v3/expert-models/features/web/structured-extraction-async.mdx#L63-L83
🤖 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/research-async.mdx` around lines 64 - 84,
Complete the async examples in v3/expert-models/features/web/research-async.mdx
(lines 64-84) and v3/expert-models/features/web/structured-extraction-async.mdx
(lines 63-83) by adding a follow-up GET request to
/v3/universal-ai/async/{job_id}, using the submission response’s public_id as
the job ID, and demonstrate handling a terminal job status after polling.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (3)
v3/expert-models/features/web/structured-extraction-async.mdx (1)

22-22: 🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

Use the full Universal AI async endpoint.

The relative endpoint contradicts the documented API format and differs from the working Quick Start URL.

Proposed fix
-`POST /v3/universal-ai/async` (async)
+`POST https://api.edenai.run/v3/universal-ai/async` (async)

As per coding guidelines, use https://api.edenai.run/v3/universal-ai endpoint format for Universal AI endpoints.

🤖 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/structured-extraction-async.mdx` at line 22,
Update the documented POST endpoint in the structured extraction async example
to use the full Universal AI URL, including the https://api.edenai.run host and
/v3/universal-ai path, while preserving the async request behavior.

Source: Coding guidelines

v3/expert-models/features/web/crawl-async.mdx (2)

83-100: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Use an absolute URL in the copy-paste examples.

example lacks a scheme, while the documented field requires a URL. Use https://example.com in both language snippets.

  • v3/expert-models/features/web/crawl-async.mdx#L83-L100: replace both "url": "example" values.
  • v3/expert-models/features/web/scraping.mdx#L77-L94: replace both "url": "example" values.
🤖 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/crawl-async.mdx` around lines 83 - 100, Replace
both `"url": "example"` values with `https://example.com` in
v3/expert-models/features/web/crawl-async.mdx lines 83-100 and
v3/expert-models/features/web/scraping.mdx lines 77-94, covering the Python and
cURL examples in each file.

71-102: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Complete the advertised async workflow.

Both examples stop after submission despite instructing users to poll. Add the follow-up GET /v3/universal-ai/async/{job_id} request and show terminal-status handling.

🤖 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/crawl-async.mdx` around lines 71 - 102, Extend
the Python and cURL examples in the async workflow documentation after
submission: extract the returned job ID, issue the documented GET request to
/v3/universal-ai/async/{job_id}, and demonstrate handling terminal job statuses.
Keep both examples consistent with the existing authorization and response
format.
🤖 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/image/explicit-content.mdx`:
- Line 17: Reconcile the changed dateModified metadata with the PR scope: in
v3/expert-models/features/image/explicit-content.mdx lines 17-17 and
v3/expert-models/features/audio/tts.mdx lines 17-17, restore each prior
dateModified value, or update the PR scope to explicitly document both metadata
changes.

In `@v3/expert-models/features/image/face-recognition.mdx`:
- Around line 59-61: Replace the YOUR_API_KEY placeholder in the Authorization
headers with <api_token> in
v3/expert-models/features/image/face-recognition.mdx:59-61,
v3/expert-models/features/web/crawl-async.mdx:78-80,
v3/expert-models/features/web/research-async.mdx:72-74,
v3/expert-models/features/web/scraping.mdx:72-74, and
v3/expert-models/features/web/search.mdx:83-85. Preserve sandbox_api_token for
sandbox examples.
- Around line 22-30: Replace the relative Universal AI endpoint references with
fully qualified URLs. In v3/expert-models/features/image/face-recognition.mdx
lines 22-30, qualify both the Universal AI and collections endpoint references
with https://api.edenai.run/v3/; in
v3/expert-models/features/web/crawl-async.mdx lines 22-22 and
v3/expert-models/features/web/research-async.mdx lines 22-22, use
https://api.edenai.run/v3/universal-ai/async; in
v3/expert-models/features/web/scraping.mdx lines 22-22 and
v3/expert-models/features/web/search.mdx lines 22-22, use
https://api.edenai.run/v3/universal-ai.

In `@v3/expert-models/features/video/deepfake-detection-async.mdx`:
- Around line 61-84: Update the Python and cURL examples around the async
deepfake detection request to define and interpolate the production api_token in
both Authorization headers, replacing the YOUR_API_KEY placeholder. Preserve the
Authorization: Bearer <api_key> format and do not use sandbox_api_token.

---

Outside diff comments:
In `@v3/expert-models/features/web/crawl-async.mdx`:
- Around line 83-100: Replace both `"url": "example"` values with
`https://example.com` in v3/expert-models/features/web/crawl-async.mdx lines
83-100 and v3/expert-models/features/web/scraping.mdx lines 77-94, covering the
Python and cURL examples in each file.
- Around line 71-102: Extend the Python and cURL examples in the async workflow
documentation after submission: extract the returned job ID, issue the
documented GET request to /v3/universal-ai/async/{job_id}, and demonstrate
handling terminal job statuses. Keep both examples consistent with the existing
authorization and response format.

In `@v3/expert-models/features/web/structured-extraction-async.mdx`:
- Line 22: Update the documented POST endpoint in the structured extraction
async example to use the full Universal AI URL, including the
https://api.edenai.run host and /v3/universal-ai path, while preserving the
async request behavior.
🪄 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: e1569203-801d-4bc1-bdee-d92ea011bd06

📥 Commits

Reviewing files that changed from the base of the PR and between cefd26d and f40e75a.

📒 Files selected for processing (21)
  • docs.json
  • v3/expert-models/features/audio/speech-to-text-async.mdx
  • v3/expert-models/features/audio/tts.mdx
  • v3/expert-models/features/image/ai-detection.mdx
  • v3/expert-models/features/image/deepfake-detection.mdx
  • v3/expert-models/features/image/explicit-content.mdx
  • v3/expert-models/features/image/face-recognition.mdx
  • v3/expert-models/features/image/generation.mdx
  • v3/expert-models/features/index.mdx
  • v3/expert-models/features/ocr/financial-parser.mdx
  • v3/expert-models/features/text/named-entity-recognition.mdx
  • v3/expert-models/features/translation/automatic-translation.mdx
  • v3/expert-models/features/video/deepfake-detection-async.mdx
  • v3/expert-models/features/video/generation-async.mdx
  • v3/expert-models/features/web/batch-scrape-async.mdx
  • v3/expert-models/features/web/crawl-async.mdx
  • v3/expert-models/features/web/map.mdx
  • v3/expert-models/features/web/research-async.mdx
  • v3/expert-models/features/web/scraping.mdx
  • v3/expert-models/features/web/search.mdx
  • v3/expert-models/features/web/structured-extraction-async.mdx
🚧 Files skipped from review as they are similar to previous changes (1)
  • docs.json

keywords={[`Eden AI`, `AI API`, `image analysis`, `computer vision`]}
datePublished="2026-05-06T00:00:00Z"
dateModified="2026-05-07T00:00:00Z"
dateModified="2026-07-27T00:00:00Z"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Reconcile the changed dateModified metadata with the PR scope.

The stated PR objective says no dateModified values change, but both existing pages update them. Revert these values or update the PR scope to reflect the metadata changes.

  • v3/expert-models/features/image/explicit-content.mdx#L17-L17: restore the prior dateModified value or document this change in the PR scope.
  • v3/expert-models/features/audio/tts.mdx#L17-L17: restore the prior dateModified value or document this change in the PR scope.
📍 Affects 2 files
  • v3/expert-models/features/image/explicit-content.mdx#L17-L17 (this comment)
  • v3/expert-models/features/audio/tts.mdx#L17-L17
🤖 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/image/explicit-content.mdx` at line 17, Reconcile
the changed dateModified metadata with the PR scope: in
v3/expert-models/features/image/explicit-content.mdx lines 17-17 and
v3/expert-models/features/audio/tts.mdx lines 17-17, restore each prior
dateModified value, or update the PR scope to explicitly document both metadata
changes.

Comment on lines +22 to +30
`POST /v3/universal-ai` (sync)

Model string pattern: `image/face_recognition/{provider}[/{model}]`

## Input

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| collection_id | uuid | Yes | Collection id from POST /v3/universal-ai/collections. The provider in the model string must match the collection's provider. |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Use fully qualified Universal AI endpoint URLs.

These new endpoint references use relative paths instead of the required https://api.edenai.run/v3/... format.

  • v3/expert-models/features/image/face-recognition.mdx#L22-L30: fully qualify both the Universal AI and collections endpoint references.
  • v3/expert-models/features/web/crawl-async.mdx#L22-L22: use https://api.edenai.run/v3/universal-ai/async.
  • v3/expert-models/features/web/research-async.mdx#L22-L22: use https://api.edenai.run/v3/universal-ai/async.
  • v3/expert-models/features/web/scraping.mdx#L22-L22: use https://api.edenai.run/v3/universal-ai.
  • v3/expert-models/features/web/search.mdx#L22-L22: use https://api.edenai.run/v3/universal-ai.
🧰 Tools
🪛 GitHub Check: Mintlify Validation (edenai) - vale-spellcheck

[warning] 30-30: v3/expert-models/features/image/face-recognition.mdx#L30
Did you really mean 'collection_id'?


[warning] 30-30: v3/expert-models/features/image/face-recognition.mdx#L30
Did you really mean 'uuid'?

📍 Affects 5 files
  • v3/expert-models/features/image/face-recognition.mdx#L22-L30 (this comment)
  • v3/expert-models/features/web/crawl-async.mdx#L22-L22
  • v3/expert-models/features/web/research-async.mdx#L22-L22
  • v3/expert-models/features/web/scraping.mdx#L22-L22
  • v3/expert-models/features/web/search.mdx#L22-L22
🤖 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/image/face-recognition.mdx` around lines 22 - 30,
Replace the relative Universal AI endpoint references with fully qualified URLs.
In v3/expert-models/features/image/face-recognition.mdx lines 22-30, qualify
both the Universal AI and collections endpoint references with
https://api.edenai.run/v3/; in v3/expert-models/features/web/crawl-async.mdx
lines 22-22 and v3/expert-models/features/web/research-async.mdx lines 22-22,
use https://api.edenai.run/v3/universal-ai/async; in
v3/expert-models/features/web/scraping.mdx lines 22-22 and
v3/expert-models/features/web/search.mdx lines 22-22, use
https://api.edenai.run/v3/universal-ai.

Source: Coding guidelines

Comment on lines +59 to +61
headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Use the documented token placeholder convention.

Use Authorization: Bearer <api_token> in production examples; reserve sandbox_api_token for sandbox examples.

  • v3/expert-models/features/image/face-recognition.mdx#L59-L61: replace YOUR_API_KEY with <api_token>.
  • v3/expert-models/features/web/crawl-async.mdx#L78-L80: replace YOUR_API_KEY with <api_token>.
  • v3/expert-models/features/web/research-async.mdx#L72-L74: replace YOUR_API_KEY with <api_token>.
  • v3/expert-models/features/web/scraping.mdx#L72-L74: replace YOUR_API_KEY with <api_token>.
  • v3/expert-models/features/web/search.mdx#L83-L85: replace YOUR_API_KEY with <api_token>.
📍 Affects 5 files
  • v3/expert-models/features/image/face-recognition.mdx#L59-L61 (this comment)
  • v3/expert-models/features/web/crawl-async.mdx#L78-L80
  • v3/expert-models/features/web/research-async.mdx#L72-L74
  • v3/expert-models/features/web/scraping.mdx#L72-L74
  • v3/expert-models/features/web/search.mdx#L83-L85
🤖 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/image/face-recognition.mdx` around lines 59 - 61,
Replace the YOUR_API_KEY placeholder in the Authorization headers with
<api_token> in v3/expert-models/features/image/face-recognition.mdx:59-61,
v3/expert-models/features/web/crawl-async.mdx:78-80,
v3/expert-models/features/web/research-async.mdx:72-74,
v3/expert-models/features/web/scraping.mdx:72-74, and
v3/expert-models/features/web/search.mdx:83-85. Preserve sandbox_api_token for
sandbox examples.

Source: Coding guidelines

Comment on lines +61 to +84
url = "https://api.edenai.run/v3/universal-ai/async"
headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
}

payload = {
"model": "video/deepfake_detection_async/resemble",
"input": {
"file": "YOUR_FILE_UUID_OR_URL"
}
}

response = requests.post(url, headers=headers, json=payload)
print(response.json())
```

```bash cURL
curl -X POST https://api.edenai.run/v3/universal-ai/async \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "video/deepfake_detection_async/resemble",
"input": {"file": "YOUR_FILE_UUID_OR_URL"}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Use the production token variable in both examples.

Define and interpolate api_token rather than embedding YOUR_API_KEY directly in the authorization header.

Proposed fix
 import requests

+api_token = "YOUR_API_KEY"
 url = "https://api.edenai.run/v3/universal-ai/async"
 headers = {
-    "Authorization": "Bearer YOUR_API_KEY",
+    "Authorization": f"Bearer {api_token}",
     "Content-Type": "application/json"
 }
 ...
+api_token="YOUR_API_KEY"
 curl -X POST https://api.edenai.run/v3/universal-ai/async \
-  -H "Authorization: Bearer YOUR_API_KEY" \
+  -H "Authorization: Bearer ${api_token}" \

As per coding guidelines, distinguish production api_token values from sandbox_api_token testing values and use the Authorization: Bearer <api_key> format.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
url = "https://api.edenai.run/v3/universal-ai/async"
headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
}
payload = {
"model": "video/deepfake_detection_async/resemble",
"input": {
"file": "YOUR_FILE_UUID_OR_URL"
}
}
response = requests.post(url, headers=headers, json=payload)
print(response.json())
```
```bash cURL
curl -X POST https://api.edenai.run/v3/universal-ai/async \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "video/deepfake_detection_async/resemble",
"input": {"file": "YOUR_FILE_UUID_OR_URL"}
api_token = "YOUR_API_KEY"
url = "https://api.edenai.run/v3/universal-ai/async"
headers = {
"Authorization": f"Bearer {api_token}",
"Content-Type": "application/json"
}
payload = {
"model": "video/deepfake_detection_async/resemble",
"input": {
"file": "YOUR_FILE_UUID_OR_URL"
}
}
response = requests.post(url, headers=headers, json=payload)
print(response.json())
🧰 Tools
🪛 Betterleaks (1.6.1)

[high] 79-80: Discovered a potential authorization token provided in a curl command header, which could compromise the curl accessed resource.

(curl-auth-header)

🤖 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/video/deepfake-detection-async.mdx` around lines 61
- 84, Update the Python and cURL examples around the async deepfake detection
request to define and interpolate the production api_token in both Authorization
headers, replacing the YOUR_API_KEY placeholder. Preserve the Authorization:
Bearer <api_key> format and do not use sandbox_api_token.

Source: Coding guidelines

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.
@FahimaGold
FahimaGold force-pushed the fahima/refresh-feature-docs-2026-07 branch from f40e75a to 78aecc6 Compare July 27, 2026 18:26
@FahimaGold
FahimaGold merged commit 3194aa4 into main Jul 27, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant