ホーム / 開発者

午後のうちに構築

認証、勤怠の取得、指紋の登録、ドアの開錠まで — いつもお使いの言語で、コピー&ペーストできるサンプル付き。

クイックスタート

最初の呼び出しまで 3 ステップ

API キーを取得

開発者ポータルでアカウントを作成し、シリアル番号でデバイスをペアリングします。AuthToken が発行されます。

すべてのリクエストを認証

呼び出しのたびに AuthToken を渡します。これにより、アクセスがお客様のアカウントと特定のデバイスに限定されます。

エンドポイントを呼び出す

まず GetAttendanceByDate でデータが流れていることを確認し、その後、登録とアクセス制御に進みます。

ベース 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 をポーリングしてください。

ローカルでのテスト

手元のマシンで Callback URL をテスト

開発マシンはファイアウォールの内側にあるため、ゲートウェイは localhost に直接アクセスできません。トンネルで公開し、Callback URL を公開アドレスに向けて、テスト打刻を発生させてください。

  • Callback URL には必ず HTTPS を使用してください
  • テストセッションの間は、トンネルを起動したままにしてください
  • 無料版の ngrok の URL は再起動のたびに変わります。変わったら Callback を更新してください
  • ハンドラーは冪等にしてください — ゲートウェイは 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 やローカルソフトウェアは不要です。

⚙
デバイス側の操作: メニュー → COMM → Cloud Server / ADMS で下記のサーバーを入力し、ホーム画面にサーバー接続アイコンが表示されることを確認してください。

デバイスのサーバー設定

サーバー IP
152.53.172.248
ポート
8123(開発 / テスト用) · 80(本番用)
Enable Domain Name
OFF
Proxy Server
OFF
プロトコル
ICLOCK / Push

クラウドサーバーを設定する前に、デバイスの IP / サブネット / ゲートウェイ / DNS をお使いの LAN に合わせてください(または DHCP を使用してください)。

デバイスのシリアル番号はお手元にありますか?

開発者ポータルでペアリングすれば、数分でライブの呼び出しができます。