Skip to content

관리자 API

모든 엔드포인트는 HTTP Basic 인증이 필요하고 /api/v1/admin 경로를 쓴다.

FACE_API_STORAGE_ENABLED=true가 필요하다. 꺼져 있으면 501을 반환한다.

Authorization: Basic base64(username:password)

GET /api/v1/admin/stats

전체 통계 조회.

curl -u admin:password https://face-api.xylolabs.com/api/v1/admin/stats
{
  "total_images": 1250,
  "total_jobs": 3420,
  "total_faces_detected": 8910,
  "avg_inference_ms": 14.52,
  "storage_used_bytes": 524288000,
  "jobs_by_type": { "detect": 2100, "mask": 1320 },
  "jobs_by_method": { "gaussian": 800, "pixelate": 400, "solid": 120 }
}

이미지

GET /api/v1/admin/images

저장된 이미지 목록 (페이지네이션).

파라미터 타입 기본값 설명
page int 1 페이지 번호
per_page int 20 페이지당 항목 수 (1-100)
curl -u admin:password "https://face-api.xylolabs.com/api/v1/admin/images?page=1&per_page=10"
{
  "items": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "filename": "photo.jpg",
      "content_type": "image/jpeg",
      "size_bytes": 245760,
      "width": 1920,
      "height": 1080,
      "original_url": "https://static.face-api.xylolabs.com/...",
      "job_count": 3,
      "created_at": "2026-04-06T10:30:00+00:00"
    }
  ],
  "total": 1250, "page": 1, "per_page": 10, "pages": 125
}

GET /api/v1/admin/images/{image_id}

이미지 상세 정보와 관련 작업 목록.

curl -u admin:password https://face-api.xylolabs.com/api/v1/admin/images/550e8400-...

DELETE /api/v1/admin/images/{image_id}

이미지와 관련 작업, S3 객체를 모두 삭제한다. 204 반환.

curl -u admin:password -X DELETE https://face-api.xylolabs.com/api/v1/admin/images/550e8400-...

GET /api/v1/admin/images/{image_id}/download

원본 이미지의 presigned S3 URL로 리다이렉트(302)한다.


작업

GET /api/v1/admin/jobs

작업 목록 (페이지네이션, 필터 지원).

파라미터 타입 기본값 설명
page int 1 페이지 번호
per_page int 20 페이지당 항목 수 (1-100)
job_type string detect 또는 mask
method string 블러 방식으로 필터
curl -u admin:password "https://face-api.xylolabs.com/api/v1/admin/jobs?job_type=mask&method=gaussian"

GET /api/v1/admin/jobs/{job_id}

작업 상세 정보 (감지 데이터 포함).

GET /api/v1/admin/jobs/{job_id}/download

처리된 이미지의 presigned S3 URL로 리다이렉트(302)한다.