SDKs & Multi-Language Code Examples
Fotobots provides RESTful OpenAPI 3.1 endpoints. You can integrate directly using standard HTTP clients in any programming language.
1. Node.js / TypeScript
Photo Ingestion Example
import axios from 'axios';import fs from 'fs';
const API_BASE = 'https://api.fotobots.dev/openapi';const API_KEY = 'fb_test_YOUR_KEY';const ALBUM_ID = 'YOUR_ALBUM_UUID';
async function uploadPhoto(filePath: string) { // 1. Request presigned upload URL const { data: signData } = await axios.post( `${API_BASE}/photos/photo/signed`, { albumId: ALBUM_ID, filename: 'runner_001.jpg', contentType: 'image/jpeg', }, { headers: { 'x-api-key': API_KEY } } );
// 2. Upload image binary directly to storage const fileBuffer = fs.readFileSync(filePath); await axios.put(signData.uploadUrl, fileBuffer, { headers: { 'Content-Type': 'image/jpeg' }, });
// 3. Confirm upload to trigger AI processing const { data: successData } = await axios.post( `${API_BASE}/photos/photo/success`, { albumId: ALBUM_ID, photoId: signData.photoId, }, { headers: { 'x-api-key': API_KEY } } );
console.log('Photo queued for AI indexing:', successData);}2. Python 3
Face Search Integration
import requests
API_BASE = "https://api.fotobots.dev/openapi"API_KEY = "fb_test_YOUR_KEY"ALBUM_ID = "YOUR_ALBUM_UUID"
def search_face(probe_image_path: str): # 1. Request presigned upload for search probe sign_res = requests.post( f"{API_BASE}/photos/search/face/signed", headers={"x-api-key": API_KEY}, json={"albumId": ALBUM_ID, "filename": "probe.jpg"} ).json()
# 2. Upload probe image with open(probe_image_path, "rb") as f: requests.put(sign_res["uploadUrl"], data=f)
# 3. Query face vector matching results = requests.post( f"{API_BASE}/photos/search/face/list", headers={"x-api-key": API_KEY}, json={ "albumId": ALBUM_ID, "searchPhotoId": sign_res["searchPhotoId"], "threshold": 0.80 } ).json()
print(f"Found {len(results.get('photos', []))} matching photos!") return results3. Go (Golang)
Bib OCR Search
package main
import ( "bytes" "encoding/json" "fmt" "net/http")
func main() { url := "https://api.fotobots.dev/openapi/photos/search/text/list" payload, _ := json.Marshal(map[string]string{ "albumId": "YOUR_ALBUM_UUID", "text": "10492", })
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(payload)) req.Header.Set("Content-Type", "application/json") req.Header.Set("x-api-key", "fb_test_YOUR_KEY")
client := &http.Client{} resp, err := client.Do(req) if err != nil { panic(err) } defer resp.Body.Close()
fmt.Println("Search status:", resp.Status)}