Skip to main content

Registration

Before the Sequencer can index activity for a participant, that user (or bot) must register against the new API. This process binds an Ed25519 public key and TIP-compatible PIN to the account.

Check registration status

Use this endpoint to confirm whether a user is already onboarded to the Sequencer API:

Endpoint URL

GET https://api.mixin.one/safe/me
Response
{
"data": {
"user_id": "UUID-USER",
"identity_number": "123456",
"phone": "+8610010",
"full_name": "",
"biography": "",
"avatar_url": "",
"relationship": "",
"mute_until": "0001-01-01T00:00:00Z",
"created_at": "0001-01-01T00:00:00Z",
"code_id": "UUID-CODE",
"code_url": "",
"features": [],
"has_safe": true, // if true, user have register safe.
"session_id": "UUID-SESSION",
"device_status": "",
"has_pin": false,
"receive_message_source": "",
"accept_conversation_source": "",
"accept_search_source": "",
"fiat_currency": "",
"transfer_notification_threshold": 0,
"transfer_confirmation_threshold": 0,
"pin_token_base64": "",
"salt_base64": "",
"tip_key_base64": "",
"tip_counter": 0,
"has_emergency_contact": false
}
}

Register a user or bot

If the user is not registered, submit the public key, signature, and PIN payload to activate their account. A dedicated ed25519 key pair per user is recommended to keep permissions isolated from the Session secret.

Endpoint URL

POST https://api.mixin.one/safe/users

Payload

{
"public_key": "ED25519-PUBLIC-KEY-HEX",
"signature": "ED25519-SIGNATURE-OF-USER-UUID-HEX",
"pin_base64": "TIP-PIN-BASE64"
}
Response
{
"data": {
"user_id": "UUID-USER",
"identity_number": "123456",
"phone": "+8610010",
"full_name": "",
"biography": "",
"avatar_url": "",
"relationship": "",
"mute_until": "0001-01-01T00:00:00Z",
"created_at": "0001-01-01T00:00:00Z",
"code_id": "UUID-CODE",
"code_url": "",
"features": [],
"has_safe": true, // if true, user have register safe.
"session_id": "UUID-SESSION",
"device_status": "",
"has_pin": false,
"receive_message_source": "",
"accept_conversation_source": "",
"accept_search_source": "",
"fiat_currency": "",
"transfer_notification_threshold": 0,
"transfer_confirmation_threshold": 0,
"pin_token_base64": "",
"salt_base64": "",
"tip_key_base64": "",
"tip_counter": 0,
"has_emergency_contact": false
}
}

The signature should be derived from sha256.Sum256([]byte("SEQUENCER:REGISTER:" + USER-UUID + PUBLIC-KEY-HEX)).