Video Emotion API

Get Multiple Frame

Changed on

Per-frame face detections.

Per-face emotion scores are on processed_frames[].faces[].emotions. Each face also carries valence, arousal and intensity computed from those scores, so you do not need one valence/arousal request per face per frame. They equal what GET /videos/{video_id}/frames/{frame_id}/valence_arousal?face_id= returns for that face. The top-level circumplex_version names the coordinate table behind them.

To reproduce the clip-wide GET /videos/{video_id}/valence_arousal result from this list, average valence and arousal over the faces first, then take the length of that averaged vector; averaging the per-face intensity values gives a different number (the average per-face intensity). This only holds for the full, unfiltered listing (every frame, no face_ids): a window (start_frame/length) or a face subset has a different set of faces to average over, so its mean is not the clip figure.

get/v1/videos/{video_id}/frames

Request

  • Base URL
    https://api.imentiv.ai (the document declares no server; this is the origin it was published from)
  • Auth
    • API key in header X-API-Key
    • or HTTP bearer
    • or OAuth 2
      Authorization code: https://api.imentiv.ai/oauth/authorize
      Token URL: https://api.imentiv.ai/oauth/token scopes: media.read

Path parameters

video_idstring required

The unique video ID of the video for which the frames to be fetched

Query parameters

start_framestring nullable

Frame number to start from (inclusive). Defaults to the start of the video.

lengthstring nullable

Number of frames to return from start_frame. Omit (or 0) for every stored frame. Page long videos: each frame also carries image URLs.

face_idsstring

Optional comma-separated list of face IDs (e.g., '1,2,3')

Response

Successful Response

circumplex_versionstring

Name of the valence/arousal coordinate table the numbers were computed with: each emotion label sits at a fixed (valence, arousal) point and a face's values are the score-weighted sum of those points. It reflects the table in use now, not the one in use when the video was analysed, and it changes only when the table does. Applies to every face's valence, arousal and intensity.

Example response

{
  "processed_frames": [
    {
      "faces": [
        {
          "arousal": 0.1082,
          "box": [
            10,
            20,
            100,
            120
          ],
          "emotions": {
            "angry": 0.0003,
            "contempt": 0.0383,
            "disgust": 0.0019,
            "fear": 0.00004,
            "happy": 0.9505,
            "neutral": 0.008,
            "sad": 0.0002,
            "surprise": 0.0008
          },
          "face_id": 1,
          "intensity": 0.6334,
          "valence": 0.6241
        }
      ],
      "found_faces": [
        1
      ],
      "frame_id": 1,
      "timestamp": 0
    }
  ],
  "circumplex_version": "v2"
}

Changes

    • info

      added the optional property to the response with the status

    • info

      added the optional property /////// to the response with the status

    • info

      added the optional property /////// to the response with the status

    • info

      added the optional property /////// to the response with the status

    • info

      added the optional property /////// to the response with the status

    • info

      added the optional property /////// to the response with the status

    • info

      added the optional property /////// to the response with the status

    • info

      added the required property ///// to the response with the status

    • info

      added the required property ///// to the response with the status

    • info

      added the required property ///// to the response with the status

    • info

      the endpoint scheme security ApiKeyAuth was added to the API

    • info

      the endpoint scheme security BearerAuth was added to the API

    • info

      the endpoint scheme security OAuth2Delegated was added to the API