Predictions
A guide on how to work with predictions using the WriftAI JavaScript client
This section demonstrates common prediction operations you can perform with the WriftAI JavaScript client. These examples are not exhaustive — check the client reference for all options.
Get a Prediction by ID
const prediction = await wriftai.predictions.get('your-prediction-id');Cancel a Prediction by ID
await wriftai.predictions.cancel('your-prediction-id');Create a Prediction
With the latest version of a model
const prediction = await wriftai.predictions.create({
model: 'deepseek-ai/deepseek-r1',
input: {
prompt: 'Summarize quantum computing.',
},
});With a specific version of a model
const prediction = await wriftai.predictions.create({
model: 'deepseek-ai/deepseek-r1:2',
input: {
prompt: 'Summarize quantum computing.',
},
});With a webhook for prediction updates
const prediction = await wriftai.predictions.create({
model: 'deepseek-ai/deepseek-r1',
input: {
prompt: 'Summarize quantum computing.',
},
webhook: {
url: 'https://example.com/webhooks/wriftai',
secret: 'top-secret', // This is optional
},
});With file inputs
File inputs are automatically uploaded when you create a prediction. Wrap a Uint8Array,
Blob, or File in FileData, and no need to call wriftai.files.upload() separately.
Files can be nested anywhere in input, including inside arrays, objects, or combinations of
both, and you can include as many as you need. They'll all be uploaded concurrently.
From a browser file input (<input type="file">):
import { FileData } from 'wriftai';
const prediction = await wriftai.predictions.create({
model: 'pyannote/speaker-diarization-community-1',
input: { audio: new FileData(input.files[0]) },
});From constructed data:
import { FileData } from 'wriftai';
const blob = new Blob(recordedChunks, { type: 'audio/wav' });
const prediction = await wriftai.predictions.create({
model: 'pyannote/speaker-diarization-community-1',
input: { audio: new FileData(blob) },
});From a fetch response:
import { FileData } from 'wriftai';
const res = await fetch('https://example.com/audio.wav');
const prediction = await wriftai.predictions.create({
model: 'pyannote/speaker-diarization-community-1',
input: { audio: new FileData(await res.blob(), 'audio/wav') },
});From a file path (requires node:fs):
import { readFile } from 'node:fs/promises';
import { FileData } from 'wriftai';
const prediction = await wriftai.predictions.create({
model: 'pyannote/speaker-diarization-community-1',
input: { audio: new FileData(await readFile('./audio.wav'), 'audio/wav') },
});For large files, use openAsBlob to stream from disk without loading
the entire file into memory (requires node:fs):
import { openAsBlob } from 'node:fs';
import { FileData } from 'wriftai';
const prediction = await wriftai.predictions.create({
model: 'pyannote/speaker-diarization-community-1',
input: {
audio: new FileData(await openAsBlob('./long-recording.wav'), 'audio/wav'),
},
});For more details on working with files, see the Files guide.
With input validation enabled
Enable early input validation against the model’s input schema before a prediction is created. This catches invalid inputs upfront and prevents unnecessary model execution and cost.
const prediction = await wriftai.predictions.create({
model: 'deepseek-ai/deepseek-r1',
input: {
prompt: 'Summarize quantum computing.',
},
validate_input: true,
});Create and wait for completion
const prediction = await wriftai.predictions.create(
{
model: 'deepseek-ai/deepseek-r1',
input: {
prompt: 'Summarize quantum computing.',
},
},
true,
);Create and wait with custom options
const prediction = await wriftai.predictions.create(
{
model: 'deepseek-ai/deepseek-r1',
input: {
prompt: 'Summarize quantum computing.',
},
},
true,
{
pollInterval: 500,
onPoll: async (prediction) => {
// your custom logic
},
},
);Wait for an existing prediction to complete
const prediction = await wriftai.predictions.wait('your-prediction-id');List Predictions
const predictions = await wriftai.predictions.list();Filter by status
import { Status } from 'wriftai';
const predictions = await wriftai.predictions.list({
statuses: [Status.failed, Status.cancelled],
});