개발자

하나의 API로, 모든 제품에.

먼저 신원 확인을 한 뒤 후원 계정을 만들고, 그다음 바인드와 언락을 합니다. API 키는 여러분의 서버에 그대로 남습니다. 브라우저나 모바일 앱은 여러분의 백엔드와 통신하고, 그 백엔드가 저희와 통신합니다. WharfKit 지갑 세션과 패스키를 지원합니다.

const baseUrl = process.env.BOUND_IDENTITY_URL!;
const apiKey = process.env.BOUND_IDENTITY_API_KEY!; // server-side only

async function identityFetch(path, init) {
  const res = await fetch(baseUrl + path, {
    ...init,
    headers: {
      Authorization: "Bearer " + apiKey,
      Accept: "application/json",
      "Content-Type": "application/json",
      ...init?.headers,
    },
  });
  const body = await res.json();
  if (!res.ok) throw new Error(body.message || "HTTP " + res.status);
  return body;
}

// 1. Verify the person first — no chain account yet (default organization policy).
const { personDid, verificationUrl } = await identityFetch("/v1/kyc/start", {
  method: "POST",
  body: JSON.stringify({}),
});
// … open verificationUrl from your KYC provider …

// 2. When approved, take the one-time create token.
const { kycCreateToken } = await identityFetch(
  "/v1/kyc/status?personDid=" + encodeURIComponent(personDid),
);

// 3. Sponsor the provisional account. Token replay is rejected.
const { accountDid } = await identityFetch("/v1/accounts/free", {
  method: "POST",
  body: JSON.stringify({
    ownerPublicKey,
    personDid,
    kycCreateToken,
    // Production also requires emailProofToken + phoneProofToken
  }),
});

// 4. Bind the approved person to this account: the user signs once.
const { payloadToSign, message } = await identityFetch("/v1/bind/challenge", {
  method: "POST",
  body: JSON.stringify({ accountDid, personDid }),
});
await identityFetch("/v1/bind/confirm", {
  method: "POST",
  body: JSON.stringify({
    accountDid,
    personDid,
    nonce: message.nonce,
    signature, // WharfKit / passkey over payloadToSign
  }),
});

// 5. Lift faucet limits. Done.
await identityFetch("/v1/accounts/unlock", {
  method: "POST",
  body: JSON.stringify({ accountDid }),
});

신분증은 여러분의 코드를 거치지 않으며, 시크릿이 브라우저에 도달하지도 않습니다. 기본 조직은 KYC가 승인될 때까지 무료 계정 생성을 거부합니다. sandbox.identityinc.io 샌드박스에 먼저 연동하세요 — 무료 테스트 확인, 시뮬레이션 체인 — 그다음 프로덕션 트래픽을 Builder 또는 Growth로 옮기세요.

가이드 및 레퍼런스

빠른 시작, 인증, 웹훅, API가 반환하는 모든 오류 코드. 영어로 제공됩니다.

API

OpenAPI 사양: https://identityinc.io/openapi.yaml. 프로덕션: https://api.identityinc.io. 샌드박스: https://sandbox.identityinc.io (bi_test_ 키, 무료 테스트 확인, 시뮬레이션 체인). 로컬 개발 기본값은 http://127.0.0.1:4100입니다.

제품마다 키 하나

운영하는 제품마다 별도의 API 키를 발급하세요 — 지갑, 마켓플레이스, 코어뱅킹 연동 등. 각 키는 자기 데이터만 볼 수 있으며, 이 분리는 관행이 아니라 API가 강제합니다. 샌드박스 키는 sandbox.identityinc.io 체크아웃의 bi_test_…, 프로덕션 키는 identityinc.io 가입의 bi_… — 호스트를 섞지 마세요.

개발자 · Identity Inc.