Step 2 of 4

Integrate Verification

Now that you have API access, integrate identity verification into your platform. This is the core of LMIF compliance - checking if a likeness is claimed before allowing AI use.

🔍
Check Before You Use

Before creating an AI avatar, voice clone, or any AI representation of a person, verify their identity status with our API.

Identity Verification Endpoints

Core endpoints for checking identity status.

POST /identity/check

Check if a name+image combination is claimed or boxed.

{
  "name": "Celebrity Name",
  "image_url": "https://...",
  "use_type": "avatar|voice|video"
}
POST /identity/check/batch

Bulk verification for existing content. Process up to 100 items per request.

GET /identity/status/{id}

Get current boxing status for a known identity ID.

Response Handling

How to handle different verification responses.

UNCLAIMED

Identity not registered. You may proceed, but consider that it could be claimed later.

Recommended: Allow creation but monitor for future boxing.

CLAIMED

Identity is claimed but not boxed. Check licensing terms before use.

Recommended: Fetch licensing terms and request approval if needed.

BOXED

Identity is boxed with specific restrictions. You must comply with their terms.

Required: Block creation or obtain explicit license.

Integration Example

Basic flow for avatar creation.

// Before creating an avatar
const response = await fetch('https://api.lmif.io/identity/check', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${API_KEY}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    name: avatarName,
    image_url: avatarImageUrl,
    use_type: 'avatar'
  })
});

const result = await response.json();

switch (result.status) {
  case 'UNCLAIMED':
    // Proceed with creation
    createAvatar(avatarData);
    break;

  case 'CLAIMED':
    // Check licensing terms
    const terms = await getLicensingTerms(result.identity_id);
    if (terms.auto_approve) {
      createAvatar(avatarData);
    } else {
      requestLicense(result.identity_id);
    }
    break;

  case 'BOXED':
    // Block or request special license
    showBlockedMessage(result.restrictions);
    break;
}

Best Practices

  • Check Early

    Verify identity before any processing. Don't create content then check.

  • Cache Wisely

    Cache responses for 1 hour max. Status can change when identities are claimed.

  • Handle Webhooks

    Listen for boxing.created webhooks to update status of existing content.

  • Log Everything

    Keep audit logs of all verification checks for compliance documentation.

Test in Sandbox First

Use the sandbox environment to test your integration. It includes test identities with all status types.