apyhub
ARTIFICIAL INTELLIGENCE

AI Video Brand/Logo Detection API

Hosted on ApyHub

What it does

Video Brand Detection identifies brands in a video by sending either a video URL or an uploaded file, then returns the analysis in a service-specific response under data.azure or data.google depending on the provider you request.

Use POST /url when your video is already hosted online. Send url plus requested_service, and include the Azure or Google credentials required for that route. Use POST /file when you want to upload the video directly. That route accepts file and requested_service, with Azure connection fields or a Google credential file as needed.

The response is intentionally provider-scoped: the top-level data object contains either an azure object or a google object, matching the service you selected. The schema does not expose fixed fields inside those objects, so you can treat them as provider output and handle the contents accordingly in your integration.

Video Brand Detection fits moderation, media indexing, campaign tracking, and brand mention workflows where you need to detect brand presence from video assets without building the model pipeline yourself.

Provider (requested_service)Atoms
Azure500
Google500
▣ ENDPOINT 01 / 02
POST
Brand Detection via URL
http://localhost:8080/apyhub/detect-video-brands/url

QUICKSTART

GUIDE

Quickstart

Detect brands in a video from a public URL using Azure or Google service credentials.

curl -X POST "http://localhost:8080/apyhub/detect-video-brands/url" \
  -H "apy-token: $APY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://assets.apyhub.com/samples/sample.mp4",
    "requested_service": "azure",
    "azure": {
        "access_token": "your-access_token",
        "account_id": "your-account_id",
        "region": "your-region"
    }
  }'

What you'll get back

Returns a JSON object with a data object field. 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.
body*
azure
google
google_credential_json
Google Cloud service account JSON (required for Google video routes).

About this endpoint

What it does

Submits a video URL for brand detection and routes the request to either the Azure or Google service specified in the body. The response returns a JSON object with a data object that contains the service-specific result under azure or google.

Request Body

ParameterTypeMandatoryDescription
urlStringYesVideo URL to analyze. Must be a URI.
azureObjectNoAzure credentials/configuration used when requested_service is azure.
azure.regionStringNoAzure region.
azure.account_idStringNoAzure account ID.
azure.access_tokenStringNoAzure access token.
googleObjectNoGoogle credentials/configuration used when requested_service is google.
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 brand detection. Allowed values: azure, google.

Response

Returns a JSON object with a required data object field. Inside data, the schema defines optional azure and google object fields; the service-specific field is present when the corresponding requested_service was used.

ParameterTypeMandatoryDescription
dataObjectYesResponse wrapper containing the service-specific result.
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
▣ ENDPOINT 02 / 02
POST
Brand Detection via file upload
http://localhost:8080/apyhub/detect-video-brands/file

QUICKSTART

GUIDE

Quickstart

Upload a video file and tell the API which brand-detection service to use.

curl -X POST "http://localhost:8080/apyhub/detect-video-brands/file" \
  -H "apy-token: $APY_TOKEN" \
  -F "file=@/path/to/video.mp4" \
  -F "requested_service=azure" \
  -F 'azure_access_token="your-azure_access_token"' \
  -F 'azure_account_id="your-azure_account_id"' \
  -F 'azure_region="your-azure_region"'

What you'll get back

Returns a JSON object with a data object field. The data object 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.
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 brand detection using the selected service provider. The response returns a JSON object with a data object that contains either an azure result or a google result, depending on requested_service.

Request Body

ParameterTypeMandatoryDescription
fileStringYesVideo file to analyze. Binary upload.
azure_regionStringNoAzure region. Example: trial.
azure_account_idStringNoAzure account ID.
requested_serviceENUMYesService to use for detection: azure or google.
azure_access_tokenStringNoAzure access token.
google_credential_fileStringNoGoogle service account JSON file for Google routes. Binary upload.

Response

Returns a JSON object with a required data object field. Inside data, the schema defines optional azure and google object fields; the populated field depends on the requested service.

ParameterTypeMandatoryDescription
dataObjectYesWrapper object for the detection result.
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

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

▣ 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.