---
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/`

## Request

- Base URL: `https://api.blockaid.io`
- URL: `https://api.blockaid.io/v0/platform/cosigners/{id}/policies/`
- Auth: none declared
- TypeScript: <https://skmtc.dev/blockaid-official/apis/blockaid-api/docs/v0/platform/cosigners/:id/policies/post.ts> (a function with typed inputs; its response is checked against the schema)

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
        - SafeConfigTransactionPolicyRequest
          - `rules` SafeConfigTransactionRulesInput, required
            - `config_action` SafeConfigActionRule, required: Rule matching the Safe config action(s) in a transaction.
              - …
          - `type` 'safe_config_transaction', 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
        - SafeConfigTransactionPolicyResponse
          - `rules` SafeConfigTransactionRulesOutput, required
            - `config_action` SafeConfigActionRule, required: Rule matching the Safe config action(s) in a transaction.
              - …
          - `type` 'safe_config_transaction', 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

## Changes

> 120 revisions in range; 1 not diffed.

- **2026-10-29** `da18d8528c60`: 3 breaking, 3 warning, 12 info
  - the `operator` response property const value `lte` was removed for the status `200`
  - the `operator` response property const value `lte` was removed for the status `200`
  - the `operator` response property const value `lte` was removed for the status `200`
  - added the new `gte` enum value to the `policies/evm/anyOf[subschema #1]/items/policy/anyOf[subschema #9: RollingUsdLimitPolicyResponse]/rules/max_usd_value/operator` response property for the response status `200`
  - …14 more
- **2026-10-29** `eb516188e5fa`: 3 info
  - added the new optional request property `policies/evm/anyOf[subschema #1]/items/policy/oneOf[subschema #13: EVMCompositePolicyRequest]/rules/items/oneOf[subschema #8: RiskExposurePolicyRequest]/rules/category_thresholds/items/proximity`
  - added the new optional request property `policies/evm/anyOf[subschema #1]/items/policy/oneOf[subschema #8: RiskExposurePolicyRequest]/rules/category_thresholds/items/proximity`
  - added the optional property `policies/evm/anyOf[subschema #1]/items/policy/anyOf[subschema #8: RiskExposurePolicyResponse]/rules/category_thresholds/items/proximity` to the response with the `200` status
- …earlier changes not shown

[Operation history](https://skmtc.dev/blockaid-official/apis/blockaid-api/changes/v0/platform/cosigners/:id/policies/post.md)

---

[API](https://skmtc.dev/blockaid-official/apis/blockaid-api.md) - [All operations](https://skmtc.dev/blockaid-official/apis/blockaid-api/llms.txt) - [OpenAPI document](https://skmtc.dev/blockaid-official/apis/blockaid-api/revisions/104550c9d3f1?raw)
