apyhub
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
http://localhost:8080/apyhub/detect-video-text/url
QUICKSTARTGUIDE

Quickstart

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

curl -X POST "http://localhost:8080/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

ParameterTypeMandatoryDescription
urlStringYesThe video URL to process. Must be a URI.
azureObjectNoAzure-specific configuration for the request.
azure.regionStringNoAzure region.
azure.account_idStringNoAzure account ID.
azure.access_tokenStringNoAzure access token.
googleObjectNoGoogle-specific configuration for the request.
google.google_languageStringNoGoogle language code.
google.google_credential_jsonObjectNoGoogle Cloud service account JSON required for Google video routes; see schema for nested fields.
requested_serviceENUMYesOCR 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.

ParameterTypeMandatoryDescription
dataObjectYesWrapper for the provider-specific result.
data.azureObjectNoPresent when requested_service is azure.
data.googleObjectNoPresent when requested_service is google.

Body

Name
Type
Description
bodyREQUIRED
object
▣ ENDPOINT 02 / 02
POST
Text Detection via file upload
http://localhost:8080/apyhub/detect-video-text/file
QUICKSTARTGUIDE

Quickstart

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

curl -X POST "http://localhost:8080/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*
Service account JSON (Google routes).

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

ParameterTypeMandatoryDescription
fileStringYesVideo file to analyze. Binary upload.
azure_regionStringNoAzure region to use.
google_languageStringNoGoogle language code.
azure_account_idStringNoAzure account identifier.
requested_serviceENUMYesProvider to use: azure or google.
azure_access_tokenStringNoAzure access token.
google_credential_filebinaryNoGoogle 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.

ParameterTypeMandatoryDescription
dataObjectYesContainer for provider-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

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.