apyhub
ARTIFICIAL INTELLIGENCE · DATA EXTRACTION

Video Label Detection

What it does

Video Label Detection analyzes a video and returns label data through either Azure or Google routes. Send a file upload to /file or a video URL to /url, choose requested_service, and provide the service-specific credentials or settings the route requires.

Use POST /file when you already have the video as binary data. The file route accepts file plus requested_service, and for Azure it can also take azure_region, azure_account_id, and azure_access_token. For Google, send google_credential_file as a binary service account JSON. Use POST /url when the video is already hosted elsewhere; that route accepts url plus requested_service, with Azure settings under azure and Google settings under google, including google_language and google_credential_json.

The response is wrapped under data and includes an azure object when you request Azure or a google object when you request Google. The schema does not define fixed label fields, so plan to consume the provider payload as returned.

This is useful for content moderation, media cataloging, and automated video indexing where you need labels from a video source without building separate integrations for each provider.

▣ ENDPOINT 01 / 02
POST
Label Detection via file upload
https://api.eu.apyverse.com/apyhub/video-detect-labels/file

QUICKSTART

GUIDE

Quickstart

Upload a video file and ask the API to detect labels using Azure or Google.

curl -X POST "https://api.eu.apyverse.com/apyhub/video-detect-labels/file" \
  -H "apy-token: $APY_TOKEN" \
  -F "file=@/path/to/video.mp4" \
  -F "requested_service=azure"

What you'll get back

Returns a JSON object with a data object. The data object contains an azure object when requested_service is azure, or a google object when requested_service is google.

{
  "data": {
    "azure": {}
  }
}
TRY ITLIVE · 500 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.
Max 100MB total per request (all files combined). Larger? Use this API's URL-based endpoint instead, if it has one.
body*
Service account JSON (Google routes).

About this endpoint

What it does

Uploads a video file and runs label detection using the requested provider. The response returns a JSON object with a data object that may contain an azure result object or a google result object, depending on requested_service.

Request Body

ParameterTypeMandatoryDescription
fileStringYesVideo file to analyze.
azure_regionStringNoAzure region to use. Example: trial.
azure_account_idStringNoAzure account identifier.
requested_serviceENUMYesProvider to use: azure or google.
azure_access_tokenStringNoAzure access token.
google_credential_fileStringNoService account JSON for Google routes. Binary file upload.

Response

Returns a JSON object with a required data object field. Inside data, the response may include an azure object when requested_service is azure, or a google object when requested_service is google; both are free-form objects with additional properties.

ParameterTypeMandatoryDescription
dataObjectYesResponse wrapper object.
data.azureObjectNoPresent when requested_service is azure. Free-form object with additional properties.
data.googleObjectNoPresent when requested_service is google. Free-form object with additional properties.

Body

Name
Type
Description
bodyREQUIRED
object

Max 100MB total per request (all files combined). Larger? Use this API's URL-based endpoint instead, if it has one.

▣ ENDPOINT 02 / 02
POST
Label Detection via URL
https://api.eu.apyverse.com/apyhub/video-detect-labels/url

QUICKSTART

GUIDE

Quickstart

Detect labels in a video from a public URL by sending the video URL and choosing the video service.

curl -X POST "https://api.eu.apyverse.com/apyhub/video-detect-labels/url" \
  -H "apy-token: $APY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://assets.apyhub.com/samples/sample.mp4",
    "requested_service": "azure"
  }'

What you'll get back

Returns a JSON object with a data field. data is an object, and it may include an azure object when requested_service is azure, or a google object when requested_service is google.

{
  "data": {
    "azure": {}
  }
}
TRY ITLIVE · 500 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.
body*
azure
google
google_credential_json
Google Cloud service account JSON (required for Google video routes).

About this endpoint

What it does

Detects labels in a video provided by URL. You send the video URL and choose which upstream service to use, and the response returns a JSON object with a data object that contains the service-specific result.

Request Body

ParameterTypeMandatoryDescription
urlStringYesVideo URL to analyze. Must be a URI.
azureObjectNoAzure-specific configuration object. Includes region, account_id, and access_token when provided.
azure.regionStringNoAzure region.
azure.account_idStringNoAzure account identifier.
azure.access_tokenStringNoAzure access token.
googleObjectNoGoogle-specific configuration object. Includes google_language and google_credential_json when provided.
google.google_languageStringNoGoogle language code.
google.google_credential_jsonObjectNoGoogle Cloud service account JSON. Required for Google video routes. See schema for nested fields.
requested_serviceENUMYesService to use for detection. Allowed values: azure, google.

Response

Returns a JSON object with a required data object field. The data object may contain an azure object when requested_service is azure, or a google object when requested_service is google.

ParameterTypeMandatoryDescription
dataObjectYesResponse payload. Contains service-specific output.
data.azureObjectNoPresent when requested_service is azure. Additional properties are allowed.
data.googleObjectNoPresent when requested_service is google. Additional properties are allowed.

Body

Name
Type
Description
bodyREQUIRED
object
▣ COMMON ERRORS

Errors any endpoint can return

400bad_request

Required parameter missing or malformed body.

401unauthorized

API key missing, revoked, or not authorized for this service.

429rate_limited

Your plan's per-second rate exceeded. Retry with exponential backoff.

503upstream_busy

Backend temporarily unavailable. Try again in a few seconds.