Skip to main content
These pages describe the Training API on dev, where authenticated creation, editing, downloads, revert, and website brand lookup have been tested live. Production availability is not confirmed. Your API service and worker must both run the updated code. See Testing and availability.

Availability

Development check on September 7, 2026

Live development verification used a real Knowlify API key against https://web-dev-0acd.up.railway.app. The API service and worker were updated together. Verified behavior:
  • Training creation completed, including a locked color palette, and returned downloadable MP4s.
  • A title edit progressed through processing and applying to complete. Worker logs confirmed the Remotion/Hera editor and renderer.
  • Revert restored a downloaded file byte-for-byte identical to the original.
  • Website brand lookup returned live context.dev data after CONTEXT_DEV_API_KEY was configured on the API service.
  • Missing authentication, invalid inputs, unsupported aspect-ratio changes, and idempotency conflicts returned the expected errors.
Media inspection remains necessary: an API success does not guarantee every creative instruction was followed. In the test, a 10-second request with short, exact narration produced about five seconds of video. Check the generated duration, spoken words, and sampled frames against your requirements. The API service needs CONTEXT_DEV_API_KEY for website brand lookup. This provider credential is separate from the Knowlify key used by clients. Two Python urllib catalog requests received Cloudflare 403 responses before API authentication. The same key succeeded with curl. These checks did not cover invalid API keys, rate exhaustion, edits, brand lookup, Marketing routes, or every creation field.

Marketing and Claude verification

Development tests on September 9, 2026 also verified Marketing catalogs, website branding, private image import, creation, edit/revert, cancellation, narration replacement, and Spanish translation. Downloaded media confirmed translated speech and source preservation. Unsupported native-audio translation and missing-source reformat requests are rejected before work starts. In Claude, one Knowlify connector discovered all 26 tools. A single three-video Marketing batch displayed three players, which automatically progressed through rendering to Ready to play without manual refresh or another chat message. These browser results apply to a compatible MCP Apps client with the player visible. A later check using the same connection successfully returned Training status and Marketing branding, but Claude initially failed to load a newly requested Training player with “Unable to reach Knowlify.” On September 11, the same saved chat loaded its player. Testing exposed expired saved media links; MCP 0.6.2 adds automatic link recovery. The saved Training video subsequently played to 9 seconds of its 10-second duration without clicking Refresh status. A successful tool response alone still does not prove that a particular client displayed its player.

Client verification on September 11, 2026

  • Codex CLI: real OAuth approval and four authenticated read-only calls succeeded: Training and Marketing styles (17 each), plus completed Training and Marketing video status.
  • ChatGPT web: OAuth approval, the same four read-only calls, and a native Marketing player succeeded with CSP enforcement enabled. A single three-video Marketing batch displayed three cards and advanced automatically from 35% rendering to Ready to play without manual refresh or a follow-up chat message.
  • Claude Code: OAuth sign-in to Knowlify succeeded and the client health check reported Connected. Model-driven testing was blocked by an expired Claude login and the signed-in account’s Free plan; this is separate from the Knowlify connection.
  • Cursor: real OAuth approval discovered all 26 tools, and the same four read-only calls succeeded. Native players rendered. Testing identified a Marketing refresh-routing issue because Cursor omits result metadata; MCP 0.6.5 now includes category in structured status results. A subsequent visual check confirmed the Marketing player played through all 15 seconds without clicking Refresh status.
The native-callback and player follow-up passed 111 MCP tests, including isolated Redis persistence, PKCE, token replay, redirect binding, polling limits, preserving distinct batch labels when status responses omit titles, exact Cursor callback registration, and player category routing when clients omit result metadata. The production MCP dependency audit reported no known vulnerabilities. These results supplement the earlier API/app audit and do not imply that every client supports an inline player. The three ChatGPT batch downloads had video and audio tracks, lasted about 10.14 seconds, and measured 768 × 1344. Sampled frames showed distinct monochrome animations, but the requested on-screen wording was absent even though it reached the API correctly. Validate creative fidelity separately from successful submission, rendering, and playback. The September 9 security follow-up also rendered a fresh branded Training video, downloaded its MP4, and verified a real headline edit in sampled frames. Repeating the identical edit request returned the same edit ID; changing its body with the same idempotency key returned HTTP 409. Development API keys continued authenticating after plaintext storage was removed. The same follow-up passed 6,610 automated API/MCP/app tests, 51 live HTTP checks, and 108 database access-control assertions. Database checks cover caller impersonation, missing identities, scene-search write permissions, organization-project boundaries, and organization credit-row access. Temporary database fixtures were rolled back. Twelve backend integration tests were skipped and are not counted as passed. Security tests cover authentication, category/workspace access, scope escalation, code/token replay, revocation, secret redaction, and concurrent generation admission. They reduce risk but do not prove the absence of all vulnerabilities. Live tests use development services; do not infer production readiness from the MCP hostname.

Local regression tests

With Git and uv installed:
These tests use isolated fixtures; they do not prove that a deployed worker renders correctly.

Live smoke test

After deploying the updated API and worker to a test environment, store your test key in a private file outside the repository, then run from the backend checkout:
Replace the base URL if your deployment uses another address. The script can also read KNOWLIFY_API_KEY from the environment instead of --key-file. The runner checks invalid input and website brand lookup, creates a short Training video, waits for confirmed rendering, submits a title edit, checks video_synced, and requests revert. It writes a JSON report without saving the key. Generation consumes the test account’s normal resources. Without --write, it only checks validation and brand lookup; the lookup still calls the external provider. The default brand domain is stripe.com; change it with --brand-domain. The default polling timeout is 900 seconds per job; change it with --timeout.

Visual verification

Use the report’s video identifier to find the test video in the development dashboard. For a manual run, inspect the initial render, then the edited render before reverting: the title should change while narration and timing remain unchanged. Inspect the restored result after revert. The smoke runner checks API state; it does not watch the media or wait for a rebuilt combined file after revert.

Exact text and edit publication follow-up

The tested Standard animated generator deliberately excludes readable text from model-generated footage. A follow-up Marketing edit added the exact words “Brief”, “Create” and “Share” as post-production overlays. Downloaded frames confirmed the text. The edited output contained audio and video and measured about 10.17 seconds at 720 × 1280. That live edit exposed a separate completion bug: edit status returned complete with a null result link before final assembly had published the file. Planner PR #266, merged into development, waits for publication before reporting a rendered edit complete. Thirty-eight targeted regression tests passed. The development worker rollout completed successfully. A new live edit was observed at 95% assembling with is_complete: false, then completed with video_synced: true and a nonempty result.link. That returned link downloaded successfully, and extracted frames confirmed Brief, Create and Share.

Codex end-to-end verification

On September 11, Codex CLI used its existing Knowlify OAuth connection to create one 10-second Standard animated Marketing video, poll it to completion, submit one post-production text edit, and poll the edit until complete with video_synced: true and a result link. The run made one generation call, seven video-status calls, one edit call and eight edit-status calls. No duplicate mutation was submitted. An independent download of the edited result contained audio and video, measured 10.165 seconds at 720 × 1280, and showed the requested CODEX TEST overlay in sampled frames throughout the clip. The initial noninteractive attempt was blocked before submission because Codex’s approval policy was never. The successful run used --approve-for-me so authorized mutations went through Codex’s approval reviewer. No sandbox or approval bypass was used. Codex desktop embedded playback remains unverified: the computer-use tool blocks control of that app in this environment.

Codex desktop display fallback

A user-provided desktop test showed the Nike Marketing video completed, but Codex displayed JSON rather than a video player and incorrectly claimed a player was visible. MCP 0.6.6 adds completion resource links and runtime guidance that distinguishes tool results from actual player display. Clients should poll when no interactive player is confirmed and return a clickable Watch video link on completion. This does not establish embedded-player support in Codex desktop. All 117 MCP regression tests passed, including link safety, completed/unsynced edit handling, and HTTP fallback responses. After deploying 0.6.6, a real Codex CLI call for that existing Nike video returned an explicit clickable Watch video link and did not claim a visible player. Only one status read was requested; no video was created or edited for this fallback test. Desktop embedding remains unverified.