API documentation
Quickstart
Mint a workspace API key, install @eddieai/cli, and run a project from import to export in four commands.
Before you start
You need an Eddie account with a workspace, and you need to be that workspace’s owner — only an owner can mint an API key. You also need the workspace to have spent at least $100 in credits; see Authentication for why.
- Package
@eddieai/cli- Node version
- 18 or later
- Base URL
https://app.heyeddie.ai
Mint a workspace API key
- Open the workspace menu and choose Integrations.
- Find the API keys section.
- Click Create key, give it a label so you can tell it apart from any others later, and confirm.
- Copy the key. It starts with
sk_live_and is shown exactly once — Eddie does not store the plaintext, so a key you lose has to be revoked and re-minted, not recovered.
Install the CLI
npm i -g @eddieai/cli
Export the key, then confirm it resolves to your workspace:
export EDDIE_API_KEY=sk_live_… eddie login
A working key prints the owner email and the workspace id. Anything else is covered in Authentication.
A worked example
Four commands take a folder of footage to a downloadable MP4. Ids print to stdout; progress prints to stderr, so capturing an id into a shell variable does not also capture the progress lines.
# create a project and import footage — prints the promptable share id id=$(eddie new --import ./footage/*.mov) # prompt Eddie — the reply streams to your terminal eddie prompt "$id" "cut a 90s teaser" # export an edit by name and get a download URL eddie export "$id" "Teaser" --format mp4
The id new prints is a share id — the handle every later command takes. It is not the same as the import’s internal project id, which the CLI never surfaces.
Already have a project and just want to add more footage to it?
eddie import "$id" ./more-footage/*.mov
Using the SDK instead
Everything above is also a method call, for embedding in your own backend rather than shelling out. The package ships no top-level entry point today — import the SDK build directly:
import { Eddie } from "@eddieai/cli/dist/sdk.js";
const eddie = new Eddie({ apiKey: process.env.EDDIE_API_KEY });
const { shareId } = await eddie.createAndImport({
files: [{ path: "./footage/interview.mov" }],
});
for await (const event of eddie.prompt(shareId, "cut a 90s teaser")) {
if (event.type === "reply") process.stdout.write(event.text);
}
const { url } = await eddie.export(shareId, "Teaser", "mp4");
console.log(url);createAndImportandaddMediatake anonProgresscallback in their second argument — the same stages the CLI prints to stderr, as a function call instead of a line of text.promptis an async generator, not a promise. It yields activity, reply and notice events as the run progresses, then a finaldoneevent with the run’s outcome.exportonly accepts"mp4"today. The command reference has the full method list, with every argument and return shape.