Skip to content
Minotaur
+ 05 · API Reference

API · Native Bittensor

Permissioned proxy actions on Bittensor (add/move stake), permission lifecycle, and simulated swaps.

All endpoints below are mounted under /v1 on the validator API (https://api.minotaursubnet.com). The CORS allowlist covers https://app.minotaursubnet.com.

GET /v1/native-bittensor/executions

List native Bittensor execution audit records.

Query parameters

  • permission_idstr
  • owner_ss58str
  • statusstr

GET /v1/native-bittensor/permissions

List native Bittensor delegated permissions.

Query parameters

  • owner_ss58str
  • statusstr

POST /v1/native-bittensor/permissions

Create a policy-bounded native Bittensor delegated permission.

Request body

  • bodyCreateNativePermissionRequest (required) (model CreateNativePermissionRequest)
    • owner_ss58: str = Field(..., description="User's safe Bittensor ss58 account")
    • allowed_netuids: list[int] = Field(..., description='Subnet netuids this permission may touch')
    • allowed_hotkeys: list[str] = Field(default_factory=list, description='Allowed validator hotkeys')
    • delegate_ss58: str = Field('', description='Optional dedicated delegate ss58 to bind')
    • max_rao_per_action: int | None = Field(None, description='Max native amount per action in RAO')
    • max_rao_per_day: int | None = Field(None, description='Max native amount per rolling day in RAO')
    • max_slippage_bps: int | None = Field(None, description='Max tolerated slippage in basis points')
    • cooldown_seconds: int | None = Field(None, description='Minimum delay between delegated actions')
    • expires_at: float | None = Field(None, description='Unix timestamp when permission expires')
    • enable_remove_stake: bool = Field(False, description='Opt-in to delegated remove_stake')
    • policy_tier: str = Field('strict', description='Policy tier: strict/hybrid/expert')
    • metadata: dict[str, Any] = Field(default_factory=dict, description='Extra metadata')

GET /v1/native-bittensor/permissions/{permission_id}

Get a native Bittensor delegated permission by ID.

Path parameters

  • permission_idstr (required)

POST /v1/native-bittensor/permissions/{permission_id}/actions/add-stake

Execute a proxied native add_stake request.

Path parameters

  • permission_idstr (required)

Request body

  • bodyAddStakeRequest (required) (model AddStakeRequest)
    • netuid: int = Field(..., description='Target subnet netuid')
    • hotkey_ss58: str = Field(..., description='Validator hotkey to stake to')
    • amount_rao: int = Field(..., description='Stake amount in RAO')
    • reason: str = Field('', description='Human-readable execution reason')
    • metadata: dict[str, Any] = Field(default_factory=dict, description='Extra execution metadata')

POST /v1/native-bittensor/permissions/{permission_id}/actions/move-stake

Execute a proxied native move_stake request.

Path parameters

  • permission_idstr (required)

Request body

  • bodyMoveStakeRequest (required) (model MoveStakeRequest)
    • origin_netuid: int = Field(..., description='Origin subnet netuid')
    • origin_hotkey_ss58: str = Field(..., description='Origin validator hotkey')
    • destination_netuid: int = Field(..., description='Destination subnet netuid')
    • destination_hotkey_ss58: str = Field(..., description='Destination validator hotkey')
    • amount_rao: int = Field(..., description='Stake amount in RAO')
    • reason: str = Field('', description='Human-readable execution reason')
    • metadata: dict[str, Any] = Field(default_factory=dict, description='Extra execution metadata')

POST /v1/native-bittensor/permissions/{permission_id}/activate

Activate a permission after on-chain proxy.addProxy() is confirmed.

Path parameters

  • permission_idstr (required)

POST /v1/native-bittensor/permissions/{permission_id}/refresh

Refresh a permission against current on-chain proxy state.

Path parameters

  • permission_idstr (required)

POST /v1/native-bittensor/permissions/{permission_id}/revoke

Soft-revoke a delegated permission inside Minotaur.

Path parameters

  • permission_idstr (required)

Request body

  • bodyRevokeNativePermissionRequest (required) (model RevokeNativePermissionRequest)
    • reason: str = Field('', description='Optional soft-revoke reason for audit history')

POST /v1/native-bittensor/sim-swap

Simulate a TAO ↔ Alpha swap and return expected output.

Request body

  • bodySimSwapRequest (required) (model SimSwapRequest)
    • origin_netuid: int = Field(..., description='Source netuid (0=TAO)')
    • destination_netuid: int = Field(..., description='Dest netuid (0=TAO)')
    • amount_rao: int = Field(..., description='Input amount in RAO')