Developer Guide

Documentation

Getting Started

  1. Create an account. Sign up with email or Google from the login page.
  2. Create an archive. An archive is a collection of related audio or video files — a podcast series, interview corpus, lecture recordings, or any media collection you want to explore.
  3. Upload media. Add audio or video files to your archive. Supported formats include MP3, MP4, WAV, M4A, WebM, and most common media types. Files are transcribed automatically.
  4. Open the Studio. Once your media is transcribed, open the Studio to start building exploration apps.

Templates

Templates are pre-built starting points for exploring your archive. Pick one in the Studio and you'll have a working app in seconds — then customize it through conversation.

💬

Ask Me Anything

Ask questions about your archive and get cited answers grounded in the actual content. Uses search → clip → cite pipeline with cached question history.

searchclipcitesaveload

You can also describe something entirely custom — the AI will plan and build it for you using the SDK methods below.

SDK Reference

Every app runs inside a sandbox with access to the ideo global. These are the methods available for searching, browsing, and interacting with your archive.

search ideo.search(query, options?)

Find relevant media items via vector similarity. Returns ranked items with similarity scores. Pure retrieval — does not extract passages.

clip ideo.clip(query, { itemId, minDuration? })

Extract a relevant passage from a specific item. LLM reads the transcript and finds the best matching segment. minDuration defaults to 180s (3 min).

cite ideo.cite(query, sources)

Produce a cited answer grounded in clip sources. Returns [answerText, sources] with inline [0], [1] citations.

items ideo.items()

List all media items in the archive with titles, durations, and metadata.

transcript ideo.transcript(itemId)

Full timestamped transcript for a media item. Returns paragraphs with speaker labels.

save ideo.save(key, value)

Persist a JSON value under a key, scoped to this archive. Use for caching app state, bookmarks, user interactions, etc.

load ideo.load(key)

Load a previously saved value by key. Returns null if not found.

Usage example

// Search for relevant items
const items = await ideo.search("climate change");
// items: [{ id, title, mediaType, durationSeconds, similarity }, ...]

// Extract a clip from a specific item
const clip = await ideo.clip("key moment", { itemId: items[0].id });
// clip: { mediaItemId, content, startTime, endTime, playbackId }

// Full AMA pipeline: search → clip → cite
const ranked = await ideo.search("key themes");
const clips = await Promise.all(
  ranked.map(item => ideo.clip("key themes", { itemId: item.id }))
);
const [answer, refs] = await ideo.cite("What are the key themes?", clips);

// Browse all media
const allItems = await ideo.items();
const fullTranscript = await ideo.transcript(allItems[0].id);

// Persist and retrieve app state
await ideo.save("bookmarks", [{ itemId: "...", note: "interesting" }]);
const bookmarks = await ideo.load("bookmarks");

The Studio

The Studio is where you build custom exploration tools for your archive. Start from a template or describe what you want, then refine it through conversation.

  1. Pick a template. Choose one of the built-in templates or describe a custom app. Templates give you a working app instantly.
  2. Preview. See your app running against your real archive data in a live preview panel.
  3. Iterate. Tell the AI what to change — add features, adjust the layout, fix bugs. Each edit builds on the previous version. Start simple and grow complexity through feedback.
  4. Save. When you're happy with the result, save it to your archive.

Publishing

When you're satisfied with an app, you can save and publish it:

  1. Save. Give your app a name and save it. Saved apps appear in the Studio and on your archive page.
  2. Publish. Published apps are accessible at /explore/[slug] — a standalone page anyone can visit and use.
Ideoscopic

© 2026 Ideoscopic. All rights reserved.