Flask icon

Flask Quick Start Guide

Get started with FacePing's face recognition API using Flask

Prerequisites

Installation

First, create a new project and install the required packages:

mkdir faceping-flask
cd faceping-flask
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
pip install flask python-dotenv requests

Create .env file:

FACEPING_API_KEY=your_api_key_here
FLASK_APP=app.py
FLASK_ENV=development

Step 1: Create Flask Application

Create app.py with the basic setup:

from flask import Flask, request, jsonify
from dotenv import load_dotenv
import os
import requests

# Load environment variables
load_dotenv()

app = Flask(__name__)
API_KEY = os.getenv('FACEPING_API_KEY')

@app.route('/groups/', methods=['POST'])
def create_group(group_name):
    try:
        response = requests.post(
            f'https://api.faceping.ai/groups/{group_name}',
            headers={'Authorization': f'Bearer {API_KEY}'}
        )
        response.raise_for_status()
        return jsonify({'message': 'Group created successfully'}), 200
    except requests.exceptions.RequestException as e:
        return jsonify({'error': str(e)}), 500

Step 2: Add Face Upload Endpoint

Add the upload endpoint to app.py:

@app.route('/groups//faces', methods=['POST'])
def upload_face(group_name):
    if 'image' not in request.files:
        return jsonify({'error': 'No image file provided'}), 400

    image = request.files['image']
    if image.filename == '':
        return jsonify({'error': 'No selected file'}), 400

    try:
        files = {'image': (image.filename, image.stream, image.content_type)}
        response = requests.post(
            f'https://api.faceping.ai/groups/{group_name}/faces',
            headers={'Authorization': f'Bearer {API_KEY}'},
            files=files
        )
        response.raise_for_status()
        return jsonify({'message': 'Face uploaded successfully'}), 200
    except requests.exceptions.RequestException as e:
        return jsonify({'error': str(e)}), 500

Step 3: Add Face Search Endpoint

Add the search endpoint to app.py:

@app.route('/groups//search', methods=['POST'])
def search_faces(group_name):
    if 'image' not in request.files:
        return jsonify({'error': 'No image file provided'}), 400

    image = request.files['image']
    if image.filename == '':
        return jsonify({'error': 'No selected file'}), 400

    try:
        files = {'image': (image.filename, image.stream, image.content_type)}
        response = requests.post(
            f'https://api.faceping.ai/groups/{group_name}/search',
            headers={'Authorization': f'Bearer {API_KEY}'},
            files=files
        )
        response.raise_for_status()
        
        # Return the matches from the API response
        result = response.json()
        return jsonify(result), 200
    except requests.exceptions.RequestException as e:
        return jsonify({'error': str(e)}), 500

if __name__ == '__main__':
    app.run(debug=True)

Testing the API

You can test the endpoints using cURL:

# Create a group
curl -X POST http://localhost:5000/groups/test-group

# Upload a face
curl -X POST -F "image=@/path/to/face.jpg" \
    http://localhost:5000/groups/test-group/faces

# Search for faces
curl -X POST -F "image=@/path/to/search-face.jpg" \
    http://localhost:5000/groups/test-group/search

Security Notes

  • Images are immediately discarded after vector conversion
  • Face vectors cannot be reverse-engineered into images
  • Always use HTTPS in production
  • Store your API keys in environment variables (.env file)

Ready to get started?

Take a look at the API documentation
API docs