API documentation
Command reference
Every command the Eddie AI CLI publishes and the SDK method behind it: login, new, import, prompt and export. What each one takes, what it returns, and what it prints.
How to read this page
Every command below shows the CLI form and the SDK method it calls. Both authenticate the same key the same way, so a call that works one way works the other — pick whichever fits the code you are writing.
login / whoami
Confirms the key resolves to a workspace and reports who owns it. Neither command changes anything, and neither costs credits.
eddie login # Signed in as devops@studio.com (workspace a1b2c3…). eddie whoami # devops@studio.com a1b2c3…
const { email, workspaceId } = await eddie.whoami();- Returns
emailandworkspaceIdas strings.- Fails when
- The key is missing, malformed, or revoked.
new
Creates a project, uploads and imports the local files you name, and waits for analysis to finish. Returns the promptable share id — the id every later command takes.
eddie new --import ./footage/*.mov [--name "Client Interview"] # (progress on stderr) # a1b2c3d4e5f6… ← the share id, on stdout
const { shareId } = await eddie.createAndImport(
{ name: "Client Interview", files: [{ path: "./footage/a.mov" }, { path: "./footage/b.mov" }] },
{ onProgress: (p) => console.error(p.stage, p.file ?? "", p.detail ?? "") },
);- Takes
- One or more local file paths, an optional project name, and an optional
mode— onlyrough_cut(the default) is wired. - Returns
{ projectId, shareId }. UseshareIdfor every later command;projectIdis internal bookkeeping.- Duration
- Blocks until analysis finishes — uploads run first, then transcription and content analysis. Minutes, for real footage.
- Cost
- The usual import rate. See how credits and billing work.
import
Adds local files to a project that already exists, and waits for the new media to finish analysis. The project stays the same share id; nothing about media already in it changes.
eddie import "$id" ./more-footage/*.mov
await eddie.addMedia("$id", [{ path: "./more-footage/c.mov" }]);- Takes
- A share id, plus one or more local file paths.
- Returns
{ projectId, shareId }— the sameshareIdyou passed in.
prompt
Prompts Eddie and streams the run as it happens: activity as the model works, the reply as it is written, and a final status once the run ends.
eddie prompt "$id" "cut a 90s teaser, punchy captions" # (activity on stderr, the reply streams to stdout)
for await (const event of eddie.prompt(shareId, "cut a 90s teaser")) {
if (event.type === "reply") process.stdout.write(event.text);
if (event.type === "activity") console.error("·", event.text);
if (event.type === "done") console.error("run", event.status);
}- Takes
- A share id and the prompt text.
- Yields
activity,replyandnoticeevents as the run progresses, then onedoneevent with a status:done,failed,cancelled,queued,heldorrefused.- held or queued
- The run has not started analysing yet — held is the import-readiness lock, queued means capacity. Neither is a failure; the CLI prints the notice and exits.
export
Renders an edit to MP4 and returns a download URL.
eddie export "$id" "Teaser" --format mp4 [--resolution 1080p|source] # https://cdn.heyeddie.ai/renders/teaser….mp4
const { url } = await eddie.export(shareId, "Teaser", "mp4", "1080p");- Takes
- A share id, the edit’s name exactly as it appears in the project, and optionally a resolution —
1080p(default) orsource. - Returns
{ url }— the finished MP4’s download link.- Only format
mp4. NLE interchange formats (Premiere, Resolve, FCPXML, OTIO, EDL) are not wired against this client.
What is not listed
- Every other export format. Only MP4 renders today. A workflow that needs a Premiere or Resolve project has to go through the Eddie web application for now.
- Project modes besides Chat & Edit.
newalways creates arough_cutproject. - Reading a project back — transcripts, sources, an edit’s contents. This client is write-oriented: create, import, prompt, export. Reading a project’s detail back out is the MCP surface’s job — see the tool reference.
None of these are permanent limits of the product. They are the limits of what this client wires up so far.