Skip to main content
POST
/
api
/
v1
/
mpc
/
users
/
create
{
  "create-shares": [
    "encrypted_share_1_base64",
    "encrypted_share_2_base64",
    "encrypted_share_3_base64"
  ]
}
{
  "type": "job-status",
  "job-id": "550e8400-e29b-41d4-a716-446655440000",
  "status": "created"
}

Overview

Creates a new user in the BOOP Network by submitting encrypted palm vein data shares for secure multi-party computation storage.
This endpoint is typically called by PVS devices during user registration, not directly by vendors.

Request

create-shares
array
required
Array of encrypted biometric data shares for MPC storage
user_id
string
Optional custom user identifier. If not provided, one will be generated.
metadata
object
Additional metadata about the registration

Response

type
string
required
Will be “job-status” for async operations
job-id
string
required
Unique identifier for tracking the registration job
status
string
required
Current status: “created”, “processing”, “completed”, or “failed”
user_id
string
The assigned user ID (returned when status is “completed”)
{
  "create-shares": [
    "encrypted_share_1_base64",
    "encrypted_share_2_base64",
    "encrypted_share_3_base64"
  ]
}
{
  "type": "job-status",
  "job-id": "550e8400-e29b-41d4-a716-446655440000",
  "status": "created"
}

Job Status Polling

After creating a user, poll the job status endpoint:
GET /api/v1/jobs/{job-id}/status
async function createUser(shares) {
  // Create user
  const response = await fetch('https://dev.app.boop.it/api/v1/mpc/users/create', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'X-API-Key': 'your-api-key'
    },
    body: JSON.stringify({
      'create-shares': shares
    })
  });

  const { 'job-id': jobId } = await response.json();

  // Poll for completion
  let status = 'created';
  while (status !== 'completed' && status !== 'failed') {
    await new Promise(resolve => setTimeout(resolve, 1000));

    const statusResponse = await fetch(
      `https://dev.app.boop.it/api/v1/jobs/${jobId}/status`
    );
    const result = await statusResponse.json();
    status = result.status;

    if (status === 'completed') {
      return result.user_id;
    }
  }
}

Security Considerations

  • Biometric shares must be properly encrypted before transmission
  • Each share should be sent to a different MPC node
  • Never send raw biometric data to this endpoint
  • Use TLS for all API communications

Rate Limits

  • 10 user creations per minute per API key
  • 100 user creations per hour per API key