홈 / 개발자

하루 오후면 개발 완료

인증, 출퇴근 기록 조회, 지문 등록, 문 열기까지 — 이미 사용 중인 언어로 복사해서 붙여 넣는 예제를 제공합니다.

퀵스타트

첫 호출까지 세 단계

API 키 받기

개발자 포털에서 계정을 만들고 시리얼 번호로 기기를 페어링하세요. AuthToken를 받게 됩니다.

모든 요청 인증

호출할 때마다 AuthToken를 함께 전달하세요. 계정과 해당 기기로 접근 범위가 제한됩니다.

엔드포인트 호출

먼저 GetAttendanceByDate로 데이터가 정상적으로 수신되는지 확인한 다음, 등록과 출입 통제로 넘어가세요.

Base URL

https://api.camsbiometrics.com/v3/

# Fetch attendance for a date range
curl https://api.camsbiometrics.com/v3/attendance/getbyscandate \
  -d "AuthToken=$API_KEY" \
  -d "StartDate=2026-06-01" \
  -d "EndDate=2026-06-21"
$ch = curl_init("https://api.camsbiometrics.com/v3/attendance/getbyscandate");
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_POSTFIELDS => [
    "AuthToken"  => $apiKey,
    "StartDate"  => "2026-06-01",
    "EndDate"    => "2026-06-21",
  ],
]);
$data = json_decode(curl_exec($ch), true);
import requests

r = requests.post(
    "https://api.camsbiometrics.com/v3/attendance/getbyscandate",
    data={
        "AuthToken": api_key,
        "StartDate": "2026-06-01",
        "EndDate": "2026-06-21",
    },
)
logs = r.json()["Attendance"]
const res = await fetch(
  "https://api.camsbiometrics.com/v3/attendance/getbyscandate",
  {
    method: "POST",
    headers: { "Content-Type": "application/x-www-form-urlencoded" },
    body: new URLSearchParams({
      AuthToken: apiKey,
      StartDate: "2026-06-01",
      EndDate: "2026-06-21",
    }),
  }
);
const { Attendance } = await res.json();

모든 작업에 같은 패턴이 적용됩니다. 경로와 파라미터만 바꾸면 됩니다.

자주 쓰는 레시피

복사하고, 붙여 넣고, 배포하세요

POST

사용자 등록

curl .../v3/user/add \
 -d "AuthToken=$K" \
 -d "DeviceSN=ZK6A2300583" \
 -d "EmployeeCode=1042" \
 -d "Name=Priya"
POST

문 열기

curl .../v3/access/opendoor \
 -d "AuthToken=$K" \
 -d "DeviceSN=ZK6A2300583" \
 -d "DoorNo=1"
CALLBACK

webhook 등록

curl .../v3/callback/register \
 -d "AuthToken=$K" \
 -d "Url=https://app/hook" \
 -d "Events=attendance.new"
🔒

키는 서버 측에서만 보관

클라이언트 측 코드에 AuthToken를 절대 포함하지 마세요. 백엔드를 통해 호출을 프록시하세요.

🔄

webhook을 멱등하게 구현

게이트웨이는 200를 반환할 때까지 재시도합니다. 이벤트 ID로 중복을 제거하면 재시도가 안전합니다.

⏳

대기열 명령 처리

기기가 오프라인이면 409가 반환되며 명령은 대기열에 등록됩니다. GetCommandStatus를 폴링하세요.

로컬 테스트

내 컴퓨터에서 콜백 URL 테스트

개발 PC는 방화벽 뒤에 있으므로 게이트웨이가 localhost에 직접 접근할 수 없습니다. 터널로 외부에 노출하고, Callback URL을 공개 주소로 지정한 다음 테스트 출퇴근 기록을 발생시키세요.

  • 항상 HTTPS 콜백 URL을 사용하세요
  • 테스트 세션 내내 터널을 켜 두세요
  • 무료 ngrok URL은 재시작하면 바뀝니다. 바뀔 때마다 콜백을 업데이트하세요
  • 핸들러를 멱등하게 만드세요. 게이트웨이는 200를 받을 때까지 재시도합니다
# 1. install & authenticate ngrok
ngrok config add-authtoken $TOKEN
# 2. expose your local app (e.g. port 3000)
ngrok http 3000
# Forwarding https://abc123.ngrok-free.app -> localhost:3000
# 3. set that HTTPS URL as your Callback URL
# Cams ngrok helper kit (Windows)
# download:
developer.camsbiometrics.com/setup/ngrok-helper-kit.rar
# then:
edit app.properties   # add your ngrok authtoken
run  check_ngrok.bat

기기 연결

단말기를 게이트웨이에 연결

대부분의 출퇴근 단말기(ZKTeco, eSSL 및 호환 제품)는 ICLOCK / push 프로토콜을 사용합니다. 기기에서 클라우드 서버 항목을 설정하면 PC나 로컬 소프트웨어 없이 출퇴근 데이터가 계정으로 전송됩니다.

⚙
기기에서: Menu → COMM → Cloud Server / ADMS로 이동해 아래 서버를 입력한 다음, 홈 화면에 서버 연결 아이콘이 표시되는지 확인하세요.

기기 서버 설정

서버 IP
152.53.172.248
포트
8123 (개발 / 테스트) · 80 (운영)
Enable Domain Name
OFF
Proxy Server
OFF
프로토콜
ICLOCK / Push

클라우드 서버를 설정하기 전에 기기의 IP / 서브넷 / 게이트웨이 / DNS를 LAN에 맞게 설정하세요(또는 DHCP 사용).

기기 시리얼 번호를 준비하셨나요?

개발자 포털에서 페어링하고 몇 분 만에 실시간 호출을 해 보세요.