docs: refresh AI feature pages from prod /v3/info (first since 2026-05-08) - #81
Conversation
|
Warning Review limit reachedYou’ve reached a temporary PR review limit under our Fair Usage Limits Policy. Next review available in: 52 seconds Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the 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 configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (38)
WalkthroughThe 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. ChangesExpert model feature documentation
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
Possibly related PRs
Suggested reviewers: 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: 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
📒 Files selected for processing (19)
docs.jsonv3/expert-models/features/audio/speech-to-text-async.mdxv3/expert-models/features/image/ai-detection.mdxv3/expert-models/features/image/deepfake-detection.mdxv3/expert-models/features/image/face-recognition.mdxv3/expert-models/features/image/generation.mdxv3/expert-models/features/index.mdxv3/expert-models/features/ocr/financial-parser.mdxv3/expert-models/features/text/named-entity-recognition.mdxv3/expert-models/features/translation/automatic-translation.mdxv3/expert-models/features/video/deepfake-detection-async.mdxv3/expert-models/features/video/generation-async.mdxv3/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
|
|
||
| ## Endpoint | ||
|
|
||
| `POST /v3/universal-ai/async` (async) |
There was a problem hiding this comment.
🗄️ 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 toPOST https://api.edenai.run/v3/universal-ai/async.v3/expert-models/features/web/crawl-async.mdx#L22-L22: change the relative path toPOST https://api.edenai.run/v3/universal-ai/async.v3/expert-models/features/video/deepfake-detection-async.mdx#L22-L22: change the relative path toPOST 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-L22v3/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
| 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"]} | ||
| }' |
There was a problem hiding this comment.
🔒 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 useapi_tokeninstead ofYOUR_API_KEYin both snippets.v3/expert-models/features/web/crawl-async.mdx#L81-L105: define and useapi_tokeninstead ofYOUR_API_KEYin both snippets.v3/expert-models/features/video/deepfake-detection-async.mdx#L61-L85: define and useapi_tokeninstead ofYOUR_API_KEYin 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-L105v3/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
| url = "https://api.edenai.run/v3/universal-ai" | ||
| headers = { | ||
| "Authorization": "Bearer YOUR_API_KEY", | ||
| "Content-Type": "application/json" | ||
| } |
There was a problem hiding this comment.
📐 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: useapi_token.v3/expert-models/features/web/research-async.mdx#L70-L74: useapi_token.v3/expert-models/features/web/scraping.mdx#L74-L78: useapi_token.v3/expert-models/features/web/search.mdx#L87-L91: useapi_token.v3/expert-models/features/web/structured-extraction-async.mdx#L69-L73: useapi_token.v3/expert-models/features/image/face-recognition.mdx#L58-L62: useapi_token.v3/expert-models/features/image/ai-detection.mdx#L56-L60: useapi_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-L74v3/expert-models/features/web/scraping.mdx#L74-L78v3/expert-models/features/web/search.mdx#L87-L91v3/expert-models/features/web/structured-extraction-async.mdx#L69-L73v3/expert-models/features/image/face-recognition.mdx#L58-L62v3/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
| > 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()) |
There was a problem hiding this comment.
🎯 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.
cefd26d to
f3ff5b5
Compare
There was a problem hiding this comment.
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 winUse 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-aiendpoint 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 winUse an absolute URL in the copy-paste examples.
examplelacks a scheme, while the documented field requires a URL. Usehttps://example.comin 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 winComplete 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
📒 Files selected for processing (21)
docs.jsonv3/expert-models/features/audio/speech-to-text-async.mdxv3/expert-models/features/audio/tts.mdxv3/expert-models/features/image/ai-detection.mdxv3/expert-models/features/image/deepfake-detection.mdxv3/expert-models/features/image/explicit-content.mdxv3/expert-models/features/image/face-recognition.mdxv3/expert-models/features/image/generation.mdxv3/expert-models/features/index.mdxv3/expert-models/features/ocr/financial-parser.mdxv3/expert-models/features/text/named-entity-recognition.mdxv3/expert-models/features/translation/automatic-translation.mdxv3/expert-models/features/video/deepfake-detection-async.mdxv3/expert-models/features/video/generation-async.mdxv3/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
🚧 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" |
There was a problem hiding this comment.
📐 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 priordateModifiedvalue or document this change in the PR scope.v3/expert-models/features/audio/tts.mdx#L17-L17: restore the priordateModifiedvalue 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.
| `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. | |
There was a problem hiding this comment.
📐 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: usehttps://api.edenai.run/v3/universal-ai/async.v3/expert-models/features/web/research-async.mdx#L22-L22: usehttps://api.edenai.run/v3/universal-ai/async.v3/expert-models/features/web/scraping.mdx#L22-L22: usehttps://api.edenai.run/v3/universal-ai.v3/expert-models/features/web/search.mdx#L22-L22: usehttps://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-L22v3/expert-models/features/web/research-async.mdx#L22-L22v3/expert-models/features/web/scraping.mdx#L22-L22v3/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
| headers = { | ||
| "Authorization": "Bearer YOUR_API_KEY", | ||
| "Content-Type": "application/json" |
There was a problem hiding this comment.
📐 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: replaceYOUR_API_KEYwith<api_token>.v3/expert-models/features/web/crawl-async.mdx#L78-L80: replaceYOUR_API_KEYwith<api_token>.v3/expert-models/features/web/research-async.mdx#L72-L74: replaceYOUR_API_KEYwith<api_token>.v3/expert-models/features/web/scraping.mdx#L72-L74: replaceYOUR_API_KEYwith<api_token>.v3/expert-models/features/web/search.mdx#L83-L85: replaceYOUR_API_KEYwith<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-L80v3/expert-models/features/web/research-async.mdx#L72-L74v3/expert-models/features/web/scraping.mdx#L72-L74v3/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
| 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"} |
There was a problem hiding this comment.
📐 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.
| 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.
f40e75a to
78aecc6
Compare
Why
First refresh of the Expert Models feature pages since 2026-05-08.
generate-features.ymlhas 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
image/generation/openaiimage/generation/leonardo/Leonardo Kino XLimage/generation/leonardo/Leonardo Vision XLimage/generation/leonardo/SDXL 0.9image/generation/bytedance/seedream-5-0-260128image/ai_detection/winstonaiimage/deepfake_detection/sightengineocr/financial_parser/veryfiocr/financial_parser/affindatext/named_entity_recognition/openaitranslation/automatic_translation/openaivideo/generation_async/bytedancevideo/generation_async/bytedance/seedance-1-0-pro-250528video/generation_async/google/veo-3.1-generate-previewvideo/generation_async/google/veo-3.0-fast-generate-001video/generation_async/minimax/MiniMax-Hailuo-2.3Several 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_jsonwas 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-recognitionvideo/deepfake-detection-async37 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 wholegpt-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
"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 wholeaudio/speech-to-text-async.mdxdiff and part of the video one — no price movement in those rows.Video Generation Features→Video 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.dateModifiedhandling. 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'sdates.
update-dates.ymlthen bumped the 10 existing pages this PR changes, in commitf40e75a.That is the intended split — the generator preserves dates, the dates workflow owns bumping them.
Verification
/v3/info; every price above is what the API returns todayWeb Features(7 pages) added,Image Features10 → 11,Video Features1 → 2; the V3 API Reference tab keeps its ownAI Featuresgrouptest-snippets.ymlhas never exercised them, so it may still find runtime issuesFollow-ups, not blockers
The
webcategory has no entry in_FEATURE_SCHEMA_METAor_ICON_KEYWORDS, so its 7 pages fall back to generic JSON-LD (about="AI API", keywordsexpert models) and acubenav 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-docsbranch and trigger the workflow manually — the first automated run should then come back with an empty diff.Summary by CodeRabbit