{"id":49294978,"url":"https://github.com/credona/age-decision-antispoof","last_synced_at":"2026-05-02T00:01:26.583Z","repository":{"id":353872016,"uuid":"1221261281","full_name":"credona/age-decision-antispoof","owner":"credona","description":"Image-based anti-spoofing service detecting presentation attacks using ONNX models and multi-signal heuristics.","archived":false,"fork":false,"pushed_at":"2026-04-28T05:28:49.000Z","size":116,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-28T07:34:32.297Z","etag":null,"topics":["anti-spoofing","api","biometrics","computer-vision","credona","face-analysis","face-detection","fastapi","liveness-detection","machine-learning","onnx","open-source","presentation-attack-detection","privacy","security"],"latest_commit_sha":null,"homepage":"https://github.com/credona/age-decision","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/credona.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-26T00:53:31.000Z","updated_at":"2026-04-28T05:23:42.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/credona/age-decision-antispoof","commit_stats":null,"previous_names":["credona/age-decision-antispoof"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/credona/age-decision-antispoof","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/credona%2Fage-decision-antispoof","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/credona%2Fage-decision-antispoof/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/credona%2Fage-decision-antispoof/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/credona%2Fage-decision-antispoof/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/credona","download_url":"https://codeload.github.com/credona/age-decision-antispoof/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/credona%2Fage-decision-antispoof/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32517232,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"online","status_checked_at":"2026-05-01T02:00:05.856Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["anti-spoofing","api","biometrics","computer-vision","credona","face-analysis","face-detection","fastapi","liveness-detection","machine-learning","onnx","open-source","presentation-attack-detection","privacy","security"],"created_at":"2026-04-26T03:01:17.316Z","updated_at":"2026-05-02T00:01:26.574Z","avatar_url":"https://github.com/credona.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1\u003eAge Decision AntiSpoof\u003c/h1\u003e\n\n\u003cp\u003e\n  \u003cimg src=\"https://img.shields.io/github/actions/workflow/status/credona/age-decision-antispoof/ci.yml?branch=main\u0026label=CI\" alt=\"CI\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/actions/workflow/status/credona/age-decision-antispoof/docker.yml?branch=main\u0026label=Docker\" alt=\"Docker\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/actions/workflow/status/credona/age-decision-antispoof/codeql.yml?branch=main\u0026label=CodeQL\" alt=\"CodeQL\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/v/release/credona/age-decision-antispoof\" alt=\"Release\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/license-Apache%202.0-blue\" alt=\"License\"\u003e\n\u003c/p\u003e\n\nAge Decision AntiSpoof is the presentation attack detection service of the Age Decision ecosystem.\n\n\u003ch2\u003eResponsibility\u003c/h2\u003e\n\nThis repository owns still-image presentation attack detection and anti-spoof score production.\n\n\u003ch2\u003eScope\u003c/h2\u003e\n\nIt estimates whether a face image appears to be a real human capture or a spoof attempt.\n\nIt does not expose raw model scores, heuristic details, or internal calibration details through the public API.\n\nIt does not perform identity verification, face recognition, document verification, age estimation, or active liveness challenge.\n\nVersion 2.3.0 tightens public contract governance: stable status endpoint coverage, standardized error responses, normalized request validation errors including \u003ccode\u003emissing_file\u003c/code\u003e for missing multipart uploads, and enforced privacy-first forbidden-field rules for anti-spoof outputs.\n\n\u003chr\u003e\n\n\u003ch2\u003eWhen to use this repository\u003c/h2\u003e\n\n- you need to detect spoof attempts (photo, screen, replay)\n- you want to secure an age decision pipeline\n\n\u003ch2\u003eWhen NOT to use this repository\u003c/h2\u003e\n\n- you need age estimation\n- you need identity verification\n- you need active liveness challenges\n\n\u003chr\u003e\n\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\n- Repository: https://github.com/credona/age-decision-antispoof\n- Usage: docs/usage.md\n- Deprecation policy: docs/deprecation-policy.md\n- Error model: docs/error-model.md\n- Status contract: docs/status-contract.md\n- Models and third-party notes: docs/models.md\n- Benchmarks: docs/benchmarks.md\n- Compatibility: docs/compatibility.md\n- Security: SECURITY.md\n- Global architecture and ownership: https://github.com/credona/age-decision/blob/main/docs/architecture.md\n- Global scoring model: https://github.com/credona/age-decision/blob/main/docs/scoring.md\n- Changelog: CHANGELOG.md\n- Contributing: CONTRIBUTING.md\n- Global project: https://github.com/credona/age-decision\n\n\u003chr\u003e\n\n\u003ch2\u003eUsage example\u003c/h2\u003e\n\nRun one anti-spoof decision request:\n\n```bash\ncurl -X POST http://localhost:8001/check \\\n  -H \"X-Request-ID: test-request-001\" \\\n  -H \"X-Correlation-ID: test-correlation-001\" \\\n  -F \"file=@./test-face.jpg\"\n```\n\n\u003chr\u003e\n\nFor setup, configuration, runtime options, Docker workflows, and full response details, see `docs/usage.md`.\n\n\u003chr\u003e\n\n\u003ch2\u003eLicense\u003c/h2\u003e\n\nThis repository is released under the Apache License 2.0.\n\nThird-party models may have their own upstream license and constraints.\n\nSee docs/models.md for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcredona%2Fage-decision-antispoof","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcredona%2Fage-decision-antispoof","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcredona%2Fage-decision-antispoof/lists"}