Skip to main content

Get Job

Retrieve a single full job record by its id, including aggregated scores and per-model results.

GET /v1/jobs/{job_id}

Authentication​

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

Path Parameters​

ParameterTypeDescription
job_idnumber(int)The edge job id returned by Create Job.

Response​

data is an array containing the matching full job record. The record has the same shape as a single entry from List Jobs. An empty array means no job matched the id.

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 (for example, every model failed).
prediction_sourcestring | nullThe scoring profile that scored the job — "default" for the CONFIG.yaml defaults, or "name@version" when the job was created with profile_name.
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[]).
Lane status and errors

A lane's status is error — and its error text populated — only when every model in that lane failed. A lane where at least one model produced analysis reports complete with error: null, even if another model in the lane failed.

{
"status": true,
"code": 200,
"message": "Job 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,
"prediction_score": 0.14,
"prediction_label": "REAL",
"prediction_source": "default",
"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 Get Jobs (Partial) for a lighter payload.


Example Request​

curl http://<edge-host>:9123/v1/jobs/42 \
-H "Authorization: Bearer df_..."