POST /api/capture/identify
Identify a person by providing their name and a photo URL. This endpoint downloads the image, runs the full face detection and identification pipeline, and returns comprehensive results.Authentication
No authentication required (for hackathon demo).Request
Person’s full name (minimum 1 character).
Publicly accessible URL of a photo of the person. Must be a valid HTTP/HTTPS URL.
Response
Unique identifier for this identification session (format:
identify_xxxxxxxxxxxx).Number of frames processed from the image (typically 1 for still images).
Number of faces detected in the image.
Array of person IDs created from the detected faces.
Number of persons that were successfully enriched with research data.
true if the identification completed without errors, false otherwise.Error message if
success is false, otherwise null.Example Request
Example Response (Success)
Example Response (Image Download Failed)
Status Codes
- 200 - Identification completed (check
successfield for pipeline status) - 400 - Invalid request (image download failed, invalid URL, or missing fields)
- 500 - Server error during processing
Error Codes
Whensuccess is false, the error field contains:
- Failed to download image: HTTP - Image URL returned non-200 status
- Failed to download image: - Network error or timeout
- No faces detected - Image processed but no faces found
- Face detection failed: - MediaPipe detection error
- Embedding generation failed: - ArcFace embedding error
- Enrichment timeout - Research agents exceeded timeout (partial results may exist)
Processing Pipeline
- Download - Fetch image from provided URL (30s timeout)
- Detection - Extract face bounding boxes using MediaPipe
- Embedding - Generate 512-dim face embeddings with ArcFace
- Person Creation - Store person record in database (Convex/MongoDB)
- Enrichment - Trigger research agents:
- PimEyes face search for additional photos
- Reverse image search via SerpAPI/Google Vision
- Exa API fast-pass research
- Browser Use deep research (LinkedIn, Twitter, Google, Crunchbase)
- Synthesis - Generate comprehensive dossier via Claude/Gemini
Best Practices
Use high-quality frontal face photos for best results
Ensure image URLs are publicly accessible (no auth required)
Person name should match the face in the photo
Synchronous vs. Asynchronous
This endpoint is synchronous - it waits for the full pipeline to complete before returning. For large images or complex scenes, this can take 10-30 seconds. For asynchronous processing:- Use
/api/capturewith file upload - Subscribe to real-time updates via
/api/research/{person_name}/stream - Use Convex subscriptions to watch person record updates