{"openapi":"3.0.3","info":{"title":"FaceSync API","version":"1.0.0","description":"Face consistency verification API for AI avatar creators. Checks whether AI-generated images maintain consistent facial identity across outputs."},"servers":[{"url":"http://facesync.dev/api/v1"}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"API key (fs_live_xxx)"}}},"security":[{"bearerAuth":[]}],"paths":{"/characters":{"post":{"operationId":"createCharacter","summary":"Create a character","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"}},"required":["name"]}}}},"responses":{"201":{"description":"Character created"}}},"get":{"operationId":"listCharacters","summary":"List characters","responses":{"200":{"description":"Array of characters"}}}},"/characters/{id}":{"get":{"operationId":"getCharacter","summary":"Get character details","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Character with references"}}},"delete":{"operationId":"deleteCharacter","summary":"Delete a character","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted"}}}},"/characters/{id}/references":{"post":{"operationId":"uploadReference","summary":"Upload reference image","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"imageUrl":{"type":"string"},"imageBase64":{"type":"string"},"filename":{"type":"string"}}}}}},"responses":{"201":{"description":"Reference uploaded"}}}},"/characters/{id}/references/{refId}":{"delete":{"operationId":"deleteReference","summary":"Delete reference image","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"refId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted"}}}},"/checks":{"post":{"operationId":"checkFace","summary":"Check candidate face against character","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"characterId":{"type":"string"},"imageUrl":{"type":"string"},"imageBase64":{"type":"string"},"threshold":{"type":"number"}},"required":["characterId"]}}}},"responses":{"200":{"description":"Check result with similarity scores"}}},"get":{"operationId":"listChecks","summary":"List recent checks","parameters":[{"name":"limit","in":"query","schema":{"type":"integer","default":20}},{"name":"offset","in":"query","schema":{"type":"integer","default":0}}],"responses":{"200":{"description":"Array of checks"}}}},"/checks/batch":{"post":{"operationId":"batchCheckFaces","summary":"Batch check multiple candidates","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"characterId":{"type":"string"},"images":{"type":"array","items":{"type":"object"}},"threshold":{"type":"number"}},"required":["characterId","images"]}}}},"responses":{"200":{"description":"Batch results"}}}},"/checks/{id}":{"get":{"operationId":"getCheck","summary":"Get check result","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Check details"}}}},"/account":{"get":{"operationId":"getAccount","summary":"Account info and usage","responses":{"200":{"description":"Account details with usage"}}}},"/accounts":{"post":{"operationId":"createAccount","summary":"Create account (public)","security":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string"},"name":{"type":"string"}},"required":["email"]}}}},"responses":{"201":{"description":"Account created with API key"}}}}}}