Skip to main content
POST
Submit Upload Job

Response Headers

header
Unique identifier for the request. Include this when contacting support.Example: f47ac10b-58cc-4372-a567-0e02b2c3d479

Authorizations

Authorization
string
header
required

API key authentication. Include your API key in the Authorization header as 'Bearer <api_key>'.

Headers

X-Client-Request-Id
string

Optional identifier supplied by the client to correlate this request with their own logs. When provided, the value is recorded alongside the server-assigned correlation ID in Interhuman logs to aid lookup and support investigations. This header is not echoed back in the response; the server returns its own correlation ID in the X-Correlation-ID HTTP response header.

X-Interhuman-SDK
string

Optional client SDK identity as <sdk-name>/<semver> (e.g. typescript/0.13.0), sent automatically by the first-party Interhuman SDKs. It is recorded in Interhuman telemetry so SDK adoption and version distribution are visible. The value is self-declared and not authenticated: it never affects authentication, authorization, scopes, quotas, or billing, and a missing, malformed, or unrecognized value is ignored rather than rejected.

Body

multipart/form-data
file
file
required

The file to analyze. For inter-2: an mp4, mov, avi, mkv, webm or mpeg-ts video carrying both a video and an audio track. For inter-2-audio: wav, flac, mp3, m4a, ogg, or a webm or mp4 file with an audio track (Inter-2 Audio is available to select customers). At least 3 seconds of media, at most 32 MB, and no longer than the deployment's maximum duration (30 minutes by default).

model
enum<string>
required

The Inter-2 model to analyze with. inter-2 and inter-2-audio are served; inter-2-deep is reserved and answers ih4020 until available on this route. The credential must carry the interhumanai.upload.<model> scope for the model it names. Inter-2 Audio is available to select customers; to request access, contact Interhuman support.

Available options:
inter-2,
inter-2-audio,
inter-2-deep
wait_seconds
integer
default:0

Hold the request open for up to this many seconds waiting for the job to finish. 0 (the default) answers 202 at once. Values above the deployment's bound are rejected with ih4005.

Required range: x >= 0
include[]
enum<string>[]

Optional flags naming the Conversation Quality Index sections the job's result should carry: conversation_quality_overall and/or conversation_quality_timeline, the same values as POST /v1/upload/analyze. The index is computed over the whole file once the job completes. When omitted, the result carries no conversation_quality block.

Use these flags to control which conversation quality sections are included in the response.

conversation_quality_overall: Include overall conversation quality index. conversation_quality_timeline: Include conversation quality timeline.

Available options:
conversation_quality_overall,
conversation_quality_timeline

Response

The job reached a terminal state within wait_seconds: completed with result, or failed with error.

The job envelope, returned by both v2 upload routes.

job_id
string
required

Identifier of the job. Use it with GET /v2/upload/jobs/{job_id}.

Example:

"3f1c2b7a9d4e4c8fa1b2c3d4e5f60718"

status
enum<string>
required

Where the job is: queued (accepted, not started), running, completed (result is set) or failed (error is set).

Available options:
queued,
running,
completed,
failed
Example:

"queued"

model
enum<string>
required

The model the job was submitted for.

Available options:
inter-2,
inter-2-audio,
inter-2-deep
Example:

"inter-2"

created_at
string<date-time>
required

When the job was accepted (UTC).

Example:

"2026-09-11T10:00:00Z"

expires_at
string<date-time>
required

When the job record, and its result, stop being readable (UTC). A read after this time answers ih4021.

Example:

"2026-09-11T11:00:00Z"

status_url
string
required

Path of the job's status resource, relative to the API base URL: /v2/upload/jobs/{job_id}.

Example:

"/v2/upload/jobs/3f1c2b7a9d4e4c8fa1b2c3d4e5f60718"

result
UploadJobResult · object | null

The result of a completed upload job: one entry per analyzed window.

error
ErrorResponse · object | null

Structured error returned by all HTTP error paths.

Only error_id is required. The other fields are included when available.