Skip to main content

List Jobs

Retrieve full job records, including aggregated scores and per-model results, with optional filtering, sorting, and paging. Soft-deleted jobs are excluded.

GET /v1/jobs

Authentication​

  • Authentication is required. Include a valid df_ API key in the Authorization header, or rely on the machine-local default credential. See Authentication.

Query Parameters​

All parameters are optional.

ParameterTypeDefaultDescriptionRequired
job_idnumber(int)—Get for a single job_idNo
statusstring—Filter by job status (e.g. queued, processing, complete, error).No
modelstring—Return only jobs that included this model.No
file_typestring—Filter by video, audio, or image.No
titlestring—Case-insensitive substring match on the job title.No
limitnumber(int)50Maximum records to return (clamped to 1–500).No
offsetnumber(int)0Number of records to skip, for paging.No
sort_bystringcreated_atOne of id, status, title, file_type, created_at (date is an alias for created_at).No
sort_orderstringdescasc or desc.No

Response​

data is an array of full job records.

FieldTypeDescription
idnumber(int)The job id.
input_pathstringThe submitted file path.
titlestring | nullThe job label.
modestring | nullThe processing mode.
file_typestring | nullvideo, audio, or image.
modelsstring[]The models selected for the job.
statusstringqueued, processing, complete, or error.
error_messagestring | nullFailure detail when status is error.
core_job_idnumber(int) | nullThe underlying core processing id.
created_at / updated_at / completed_at / deleted_attimestamp | nullLifecycle timestamps.
video_time / audio_timenumber(float) | nullLane processing time in seconds.
progressnumber(float) | nullCompletion percentage.
prediction_scorenumber(float) | nullThe final aggregated score across all applicable lanes.
prediction_labelstring | nullThe verdict: FAKE, REAL, or NONE when no verdict could be produced.
prediction_sourcestring | nullThe scoring profile that scored the job — "default" or "name@version".
videoobjectReturned only for video jobs with visual models. Fields: score(float), coverage(float), threshold(float), status(string), error(string), chunk_scores(float[]), optional frame_scores(float[]), optional face_box(float[][]).
audioobjectReturned only for audio/video jobs with audio models. Fields: score(float), coverage(float), threshold(float), status(string), error(string), chunk_scores(float[]), optional frame_scores(float[]).
imageobjectReturned only for image jobs. Fields: score(float), coverage(float), threshold(float), status(string), error(string), chunk_scores(float[]).
{
"status": true,
"code": 200,
"message": "Jobs fetched",
"data": [
{
"id": 42,
"input_path": "/var/lib/deepfaic/uploads/sample.mp4",
"title": "Q3 onboarding call",
"mode": "normal",
"file_type": "video",
"models": ["facia", "diffusion", "swintf", "audio"],
"status": "complete",
"error_message": null,
"core_job_id": 128,
"created_at": "2026-06-04T10:15:00Z",
"updated_at": "2026-06-04T10:16:12Z",
"completed_at": "2026-06-04T10:16:12Z",
"deleted_at": null,
"video_time": 41.2,
"audio_time": 12.8,
"progress": 100.0,
"video": {
"score": 0.18,
"coverage": 0.92,
"threshold": 0.4,
"status": "complete",
"error": null,
"chunk_scores": [0.12, 0.21, 0.17],
"frame_scores": [0.11, 0.19, 0.22],
"face_box": [[0.1, 0.2, 0.4, 0.6]]
},
"audio": {
"score": 0.07,
"coverage": 1.0,
"threshold": 0.4,
"status": "complete",
"error": null,
"chunk_scores": [0.05, 0.08],
"frame_scores": [0.04, 0.06, 0.08]
}
}
]
}
tip

If you only need lifecycle and status fields, use List Jobs (Partial) for a lighter payload.


Example Request​

curl "http://<edge-host>:9123/v1/jobs?status=complete&file_type=video&limit=20" \
-H "Authorization: Bearer df_..."