Yandex Cloud
Search
Contact UsGet started
  • Pricing
  • Customer Stories
  • Documentation
  • Blog
  • All Services
  • System Status
    • Featured
    • Infrastructure & Network
    • Data Platform
    • Containers
    • Developer tools
    • Serverless
    • Security
    • Monitoring & Resources
    • AI for business
    • Business tools
  • All Solutions
    • By industry
    • By use case
    • Economics and Pricing
    • Security
    • Technical Support
    • Start testing with double trial credits
    • Cloud credits to scale your IT product
    • Gateway to Russia
    • Cloud for Startups
    • Center for Technologies and Society
    • Yandex Cloud Partner program
  • Pricing
  • Customer Stories
  • Documentation
  • Blog
© 2025 Direct Cursus Technology L.L.C.
Yandex Vision OCR
  • Getting started
  • Access management
  • Pricing policy
  • Audit Trails events
  • Release notes
  • FAQ

In this article:

  • Examples
  • Getting started
  • Find faces in an image
  • Ready-to-use function for sending requests in bash

Detecting faces in images

Written by
Yandex Cloud
Improved by
penggrin12
Updated at November 26, 2025
  • Examples
    • Getting started
    • Find faces in an image
    • Ready-to-use function for sending requests in bash

Warning

The Vision OCR features listed below are legacy features discontinued on May 14, 2024.

To detect faces in a photo, use the Face Detection feature.

To do this, in the batchAnalyze method, set the type property to FACE_DETECTION.

ExamplesExamples

Getting startedGetting started

To use the examples, install cURL.

Get your account data for authentication:

Yandex or federated account
Service account
  1. Get an IAM token for a Yandex account, federated account, or local account.
  2. Get the ID of the folder for which your account has the ai.vision.user role or higher.
  3. When accessing Vision OCR via the API, provide the received parameters in each request:
  • Specify the IAM token in the Authorization header.
  • Specify the folder ID in the x-folder-id header.
Authorization: Bearer <IAM_token>
x-folder-id: <folder_ID>

Vision OCR supports two authentication methods based on service accounts:

  • With an IAM token:

    1. Get an IAM token.

    2. Provide the IAM token in the Authorization header in the following format:

      Authorization: Bearer <IAM_token>
      
  • With API keys.

    Use API keys if requesting an IAM token automatically is not an option.

    1. Get an API key.

    2. Provide the API key in the Authorization header in the following format:

      Authorization: Api-Key <API_key>
      

Do not specify the folder ID in your requests, as the service uses the folder the service account was created in.

Find faces in an imageFind faces in an image

  1. Prepare an image file that meets the requirements:

    • The supported file formats are JPEG, PNG, and PDF. Specify the MIME type of the file in the mime_type property. The default value is image.
    • The maximum file size is 1 MB.
    • The image size should not exceed 20 MP (height × width).

    Note

    Need an example? Download the image.

  2. Encode the file into Base64:

    UNIX
    Windows
    PowerShell
    Python
    Node.js
    Java
    Go
    base64 -i input.jpg > output.txt
    
    C:> Base64.exe -e input.jpg > output.txt
    
    [Convert]::ToBase64String([IO.File]::ReadAllBytes("./input.jpg")) > output.txt
    
    # Import a library for encoding files in Base64.
    import base64
    
    # Create a function to encode a file and return the results.
    def encode_file(file_path):
      with open(file_path, "rb") as fid:
        file_content = fid.read()
      return base64.b64encode(file_content).decode("utf-8")
    
    // Read the file contents to memory.
    var fs = require('fs');
    var file = fs.readFileSync('/path/to/file');
    
    // Get the file contents in Base64 format.
    var encoded = Buffer.from(file).toString('base64');
    
    // Import a library for encoding files in Base64.
    import org.apache.commons.codec.binary.Base64;
    
    // Get the file contents in Base64 format.
    byte[] fileData = Base64.encodeBase64(yourFile.getBytes());
    
    import (
      "bufio"
      "encoding/base64"
      "io/ioutil"
      "os"
    )
    
    // Open the file.
    f, _ := os.Open("/path/to/file")
    
    // Read the file contents.
    reader := bufio.NewReader(f)
    content, _ := ioutil.ReadAll(reader)
    
    // Get the file contents in Base64 format.
    base64.StdEncoding.EncodeToString(content)
    
  3. Create a file with the request body, e.g., body.json:

    body.json:

    {
        "folderId": "b1gvmob95yys********",
        "analyze_specs": [{
            "content": "iVBORw0KGgo...",
            "features": [{
                "type": "FACE_DETECTION"
            }]
        }]
    }
    

    Where:

    • folderId: ID of any folder for which your account has the ai.vision.user role or higher.
    • analyze_specs: content: Base64-encoded image.
  4. Send a request using the batchAnalyze method and save the response to a file, e.g., output.json:

    Bash
    CMD
    PowerShell
    export IAM_TOKEN=<IAM_token>
    curl \
      --request POST \
      --header "Content-Type: application/json" \
      --header "Authorization: Bearer ${IAM_TOKEN}" \
      --data '@body.json' \
      https://vision.api.cloud.yandex.net/vision/v1/batchAnalyze > output.json
    
    set IAM_TOKEN=<IAM_token>
    curl ^
      --request POST ^
      --header "Content-Type: application/json" ^
      --header "Authorization: Bearer %IAM_TOKEN%" ^
      --data "@body.json" ^
      https://vision.api.cloud.yandex.net/vision/v1/batchAnalyze > output.json
    
    $Env:IAM_TOKEN="<IAM_token>"
    curl `
      --request POST `
      --header "Content-Type: application/json" `
      --header "Authorization: Bearer $Env:IAM_TOKEN" `
      --data '@body.json' `
      https://vision.api.cloud.yandex.net/vision/v1/batchAnalyze > output.json
    

    Where IAM_TOKEN is the IAM token you got before you started.

Ready-to-use function for sending requests in bashReady-to-use function for sending requests in bash

The example below is intended to be run in MacOS and Linux. To run it in Windows, see how to work with Bash in Microsoft Windows.

  1. If you do not have the Yandex Cloud CLI installed yet, install and initialize it.

  2. Copy the function to the terminal:

    vision_face_detection() {
        curl --header "Authorization: Bearer `yc iam create-token`" \
        "https://vision.api.cloud.yandex.net/vision/v1/batchAnalyze" \
        -d @<(cat << EOF
    {
        "folderId": "`yc config get folder-id`",
        "analyze_specs": [{
            "content": "`base64 -i $1`",
            "features": [{
                "type": "FACE_DETECTION"
            }]
        }]
    }
    EOF
    )
    }
    

    Explanations:

    • yc iam create-token: get an IAM token.
    • -d @<(cat EOF ... EOF): create a request body.
    • yc config get folder-id: get the ID of the default folder selected in the CLI.
    • base64 -i $1: Base64 encoding of the image passed in the function arguments.
  3. Now you can call this function by passing the image path in the arguments:

    vision_face_detection path/to/image.jpg
    

Was the article helpful?

© 2025 Direct Cursus Technology L.L.C.