SSV Validator
POST /v1/user/ssv/operator/register
Request verification for SSV operator registration.
- HTTP
- Python
curl -H "Authorization: Bearer {{access_token}}" -X POST "$ETHGAS_API_URL/v1/user/ssv/operator/register?ownerAddress=0x1234567890123456789012345678901234567890"
import requests
url = f"{ETHGAS_API_URL}/v1/user/ssv/operator/register"
payload = {'ownerAddress': '0x1234567890123456789012345678901234567890'}
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer <your-auth-token>'
}
response = requests.post(url, headers=headers, params=payload)
print(response.text)
Request
| Parameter | Required | Type | Description |
|---|---|---|---|
| ownerAddress | YES | string | SSV operator owner address (hex format) |
Response Body
| Name | Type | Description |
|---|---|---|
| available | boolean | Whether the operator address is available for registration |
| messageToSign | string | Message to sign for verification |
Error Codes
| Code | Description |
|---|---|
| SSV_OPERATOR_INVALID_ADDRESS | Invalid operator address format |
POST /v1/user/ssv/operator/deregister
Deregister an SSV operator.
- HTTP
- Python
curl -H "Authorization: Bearer {{access_token}}" -X POST "$ETHGAS_API_URL/v1/user/ssv/operator/deregister?ownerAddress=0x1234567890123456789012345678901234567890"
import requests
url = f"{ETHGAS_API_URL}/v1/user/ssv/operator/deregister"
payload = {'ownerAddress': '0x1234567890123456789012345678901234567890'}
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer <your-auth-token>'
}
response = requests.post(url, headers=headers, params=payload)
print(response.text)
Request
| Parameter | Required | Type | Description |
|---|---|---|---|
| ownerAddress | YES | string | SSV operator owner address (hex format) |
Response Body
| Name | Type | Description |
|---|---|---|
| success | boolean | Operation success status |
Error Codes
| Code | Description |
|---|---|
| SSV_OPERATOR_INVALID_ADDRESS | Invalid operator address format |
| SSV_OPERATOR_NOT_REGISTERED | Operator is not registered |
POST /v1/user/ssv/operator/verify
Verify SSV operator signature and complete registration.
- HTTP
- Python
curl -H "Authorization: Bearer {{access_token}}" -X POST "$ETHGAS_API_URL/v1/user/ssv/operator/verify?ownerAddress=0x1234567890123456789012345678901234567890&signature=0x1234567890abcdef&autoImport=1&sync=1"
import requests
url = f"{ETHGAS_API_URL}/v1/user/ssv/operator/verify"
payload = {
'ownerAddress': '0x1234567890123456789012345678901234567890',
'signature': '0x1234567890abcdef',
'autoImport': '1',
'sync': '1'
}
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer <your-auth-token>'
}
response = requests.post(url, headers=headers, params=payload)
print(response.text)
Request
| Parameter | Required | Type | Description |
|---|---|---|---|
| ownerAddress | YES | string | SSV operator owner address (hex format) |
| signature | YES | string | Signature of the message to sign (hex format) |
| autoImport | NO | boolean | Whether to automatically import validators (default: false) |
| sync | NO | boolean | Whether to return validator list in response (default: false) |
Response Body
| Name | Type | Description |
|---|---|---|
| validators | string[] | List of validator public keys (only returned when sync=true) |
Error Codes
| Code | Description |
|---|---|
| SSV_OPERATOR_INVALID_ADDRESS | Invalid operator address format |
| SSV_OPERATOR_INVALID_SIGNATURE | Invalid signature format or verification failed |
POST /v1/user/ssv/operator/verifyByTx
Verify SSV operator registration using an on-chain transaction hash.
- HTTP
- Python
curl -H "Authorization: Bearer {{access_token}}" -X POST "$ETHGAS_API_URL/v1/user/ssv/operator/verifyByTx?ownerAddress=0x1234567890123456789012345678901234567890&txHash=0xabc...&autoImport=1&sync=1"
import requests
url = f"{ETHGAS_API_URL}/v1/user/ssv/operator/verifyByTx"
params = {
"ownerAddress": "0x1234567890123456789012345678901234567890",
"txHash": "0xabc...",
"autoImport": "1",
"sync": "1"
}
headers = {'Authorization': 'Bearer <your-auth-token>'}
response = requests.post(url, headers=headers, params=params)
print(response.text)
Request
| Parameter | Required | Type | Description |
|---|---|---|---|
| ownerAddress | YES | string | SSV operator owner address (hex format) |
| txHash | YES | string | Transaction hash (hex) |
| autoImport | NO | boolean | Whether to automatically import validators (default: false) |
| sync | NO | boolean | Whether to return validator list in response (default: false) |
Response Body
| Name | Type | Description |
|---|---|---|
| validators | string[] | List of validator public keys (only returned when sync=true) |
Error Codes
| Code | Description |
|---|---|
| SSV_OPERATOR_INVALID_ADDRESS | Invalid operator address format |
| SSV_OPERATOR_NOT_REGISTERED | Operator is not registered |
| SSV_OPERATOR_INVALID_TX | Transaction hash is invalid |
| SSV_OPERATOR_TX_NOT_FOUND | Transaction not found |
GET /v1/user/ssv/operators
List all SSV operators for the current user.
- HTTP
- Python
curl -H "Authorization: Bearer {{access_token}}" -X GET "$ETHGAS_API_URL/v1/user/ssv/operators"
import requests
url = f"{ETHGAS_API_URL}/v1/user/ssv/operators"
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer <your-auth-token>'
}
response = requests.get(url, headers=headers)
print(response.text)
Request
No parameters required.
Response Body
| Name | Type | Description |
|---|---|---|
| ssvOperators | object[] | List of SSV operator objects |
| └ ownerId | integer | Unique owner ID |
| └ userId | integer | User ID associated with the operator |
| └ ownerAddress | string | Operator owner address (hex format) |
POST /v1/user/ssv/operator/validator/register
Register validators with an SSV operator. If no publicKeys are provided, it will refresh the validator list from the SSV network.
- HTTP
- Python
curl -H "Authorization: Bearer {{access_token}}" -X POST "$ETHGAS_API_URL/v1/user/ssv/operator/validator/register?ownerAddress=0x1234567890123456789012345678901234567890&publicKeys=0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890,0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"
import requests
url = f"{ETHGAS_API_URL}/v1/user/ssv/operator/validator/register"
payload = {
'ownerAddress': '0x1234567890123456789012345678901234567890',
'publicKeys': '0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890,0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef'
}
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer <your-auth-token>'
}
response = requests.post(url, headers=headers, params=payload)
print(response.text)
Request
| Parameter | Required | Type | Description |
|---|---|---|---|
| ownerAddress | YES | string | SSV operator owner address (hex format) |
| publicKeys | NO | string | Comma-separated validator public keys (hex, max 100). If not provided, refreshes from SSV network |
Response Body
| Name | Type | Description |
|---|---|---|
| validators | string[] | List of successfully added validator public keys |
Error Codes
| Code | Description |
|---|---|
| SSV_OPERATOR_INVALID_ADDRESS | Invalid operator address format |
| SSV_OPERATOR_NOT_REGISTERED | Operator is not registered |
| SSV_VALIDATORS_REQUIRED | At least one validator public key is required |
| SSV_VALIDATORS_INVALID | Invalid validator public key format |
| VALIDATORS_MAX | Maximum 100 validators allowed per request |
POST /v1/user/ssv/operator/validator/deregister
Deregister validators from an SSV operator. If no publicKeys are provided, it will remove all validators for the operator.
- HTTP
- Python
curl -H "Authorization: Bearer {{access_token}}" -X POST "$ETHGAS_API_URL/v1/user/ssv/operator/validator/deregister?ownerAddress=0x1234567890123456789012345678901234567890&publicKeys=0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890"
import requests
url = f"{ETHGAS_API_URL}/v1/user/ssv/operator/validator/deregister"
payload = {
'ownerAddress': '0x1234567890123456789012345678901234567890',
'publicKeys': '0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890'
}
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer <your-auth-token>'
}
response = requests.post(url, headers=headers, params=payload)
print(response.text)
Request
| Parameter | Required | Type | Description |
|---|---|---|---|
| ownerAddress | YES | string | SSV operator owner address (hex format) |
| publicKeys | NO | string | Comma-separated validator public keys (hex, max 100). If not provided, removes all for operator |
Response Body
| Name | Type | Description |
|---|---|---|
| removed | string[] | List of successfully removed validator public keys |
Error Codes
| Code | Description |
|---|---|
| SSV_OPERATOR_INVALID_ADDRESS | Invalid operator address format |
| SSV_OPERATOR_NOT_REGISTERED | Operator is not registered |
| SSV_VALIDATORS_REQUIRED | At least one validator public key is required |
| SSV_VALIDATORS_INVALID | Invalid validator public key format |
| VALIDATORS_MAX | Maximum 100 validators allowed per request |
GET /v1/user/ssv/operator/validators
List validators for a specific SSV operator.
- HTTP
- Python
curl -H "Authorization: Bearer {{access_token}}" -X GET "$ETHGAS_API_URL/v1/user/ssv/operator/validators?ownerAddress=0x1234567890123456789012345678901234567890"
import requests
url = f"{ETHGAS_API_URL}/v1/user/ssv/operator/validators"
params = {'ownerAddress': '0x1234567890123456789012345678901234567890'}
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer <your-auth-token>'
}
response = requests.get(url, headers=headers, params=params)
print(response.text)
Request
| Parameter | Required | Type | Description |
|---|---|---|---|
| ownerAddress | YES | string | SSV operator owner address (hex format) |
Response Body
| Name | Type | Description |
|---|---|---|
| validators | string[] | List of validator public keys (hex format) |
Error Codes
| Code | Description |
|---|---|
| SSV_OPERATOR_INVALID_ADDRESS | Invalid operator address format |
| SSV_OPERATOR_NOT_REGISTERED | Operator is not registered |
POST /v1/user/ssv/operator/validator/update/ofac
Update OFAC flag for SSV validators.
- HTTP
- Python
curl -H "Authorization: Bearer {{access_token}}" -X POST "$ETHGAS_API_URL/v1/user/ssv/operator/validator/update/ofac?publicKeys=0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890&ofac=true"
import requests
url = f"{ETHGAS_API_URL}/v1/user/ssv/operator/validator/update/ofac"
payload = {
'publicKeys': '0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890',
'ofac': 'true'
}
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer <your-auth-token>'
}
response = requests.post(url, headers=headers, params=payload)
print(response.text)
Request
| Parameter | Required | Type | Description |
|---|---|---|---|
| publicKeys | NO | string | Comma-separated validator public keys (hex, max 100). If not provided, updates all for user |
| ofac | NO | boolean | OFAC compliance flag (default: false) |
Response Body
| Name | Type | Description |
|---|---|---|
| success | boolean | Operation success status |
Error Codes
| Code | Description |
|---|---|
| INVALID_PUBLIC_KEY | Invalid validator public key format |
| VALIDATORS_MAX | Maximum 100 validators allowed per request |