Desarrolladores
Una API. Todos tus productos.
Primero la verificación de identidad, luego una cuenta patrocinada, luego el vínculo y el desbloqueo. Tu clave de API se queda en tu propio servidor: el navegador o la app móvil habla con tu backend, y tu backend habla con nosotros. Funciona con sesiones de WharfKit y con passkeys.
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 }),
});Ningún documento de identidad pasa por tu código y ningún secreto llega al navegador. Las organizaciones por defecto rechazan la creación gratuita de cuentas hasta que el KYC esté aprobado. Integra contra el sandbox en sandbox.identityinc.io, verificaciones de prueba gratuitas, cadena simulada, y luego mueve el tráfico de producción a Builder o Growth.
Guías y referencia
Inicio rápido, autenticación, webhooks y todos los códigos de error que devuelve la API. Publicado en inglés.
API
Especificación OpenAPI: https://identityinc.io/openapi.yaml. Producción: https://api.identityinc.io. Sandbox: https://sandbox.identityinc.io (claves bi_test_, verificaciones de prueba gratuitas, cadena simulada). El desarrollo local usa por defecto http://127.0.0.1:4100.
Una clave por producto
Emite una clave de API distinta para cada producto que tengas: tu monedero, tu marketplace, tu integración bancaria. Cada clave solo ve sus propios datos; el aislamiento lo impone la API, no una convención. Las claves de sandbox son bi_test_… desde el checkout en sandbox.identityinc.io; las de producción son bi_… desde el registro en identityinc.io, no mezcles hosts.