apyhub
GEOLOCATION · IMAGE PROCESSING

AI Image Landmark Detection API

What it does

Landmark Detection identifies landmarks in an image and returns detection results from your chosen vision provider. Send either an image URL or a file upload, and choose requested_service to route the request to apyhub, azure, or google.

Use the /url endpoint when the image is already hosted online, or /file when you want to upload a local image. The URL-based endpoint also accepts provider-specific credentials inside azure or google objects when you need to supply your own Azure or Google configuration. The file upload endpoint supports azure_key, google_key, azure_region, azure_endpoint, azure_account_id, and azure_access_token alongside the uploaded file.

The response is returned under data, with separate objects for azure, apyhub, and google. That makes it easy to compare provider output or keep a single integration point while switching backends later.

Use Landmark Detection for photo apps, travel experiences, media tagging, or any workflow that needs to recognize places from images without building and maintaining your own computer vision pipeline.

▣ ENDPOINT 01 / 02
POST
Detect landmarks (URL input)
https://api.eu.apyverse.com/apyhub/detect-landmarks/url

QUICKSTART

GUIDE

Quickstart

Send an image URL to detect landmarks with the default ApyHub provider.

curl -X POST "https://api.eu.apyverse.com/apyhub/detect-landmarks/url" \
  -H "apy-token: $APY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/landmark.jpg"}'

What you'll get back

Returns a JSON object with a data object field. That data object contains one of azure, apyhub, or google, depending on the selected service response.

{
  "data": {
    "apyhub": {}
  }
}
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
Custom credentials for Azure services.
Azure subscription key.
Azure service region.
Azure endpoint URL.
Azure account ID.
OAuth access token for Azure service.
google
Custom credentials for Google services.
Target language locale.
google_credential_json

About this endpoint

What it does

Detects landmarks from an image URL. The request sends a url and can optionally include provider credentials/configuration and a requested_service selector; the response returns a data object containing provider-specific result objects.

Request Body

ParameterTypeMandatoryDescription
urlStringYesImage URL to analyze. Must be a URI.
azureObjectNoCustom credentials for Azure services.
azure.keyStringNoAzure subscription key.
azure.regionStringNoAzure service region.
azure.endpointStringNoAzure endpoint URL.
azure.account_idStringNoAzure account ID.
azure.access_tokenStringNoOAuth access token for Azure service.
googleObjectNoCustom credentials for Google services.
google.google_languageStringNoTarget language locale.
google.google_credential_jsonObjectNoGoogle credential JSON object. See schema for nested fields.
requested_serviceENUMNoService to use. Allowed values: azure, google, apyhub. Default: apyhub.

Response

Returns a JSON object with a data object field. The data object can contain provider result objects for azure, apyhub, and google; each of those fields is an object.

ParameterTypeMandatoryDescription
dataObjectNoContainer for provider-specific landmark detection results.
data.azureObjectNoResponse object from Microsoft Azure Computer Vision.
data.apyhubObjectNoResponse object from ApyHub Vision detector.
data.googleObjectNoResponse object from Google Cloud Vision.

Body

Name
Type
Description
bodyREQUIRED
object
▣ ENDPOINT 02 / 02
POST
Detect landmarks (file upload)
https://api.eu.apyverse.com/apyhub/detect-landmarks/file

QUICKSTART

GUIDE

Quickstart

Upload an image file to detect landmarks.

curl -X POST "https://api.eu.apyverse.com/apyhub/detect-landmarks/file" \
  -H "apy-token: $APY_TOKEN" \
  -F "file=@/path/to/image.jpg"

What you'll get back

Returns a JSON object with a data object field. That data object may contain azure, apyhub, and google objects, each representing the response from the corresponding vision provider.

{
  "data": {
    "azure": {},
    "apyhub": {},
    "google": {}
  }
}
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 an image file and runs landmark detection. The response is a JSON object with a data object containing provider-specific result objects for azure, apyhub, and google.

Request Body

ParameterTypeMandatoryDescription
fileStringYesBinary file upload containing the image to analyze.
azure_keyStringNoAzure key used when requesting the Azure landmark detection result.
google_keyStringNoGoogle key used when requesting the Google Cloud Vision result.
azure_regionStringNoAzure region string.
azure_endpointStringNoAzure endpoint URL.
azure_account_idStringNoAzure account identifier.
requested_serviceENUMNoWhich service to use for the request. Allowed values: azure, google, apyhub. Default: apyhub.
azure_access_tokenStringNoAzure access token.

Response

Returns a JSON object with a data object field. Inside data, the response may include provider-specific object fields for azure, apyhub, and google.

ParameterTypeMandatoryDescription
dataObjectNoWrapper object for provider-specific landmark detection responses.
data.azureObjectNoResponse object from Microsoft Azure Computer Vision.
data.apyhubObjectNoResponse object from ApyHub Vision detector.
data.googleObjectNoResponse object from Google Cloud Vision.

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.