---
title: "Set Cosigner Policies Route"
method: POST
path: "/v0/platform/cosigners/{id}/policies/"
tags: ["cosigner"]
---

# Set Cosigner Policies Route

`POST /v0/platform/cosigners/{id}/policies/`

Set policies for a cosigner by ID.

## Path parameters

- `id` string, required — Cosigner ID

## Request body

- SetPoliciesRequest — Request body for setting cosigner policies (wraps PoliciesRequest).
  - `policies` PoliciesRequest, required — Request body containing policy arrays per chain (EVM, Solana, Bitcoin, Sui, other).
    - `evm` EVMPolicyRequest[], nullable
      - `name` string, required
      - `action` 'approve' | 'reject', required — What the cosigner should do when a transaction is proposed (e.g. sign, reject).
      - `policy` union, required
        - CalledAddressPolicyRequest
          - `type` 'called_address', required
          - `rules` CalledAddressRulesInput, required
            - `called_addresses` CalledAddressesRule, required
              - …
        - Eip712SignaturePolicyRequest — Inbound policy definition for EIP-712 signature matching.
          - `rules` Eip712SignatureRulesInput, required — Aggregated rules for evaluating EIP-712 typed-data signatures.
            - `primary_type` Eip712PrimaryTypeRule, required — Rule matching the EIP-712 primaryType field.
              - …
            - `verifying_contracts` Eip712VerifyingContractsRule — Rule matching EIP-712 domain verifying contract addresses.
              - …
          - `type` 'eip_712_signature', required
        - EventEmittedPolicyRequest
          - `type` 'event_emitted', required
          - `rules` EventEmittedRulesInput, required
            - `event_name` EventName, required
              - …
            - `event_parameters` EventParameter[], nullable
              - …
          - `target` AssetIDTarget[], required
            - `type` 'asset_id', required — Type discriminator for this object.
            - `identifier` string, required — Target identifier value.
        - FunctionCallPolicyRequest
          - `type` 'function_call', required
          - `rules` FunctionCallRulesInput, required
            - `function_name` FunctionName, required
              - …
            - `function_parameters` FunctionParameter[], nullable
              - …
          - `target` AssetIDTarget[], required
            - `type` 'asset_id', required — Type discriminator for this object.
            - `identifier` string, required — Target identifier value.
        - GainingAddressesPolicyRequest — Policy that evaluates based on approved gaining addresses and transaction filters.
          - `type` 'gaining_addresses', required
          - `rules` GainingAddressesRulesInput, required
            - `approved_gaining_addresses` ApprovedGainingAddresses, required
              - …
            - `transaction_filter` TransactionFilter, required
              - …
            - `ignore_threshold` IgnoreThresholdRule
              - …
            - `non_approved_gaining_percentage` NonApprovedGainingPercentage
              - …
        - MerklCampaignPolicyRequest
          - `rules` MerklCampaignRulesInput, required
            - `campaigns` MerklCampaignItem[], required
              - …
          - `type` 'merkl_campaign', required
        - MovedAssetsPolicyRequest
          - `rules` MovedAssetsRulesInput, required
            - `direction` MovedAssetsDirection
              - …
            - `moved_assets` MovedAssetsRule, required
              - …
          - `type` 'moved_assets', required
        - RiskExposurePolicyRequest
          - `rules` RiskExposureRulesInput, required
            - `category_thresholds` CategoryThresholdInput[], required
              - …
            - `proximity` 'overall' | 'ownership' | 'counterparty' | 'indirect' — Proximity ring relative to the scanned address (hops measured outward, the address itself is hop 0). `overall`: aggregated across all rings (default). `ownership`: hop 1 only. `counterparty`: hop 2 only. `indirect`: hop 3 and deeper.
          - `type` 'risk_exposure', required
        - RollingUsdLimitPolicyRequest
          - `rules` RollingUsdLimitRulesInput, required
            - `max_usd_value` MaxUsdValueRule, required
              - …
            - `time_window` TimeWindowRule, required
              - …
          - `type` 'rolling_usd_limit', required
        - TokenSpendApprovalPolicyRequest
          - `rules` TokenSpendApprovalRulesInput, required
            - `approval_amount` TokenSpendApprovalAmountRule
              - …
            - `approval_usd_value` TokenSpendApprovalUsdValueRule, required
              - …
          - `type` 'token_spend_approval', required
        - TransactionUSDValuePolicyRequest — Policy that evaluates based on transaction USD value thresholds.
          - `type` 'transaction_usd_value', required
          - `rules` TransactionUSDValueRulesInput, required
            - `transaction_usd_value` TransactionUSDValueRule, required
              - …
        - EVMCompositePolicyRequest — Composite EVM policy that combines multiple sub-policies with AND/OR logic.
          - `type` 'composite'
          - `operator` 'and' | 'or', required
          - `rules` union[], required
            - union
              - …
    - `solana` SolanaPolicyRequest[], nullable
      - `name` string, required
      - `action` 'approve' | 'reject', required — What the cosigner should do when a transaction is proposed (e.g. sign, reject).
      - `policy` union, required
        - FunctionCallPolicyRequest
          - `type` 'function_call', required
          - `rules` FunctionCallRulesInput, required
            - `function_name` FunctionName, required
              - …
            - `function_parameters` FunctionParameter[], nullable
              - …
          - `target` AssetIDTarget[], required
            - `type` 'asset_id', required — Type discriminator for this object.
            - `identifier` string, required — Target identifier value.
        - GainingAddressesPolicyRequest — Policy that evaluates based on approved gaining addresses and transaction filters.
          - `type` 'gaining_addresses', required
          - `rules` GainingAddressesRulesInput, required
            - `approved_gaining_addresses` ApprovedGainingAddresses, required
              - …
            - `transaction_filter` TransactionFilter, required
              - …
            - `ignore_threshold` IgnoreThresholdRule
              - …
            - `non_approved_gaining_percentage` NonApprovedGainingPercentage
              - …
        - RollingUsdLimitPolicyRequest
          - `rules` RollingUsdLimitRulesInput, required
            - `max_usd_value` MaxUsdValueRule, required
              - …
            - `time_window` TimeWindowRule, required
              - …
          - `type` 'rolling_usd_limit', required
        - SquadsConfigTransactionPolicyRequest
          - `rules` SquadsConfigTransactionRulesInput, required
            - `squads_config_action` ConfigActionRule, required — Rule matching the Squads multisig config action(s) in a transaction.
              - …
          - `type` 'squads_config_transaction', required
        - TransactionUSDValuePolicyRequest — Policy that evaluates based on transaction USD value thresholds.
          - `type` 'transaction_usd_value', required
          - `rules` TransactionUSDValueRulesInput, required
            - `transaction_usd_value` TransactionUSDValueRule, required
              - …
        - SolanaCompositePolicyRequest
          - `type` 'composite'
          - `operator` 'and' | 'or', required
          - `rules` union[], required
            - union
              - …
    - `bitcoin` BitcoinPolicyRequest[], nullable
      - `name` string, required
      - `action` 'approve' | 'reject', required — What the cosigner should do when a transaction is proposed (e.g. sign, reject).
      - `policy` union, required
        - GainingAddressesPolicyRequest — Policy that evaluates based on approved gaining addresses and transaction filters.
          - `type` 'gaining_addresses', required
          - `rules` GainingAddressesRulesInput, required
            - `approved_gaining_addresses` ApprovedGainingAddresses, required
              - …
            - `transaction_filter` TransactionFilter, required
              - …
            - `ignore_threshold` IgnoreThresholdRule
              - …
            - `non_approved_gaining_percentage` NonApprovedGainingPercentage
              - …
        - TransactionUSDValuePolicyRequest — Policy that evaluates based on transaction USD value thresholds.
          - `type` 'transaction_usd_value', required
          - `rules` TransactionUSDValueRulesInput, required
            - `transaction_usd_value` TransactionUSDValueRule, required
              - …
        - BitcoinCompositePolicyRequest
          - `type` 'composite'
          - `operator` 'and' | 'or', required
          - `rules` union[], required
            - union
              - …
    - `sui` SuiPolicyRequest[], nullable
      - `name` string, required
      - `action` 'approve' | 'reject', required — What the cosigner should do when a transaction is proposed (e.g. sign, reject).
      - `policy` union, required
        - GainingAddressesPolicyRequest — Policy that evaluates based on approved gaining addresses and transaction filters.
          - `type` 'gaining_addresses', required
          - `rules` GainingAddressesRulesInput, required
            - `approved_gaining_addresses` ApprovedGainingAddresses, required
              - …
            - `transaction_filter` TransactionFilter, required
              - …
            - `ignore_threshold` IgnoreThresholdRule
              - …
            - `non_approved_gaining_percentage` NonApprovedGainingPercentage
              - …
        - RollingUsdLimitPolicyRequest
          - `rules` RollingUsdLimitRulesInput, required
            - `max_usd_value` MaxUsdValueRule, required
              - …
            - `time_window` TimeWindowRule, required
              - …
          - `type` 'rolling_usd_limit', required
        - TransactionUSDValuePolicyRequest — Policy that evaluates based on transaction USD value thresholds.
          - `type` 'transaction_usd_value', required
          - `rules` TransactionUSDValueRulesInput, required
            - `transaction_usd_value` TransactionUSDValueRule, required
              - …
        - SuiCompositePolicyRequest
          - `type` 'composite'
          - `operator` 'and' | 'or', required
          - `rules` union[], required
            - union
              - …
    - `other` OtherChainPolicyRequest[], nullable
      - `name` string, required
      - `action` 'approve' | 'reject', required — What the cosigner should do when a transaction is proposed (e.g. sign, reject).
      - `policy` UnsupportedChainPolicyRequest, required — Placeholder policy for chains that do not support granular policy types.
        - `type` 'unsupported_chain', required

## Response `200`

Successful Response

- SetPoliciesResponse — Response returned after successfully setting cosigner policies.
  - `policies` PoliciesResponse, required — Response containing policy arrays per chain as returned by the API.
    - `evm` EVMPolicyResponse[], nullable
      - `name` string, required
      - `action` 'approve' | 'reject', required — What the cosigner should do when a transaction is proposed (e.g. sign, reject).
      - `policy` union, required
        - CalledAddressPolicyResponse
          - `type` 'called_address', required
          - `rules` CalledAddressRulesOutput, required
            - `called_addresses` CalledAddressesRule, required
              - …
        - Eip712SignaturePolicyResponse — Resolved EIP-712 signature policy returned to API consumers.
          - `rules` Eip712SignatureRulesOutput, required — Aggregated rules for evaluating EIP-712 typed-data signatures.
            - `primary_type` Eip712PrimaryTypeRule, required — Rule matching the EIP-712 primaryType field.
              - …
            - `verifying_contracts` Eip712VerifyingContractsRule — Rule matching EIP-712 domain verifying contract addresses.
              - …
          - `type` 'eip_712_signature', required
        - EventEmittedPolicyResponse
          - `type` 'event_emitted', required
          - `rules` EventEmittedRulesOutput, required
            - `event_name` EventName, required
              - …
            - `event_parameters` EventParameter[], nullable
              - …
          - `target` union[], required
            - union
              - …
        - FunctionCallPolicyResponse
          - `type` 'function_call', required
          - `rules` FunctionCallRulesOutput, required
            - `function_name` FunctionName, required
              - …
            - `function_parameters` FunctionParameter[], nullable
              - …
          - `target` union[], required
            - union
              - …
        - GainingAddressesPolicyResponse
          - `type` 'gaining_addresses', required
          - `rules` GainingAddressesRulesOutput, required
            - `approved_gaining_addresses` ApprovedGainingAddresses, required
              - …
            - `transaction_filter` TransactionFilter, required
              - …
            - `ignore_threshold` IgnoreThresholdRule
              - …
            - `non_approved_gaining_percentage` NonApprovedGainingPercentage
              - …
        - MerklCampaignPolicyResponse
          - `rules` MerklCampaignRulesOutput, required
            - `campaigns` MerklCampaignItem[], required
              - …
          - `type` 'merkl_campaign', required
        - MovedAssetsPolicyResponse
          - `rules` MovedAssetsRulesOutput, required
            - `direction` MovedAssetsDirection
              - …
            - `moved_assets` MovedAssetsRule, required
              - …
          - `type` 'moved_assets', required
        - RiskExposurePolicyResponse
          - `rules` RiskExposureRulesOutput, required
            - `category_thresholds` CategoryThresholdOutput[], required
              - …
            - `proximity` 'overall' | 'ownership' | 'counterparty' | 'indirect' — Proximity ring relative to the scanned address (hops measured outward, the address itself is hop 0). `overall`: aggregated across all rings (default). `ownership`: hop 1 only. `counterparty`: hop 2 only. `indirect`: hop 3 and deeper.
          - `type` 'risk_exposure', required
        - RollingUsdLimitPolicyResponse
          - `rules` RollingUsdLimitRulesOutput, required
            - `max_usd_value` MaxUsdValueRule, required
              - …
            - `time_window` TimeWindowRule, required
              - …
          - `type` 'rolling_usd_limit', required
        - TokenSpendApprovalPolicyResponse
          - `rules` TokenSpendApprovalRulesOutput, required
            - `approval_amount` TokenSpendApprovalAmountRule
              - …
            - `approval_usd_value` TokenSpendApprovalUsdValueRule, required
              - …
          - `type` 'token_spend_approval', required
        - TransactionUSDValuePolicyResponse
          - `type` 'transaction_usd_value', required
          - `rules` TransactionUSDValueRulesOutput, required
            - `transaction_usd_value` TransactionUSDValueRule, required
              - …
        - BaseCompositePolicyResponse — Composite policy response; rules may be various policy response types or unknown.
          - `type` 'composite'
          - `operator` 'and' | 'or', required
          - `rules` unknown[], required
            - unknown
        - UnknownPolicyResponse — Policy response for an unknown or future policy type; clients should handle gracefully.
          - `type` string, required
          - `rules` object, nullable
          - `target` object, nullable
    - `solana` SolanaPolicyResponse[], nullable
      - `name` string, required
      - `action` 'approve' | 'reject', required — What the cosigner should do when a transaction is proposed (e.g. sign, reject).
      - `policy` union, required
        - FunctionCallPolicyResponse
          - `type` 'function_call', required
          - `rules` FunctionCallRulesOutput, required
            - `function_name` FunctionName, required
              - …
            - `function_parameters` FunctionParameter[], nullable
              - …
          - `target` union[], required
            - union
              - …
        - GainingAddressesPolicyResponse
          - `type` 'gaining_addresses', required
          - `rules` GainingAddressesRulesOutput, required
            - `approved_gaining_addresses` ApprovedGainingAddresses, required
              - …
            - `transaction_filter` TransactionFilter, required
              - …
            - `ignore_threshold` IgnoreThresholdRule
              - …
            - `non_approved_gaining_percentage` NonApprovedGainingPercentage
              - …
        - SquadsConfigTransactionPolicyResponse
          - `rules` SquadsConfigTransactionRulesOutput, required
            - `squads_config_action` ConfigActionRule, required — Rule matching the Squads multisig config action(s) in a transaction.
              - …
          - `type` 'squads_config_transaction', required
        - TransactionUSDValuePolicyResponse
          - `type` 'transaction_usd_value', required
          - `rules` TransactionUSDValueRulesOutput, required
            - `transaction_usd_value` TransactionUSDValueRule, required
              - …
        - RollingUsdLimitPolicyResponse
          - `rules` RollingUsdLimitRulesOutput, required
            - `max_usd_value` MaxUsdValueRule, required
              - …
            - `time_window` TimeWindowRule, required
              - …
          - `type` 'rolling_usd_limit', required
        - BaseCompositePolicyResponse — Composite policy response; rules may be various policy response types or unknown.
          - `type` 'composite'
          - `operator` 'and' | 'or', required
          - `rules` unknown[], required
            - unknown
        - UnknownPolicyResponse — Policy response for an unknown or future policy type; clients should handle gracefully.
          - `type` string, required
          - `rules` object, nullable
          - `target` object, nullable
    - `bitcoin` BitcoinPolicyResponse[], nullable
      - `name` string, required
      - `action` 'approve' | 'reject', required — What the cosigner should do when a transaction is proposed (e.g. sign, reject).
      - `policy` union, required
        - GainingAddressesPolicyResponse
          - `type` 'gaining_addresses', required
          - `rules` GainingAddressesRulesOutput, required
            - `approved_gaining_addresses` ApprovedGainingAddresses, required
              - …
            - `transaction_filter` TransactionFilter, required
              - …
            - `ignore_threshold` IgnoreThresholdRule
              - …
            - `non_approved_gaining_percentage` NonApprovedGainingPercentage
              - …
        - TransactionUSDValuePolicyResponse
          - `type` 'transaction_usd_value', required
          - `rules` TransactionUSDValueRulesOutput, required
            - `transaction_usd_value` TransactionUSDValueRule, required
              - …
        - BaseCompositePolicyResponse — Composite policy response; rules may be various policy response types or unknown.
          - `type` 'composite'
          - `operator` 'and' | 'or', required
          - `rules` unknown[], required
            - unknown
        - UnknownPolicyResponse — Policy response for an unknown or future policy type; clients should handle gracefully.
          - `type` string, required
          - `rules` object, nullable
          - `target` object, nullable
    - `sui` SuiPolicyResponse[], nullable
      - `name` string, required
      - `action` 'approve' | 'reject', required — What the cosigner should do when a transaction is proposed (e.g. sign, reject).
      - `policy` union, required
        - GainingAddressesPolicyResponse
          - `type` 'gaining_addresses', required
          - `rules` GainingAddressesRulesOutput, required
            - `approved_gaining_addresses` ApprovedGainingAddresses, required
              - …
            - `transaction_filter` TransactionFilter, required
              - …
            - `ignore_threshold` IgnoreThresholdRule
              - …
            - `non_approved_gaining_percentage` NonApprovedGainingPercentage
              - …
        - TransactionUSDValuePolicyResponse
          - `type` 'transaction_usd_value', required
          - `rules` TransactionUSDValueRulesOutput, required
            - `transaction_usd_value` TransactionUSDValueRule, required
              - …
        - RollingUsdLimitPolicyResponse
          - `rules` RollingUsdLimitRulesOutput, required
            - `max_usd_value` MaxUsdValueRule, required
              - …
            - `time_window` TimeWindowRule, required
              - …
          - `type` 'rolling_usd_limit', required
        - BaseCompositePolicyResponse — Composite policy response; rules may be various policy response types or unknown.
          - `type` 'composite'
          - `operator` 'and' | 'or', required
          - `rules` unknown[], required
            - unknown
        - UnknownPolicyResponse — Policy response for an unknown or future policy type; clients should handle gracefully.
          - `type` string, required
          - `rules` object, nullable
          - `target` object, nullable
    - `other` OtherChainPolicyResponse[], nullable
      - `name` string, required
      - `action` 'approve' | 'reject', required — What the cosigner should do when a transaction is proposed (e.g. sign, reject).
      - `policy` UnsupportedChainPolicyResponse, required
        - `type` 'unsupported_chain', required

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/blockaid-official/apis/blockaid-api.md) · [All operations](https://skmtc.net/blockaid-official/apis/blockaid-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/blockaid-official/blockaid-api/versions/17c41f337b2e/schema)
