apyhub
Back
▣ ARTIFICIAL INTELLIGENCE · DATA EXTRACTION

AI Video Text Detection API

Hosted on ApyHub

What it does

Video Text Detection extracts text from a video when you send either a video URL or an uploaded video file. Choose azure or google as the requested_service, and provide the matching provider fields for that route.

Use the /url endpoint with a url to a video file, or the /file endpoint with a binary file upload. For Azure requests, the URL route accepts azure.region, azure.account_id, and azure.access_token, while the file route accepts azure_region, azure_account_id, and azure_access_token. For Google requests, the URL route accepts google.google_language and google.google_credential_json, and the file route accepts google_language plus a binary google_credential_file.

The response wraps provider-specific results under data.azure or data.google, depending on the service you requested. That makes it suitable for workflows that need to pull visible text from videos for indexing, review, or downstream analysis without tying your app to one OCR provider.

Use Video Text Detection when you need to process screen recordings, recorded presentations, product demos, or other video assets where text appears inside the frames.

Provider (requested_service)Atoms
Azure500
Google500
▣ ENDPOINT 01 / 02
POST
Text Detection via URL
https://api.eu.apyhub.com/apyhub/detect-video-text/url

QUICKSTART

GUIDE

Quickstart

Detect text in a video from a public video URL with the Azure service.

curl -X POST "https://api.eu.apyhub.com/apyhub/detect-video-text/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. When requested_service is azure, data.azure is present and contains the Azure result.

{
  "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 text in a video fetched from a URL. You send the video url and choose the OCR provider with requested_service; the response returns a JSON object containing a data object with provider-specific results.

Request Body

ParameterTypeDescription
urlStringThe video URL to process. Must be a URI.
azureObjectAzure-specific configuration for the request.
azure.regionStringAzure region.
azure.account_idStringAzure account ID.
azure.access_tokenStringAzure access token.
googleObjectGoogle-specific configuration for the request.
google.google_languageStringGoogle language code.
google.google_credential_jsonObjectGoogle Cloud service account JSON required for Google video routes; see schema for nested fields.
requested_serviceENUMOCR provider to use. 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.

ParameterTypeDescription
dataObjectWrapper for the provider-specific result.
data.azureObjectPresent when requested_service is azure.
data.googleObjectPresent when requested_service is google.
▣ ENDPOINT 02 / 02
POST
Text Detection via file upload
https://api.eu.apyhub.com/apyhub/detect-video-text/file

QUICKSTART

GUIDE

Quickstart

Upload a video file and tell the API whether to use the Azure or Google text-detection route.

curl -X POST "https://api.eu.apyhub.com/apyhub/detect-video-text/file" \
  -H "apy-token: $APY_TOKEN" \
  -F "file=@/path/to/video.mp4" \
  -F "requested_service=azure" \
  -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. That 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*

About this endpoint

What it does

Uploads a video file and runs text detection using either Azure or Google, depending on requested_service. The response returns a JSON object with a data object containing provider-specific results.

Request Body

ParameterTypeDescription
fileBinaryVideo file to analyze. Binary upload.
azure_regionStringAzure region to use.
google_languageStringGoogle language code.
azure_account_idStringAzure account identifier.
requested_serviceENUMProvider to use: azure or google.
azure_access_tokenStringAzure access token.
google_credential_fileBinaryGoogle service account JSON. Binary upload.

Response

Returns a JSON object with a required data object field. The data object may contain azure and/or google objects, depending on requested_service.

ParameterTypeDescription
dataObjectContainer for provider-specific output.
data.azureObjectPresent when requested_service is azure. Additional properties are allowed.
data.googleObjectPresent when requested_service is google. Additional properties are allowed.

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.