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-audio: wav, flac, mp3, m4a, ogg, or a webm or mp4 file with an audio track. 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-audio is served; inter-2 and inter-2-deep are reserved and answer ih4020 until available on this route. The credential must carry the interhumanai.upload.<model> scope for the model it names.

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

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-audio"

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.