Outils
CLI et SDK
Deux couches légères et typées au-dessus de l’API. Le SDK pour le code qui crée des vidéos ; la CLI chasca pour votre terminal, vos scripts et votre CI.
https://app.trychasca.com/api Configurer
Installez la CLI et le SDK depuis npm (Node 20 ou plus récent) :
# the chasca command
npm install -g @chasca/cli
# the SDK, in your project
npm install @chasca/sdk La CLI et le SDK lisent les deux mêmes variables d’environnement :
export CHASCA_API_URL=https://app.trychasca.com/api
export CHASCA_API_KEY=chk_live_... CHASCA_API_URL est facultative, avec https://app.trychasca.com/api par défaut. Les clés se créent dans l’application,
sous Settings → API keys (offre Plus ou supérieure).
La CLI chasca
# list voices (no key needed)
chasca voices
# create a 30-second vertical video and wait for it
chasca generate "How does a heat pump work?" --length 0:30 --aspect 9:16 --wait
# check on a video
chasca status 0b9c6f2e-5d1a-4c3e-9a47-2f8e1c7d4b60
# change one thing and wait for it: subtitles, style, reveal, music, logo, credit, voice or format
chasca change 0b9c6f2e-5d1a-4c3e-9a47-2f8e1c7d4b60 subtitles off --wait
# a new voice or format makes a separate video, charged like one
chasca change 0b9c6f2e-5d1a-4c3e-9a47-2f8e1c7d4b60 format 9:16 --wait
# your latest videos
chasca list --limit 20 --lengthaccepteM:SSpar paliers de 30 secondes, jusqu’à30:00.--aspectaccepte16:9,9:16ou1:1.--waitne rend la main qu’une fois la vidéo (ou la nouvelle version) prête.-
chasca change <id> <what> <value>modifie un seul élément :subtitles,style,reveal,music,watermark,logo,credit,voiceouformat. Une nouvelle voix ou un nouveau format crée une vidéo distincte, facturée comme telle. --jsonaffiche la réponse brute de l’API, pratique pour la rediriger versjq.
Le SDK TypeScript
@chasca/sdk fonctionne partout où fetch existe (Bun, Node 20+). Chaque réponse est validée
selon les mêmes contrats que ceux de l’API, et tous les échecs lèvent une erreur d’un seul type, ChascaError,
avec un code stable. Votre clé reste privée et n’apparaît jamais dans les messages d’erreur.
import { ChascaClient, ChascaError } from '@chasca/sdk';
const chasca = new ChascaClient({
apiKey: process.env.CHASCA_API_KEY!,
baseUrl: process.env.CHASCA_API_URL ?? 'https://app.trychasca.com/api',
});
// 1. queue a video (202) and wait until it is ready
const job = await chasca.createExplainer({
input: 'How vaccines train the immune system',
length: '1:30',
aspect: '16:9',
preset: 'chalkboard',
});
const video = await chasca.waitForExplainer(job.id, {
onUpdate: (e) => console.log(e.status, e.stage, Math.round(e.progress * 100) + '%'),
});
console.log(video.videoUrl);
// 2. change one thing: a free new version of the same video, with the same narration
const change = await chasca.changeExplainer(video.id, { kind: 'style', preset: 'pencil' });
if (change.made === 'version') {
const updated = await chasca.waitForVersion(video.id, change.version.id);
console.log(updated.videoUrl);
}
// 3. errors are typed
try {
await chasca.getExplainer('not-a-real-id');
} catch (err) {
if (err instanceof ChascaError) console.error(err.status, err.code, err.message);
} Vous pouvez aussi modifier vous-même le graphe de scènes et l’enregistrer comme nouvelle version :
// edit the scene graph directly: rename a heading, then commit it as a new version
const current = await chasca.getExplainer(video.id);
const graph = structuredClone(current.sceneGraph!);
graph.scenes[0]!.heading = 'THE SNOWBALL EFFECT';
const v3 = await chasca.editExplainerGraph(video.id, graph);
await chasca.waitForVersion(video.id, v3.id); Méthodes
| Méthode | Description |
|---|---|
createExplainer(params) | POST /v1/explainer. Met une vidéo en file d’attente ; renvoie l’enregistrement créé. |
waitForExplainer(id, options?) | Interroge l’API jusqu’à l’état ready (la promesse est résolue) ou failed (une erreur est levée). Options : intervalMs, timeoutMs, onUpdate. |
getExplainer(id) | GET /v1/explainer/:id, avec le graphe de scènes, les scènes et les versions. |
listExplainers({ limit }) | GET /v1/explainer, de la plus récente à la plus ancienne (limit de 1 à 100). |
changeExplainer(id, change) | POST …/change avec un seul changement. Renvoie { made: "version", version }, ou { made: "video", explainer } pour une nouvelle voix ou un nouveau format. |
editExplainerGraph(id, sceneGraph) | POST …/edit avec un graphe de scènes modifié ; renvoie la version en file d’attente. |
waitForVersion(id, versionId, options?) | Interroge l’API jusqu’à ce que cette version soit prête ; la promesse est résolue avec la vidéo explicative mise à jour. |
revertExplainer(id, versionId) | POST …/revert. Rétablit une version antérieure terminée comme version courante. |
duplicateExplainer(id) | POST …/duplicate. Renvoie la copie. |
deleteExplainer(id) | DELETE /v1/explainer/:id. |
listVoices({ language }) | GET /v1/voices. Tous les narrateurs, chacun avec un extrait audio. |
listLanguages() | GET /v1/languages. |
Le constructeur est new ChascaClient({ apiKey, baseUrl }). Toutes les méthodes acceptent un paramètre
facultatif { signal }, qui permet d’annuler l’appel avec un AbortController.