biofrq.analyze

The "tell me everything" action: detect + liveness + attributes for one image, in one call. Liveness and attribute heads run concurrently after a single shared detection pass, so this is faster than the equivalent sequence of single-action calls.

No embedding is produced — use biofrq.identify or biofrq.enroll if you need one.

Params

FieldTypeRequiredDefaultNotes
images[0]ImageItemyesOne image. See Envelope → Image inputs.
kindsstring[]noallWhich attribute heads to run. See biofrq.attributes for the supported set.

biofrq.analyze does not honour the livenessThreshold parameter today — only the dedicated biofrq.liveness action does. The verdict comes back at the env default.

Request

json
{
  "action": "biofrq.analyze",
  "params": {
    "images": [
      { "kind": "image", "bytes": "<base64>", "contentType": "image/jpeg" }
    ],
    "kinds": ["emotion", "ageGender"]
  }
}

Response

The per-action payload lives at data.results[0].value:

json
{
  "detection":  { "faceBox": { "x": 142, "y": 87, "w": 218, "h": 218 }, "confidence": 0.992 },
  "liveness":   { "verdict": "live", "score": 0.96, "reasons": [] },
  "attributes": {
    "emotion":   { "label": "neutral", "confidence": 0.71 },
    "ageGender": { "age": 31, "gender": "female", "confidence": 0.82 }
  }
}

The detection block uses the same shape as biofrq.detect but without alignedCropPng — ask biofrq.detect with returnAlignedCrop: true if you need the crop on the wire.

Common errors

  • INVALID_REQUEST — no face in the image, or unknown entry in kinds.
Open in playgroundbiofrq.analyze