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 theAuthorizationheader, or rely on the machine-local default credential. See Authentication.
Query Parameters
All parameters are optional.
| Parameter | Type | Default | Description | Required |
|---|---|---|---|---|
job_id | number(int) | — | Get for a single job_id | No |
status | string | — | Filter by job status (e.g. queued, processing, complete, error). | No |
model | string | — | Return only jobs that included this model. | No |
file_type | string | — | Filter by video, audio, or image. | No |
title | string | — | Case-insensitive substring match on the job title. | No |
limit | number(int) | 50 | Maximum records to return (clamped to 1–500). | No |
offset | number(int) | 0 | Number of records to skip, for paging. | No |
sort_by | string | created_at | One of id, status, title, file_type, created_at (date is an alias for created_at). | No |
sort_order | string | desc | asc or desc. | No |
Response
data is an array of full job records.
| Field | Type | Description |
|---|---|---|
id | number(int) | The job id. |
input_path | string | The submitted file path. |
title | string | null | The job label. |
mode | string | null | The processing mode. |
file_type | string | null | video, audio, or image. |
models | string[] | The models selected for the job. |
status | string | queued, processing, complete, or error. |
error_message | string | null | Failure detail when status is error. |
core_job_id | number(int) | null | The underlying core processing id. |
created_at / updated_at / completed_at / deleted_at | timestamp | null | Lifecycle timestamps. |
video_time / audio_time | number(float) | null | Lane processing time in seconds. |
progress | number(float) | null | Completion percentage. |
prediction_score | number(float) | null | The final aggregated score across all applicable lanes. |
prediction_label | string | null | The verdict: FAKE, REAL, or NONE when no verdict could be produced. |
prediction_source | string | null | The scoring profile that scored the job — "default" or "name@version". |
video | object | Returned 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[][]). |
audio | object | Returned 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[]). |
image | object | Returned 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_..."