Get started with FacePing's face recognition API using Flask
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
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
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
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)
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