Skip to main content
Legacy presets create IDKit requests compatible with both World ID 4.0 and 3.0 protocols. These function the same as VerificationLevel in World ID 3.0.

orbLegacy

Requires Orb verification.
import { IDKit, orbLegacy } from "@worldcoin/idkit-core";

const request = await IDKit.request({
  app_id: "app_xxxxx",
  action: "my-action",
  rp_context: { /* ... */ },
}).preset(orbLegacy({ signal: "user-123" }));

secureDocumentLegacy

Requires at least a Secure Document verification. Returns the user’s highest credential (Secure Document or Orb).
import { IDKit, secureDocumentLegacy } from "@worldcoin/idkit-core";

const request = await IDKit.request({
  app_id: "app_xxxxx",
  action: "my-action",
  rp_context: { /* ... */ },
}).preset(secureDocumentLegacy({ signal: "user-123" }));

documentLegacy

Requires at least a Document verification. Returns the user’s highest credential (Document, Secure Document, or Orb).
import { IDKit, documentLegacy } from "@worldcoin/idkit-core";

const request = await IDKit.request({
  app_id: "app_xxxxx",
  action: "my-action",
  rp_context: { /* ... */ },
}).preset(documentLegacy({ signal: "user-123" }));

Parameters

All legacy presets accept an optional signal parameter:
ParameterTypeDescription
signalstring?Binds specific context into the proof (e.g. user ID, wallet address). Your backend should enforce the same value.