Blockaid cosigner API
The cosigner API from Blockaid — 6 operation(s) for cosigner.
The cosigner API from Blockaid — 6 operation(s) for cosigner.
openapi: 3.1.0
info:
title: Blockaid Asset Management cosigner API
description: Blockaid Risk Score API
termsOfService: https://www.blockaid.io/legal/terms-of-use
license:
name: Proprietary
url: https://www.blockaid.io/legal
version: 1.0.0
servers:
- url: https://api.blockaid.io
description: Production server
- url: https://client.blockaid.io
description: Clients server
tags:
- name: cosigner
paths:
/v0/platform/cosigners/{id}/policies/:
get:
tags:
- cosigner
summary: Get Cosigner Policies Route
description: Get all policies for a cosigner by ID.
operationId: get_cosigner_policies_route_external_v0_cosigners__id__policies__get
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Cosigner ID
title: Id
description: Cosigner ID
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/GetPoliciesResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
post:
tags:
- cosigner
summary: Set Cosigner Policies Route
description: Set policies for a cosigner by ID.
operationId: set_cosigner_policies_route_external_v0_cosigners__id__policies__post
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Cosigner ID
title: Id
description: Cosigner ID
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SetPoliciesRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/SetPoliciesResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/v0/platform/cosigners:
post:
tags:
- cosigner
summary: Create a new Cosigner
description: Create a cosigner and determine what it does on proposal, approval, and rejection.
operationId: create_cosigner_external_route_external_v0_cosigners__post
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateCosignerExternalRequest'
responses:
'201':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/CosignerExternalResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- APIKey: []
- ClientID: []
- JWT: []
/v0/platform/cosigners/search:
post:
tags:
- cosigner
summary: Get Cosigners Paginated Route
description: Returns a paginated list of Cosigners based on the provided search criteria.
operationId: get_cosigners_paginated_route_external_v0_cosigners_search_post
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CosignerSearchRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/CosignerPage_CosignerExternalResponse_'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- APIKey: []
- ClientID: []
- JWT: []
/v0/platform/cosigners/by-name/{name}:
get:
tags:
- cosigner
summary: Get Cosigner By Name
description: Fetch a cosigner by name.
operationId: get_cosigner_by_name_route_external_v0_cosigners_by_name__name__get
parameters:
- name: name
in: path
required: true
schema:
type: string
title: Name
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/CosignerExternalResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- APIKey: []
- ClientID: []
- JWT: []
/v0/platform/cosigners/{id}:
get:
tags:
- cosigner
summary: Get Cosigner External Route
description: Fetch a cosigner by ID.
operationId: get_cosigner_external_route_external_v0_cosigners__id__get
parameters:
- name: id
in: path
required: true
schema:
type: string
title: Id
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/CosignerExternalResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- APIKey: []
- ClientID: []
- JWT: []
delete:
tags:
- cosigner
summary: Delete Cosigner External Route
description: Remove a cosigner by ID.
operationId: delete_cosigner_external_route_external_v0_cosigners__id__delete
parameters:
- name: id
in: path
required: true
schema:
type: string
title: Id
responses:
'204':
description: Successful Response
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- APIKey: []
- ClientID: []
- JWT: []
patch:
tags:
- cosigner
summary: Update Cosigner External Route
description: Update a cosigner by ID; the fields you send replace the existing ones.
operationId: update_cosigner_external_route_external_v0_cosigners__id__patch
parameters:
- name: id
in: path
required: true
schema:
type: string
title: Id
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateCosignerExternalRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/CosignerExternalResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- APIKey: []
- ClientID: []
- JWT: []
/v0/platform/cosigners/{id}/evm/evaluate:
post:
tags:
- cosigner
summary: Evaluate EVM Transaction
description: Run policy evaluation against an EVM transaction for the given cosigner. Returns the policy decision and per-policy trace.
operationId: evaluate_transaction_route_external_v0_cosigners__id__evm_evaluate_post
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Cosigner ID
title: Id
description: Cosigner ID
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/EvaluateTransactionRequest'
example:
evaluation_type: simulate
chain: ethereum
account_address: '0x1234'
data:
from: '0x1234'
to: '0x1E0049783F008A0085193E00003D00cd54003c71'
value: '0x0'
data: '0xa22cb465'
metadata:
domain: https://app.safe.global
x-codeSamples:
- lang: bash
label: Simulate transaction
source: "curl -X POST \"https://api.blockaid.io/v0/platform/cosigners/<cosigner_id>/evm/evaluate\" \\\n -H \"X-API-Key: <api_key>\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"evaluation_type\": \"simulate\",\n \"chain\": \"ethereum\",\n \"account_address\": \"0x1234\",\n \"data\": {\n \"from\": \"0x1234\",\n \"to\": \"0x1E0049783F008A0085193E00003D00cd54003c71\",\n \"value\": \"0x0\",\n \"data\": \"0xa22cb465\"\n },\n \"metadata\": {\n \"domain\": \"https://app.safe.global\"\n }\n }'"
- lang: bash
label: Simulate EIP-712
source: "curl -X POST \"https://api.blockaid.io/v0/platform/cosigners/<cosigner_id>/evm/evaluate\" \\\n -H \"X-API-Key: <api_key>\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"evaluation_type\": \"simulate\",\n \"chain\": \"ethereum\",\n \"account_address\": \"0xSigner\",\n \"data\": {\n \"type\": \"eip712\",\n \"typed_data\": \"{\\\"types\\\":{},\\\"primaryType\\\":\\\"Order\\\",\\\"domain\\\":{},\\\"message\\\":{}}\",\n \"eip712_executor\": \"0xSafeExecutor\"\n },\n \"metadata\": {\n \"domain\": \"https://app.safe.global\"\n }\n }'"
- lang: bash
label: Evaluate tx hash
source: "curl -X POST \"https://api.blockaid.io/v0/platform/cosigners/<cosigner_id>/evm/evaluate\" \\\n -H \"X-API-Key: <api_key>\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"evaluation_type\": \"tx_hash\",\n \"tx_hash\": \"0xabc\",\n \"chain\": \"ethereum\",\n \"show_transaction_detail_for\": []\n }'"
- lang: bash
label: Evaluate time period
source: "curl -X POST \"https://api.blockaid.io/v0/platform/cosigners/<cosigner_id>/evm/evaluate\" \\\n -H \"X-API-Key: <api_key>\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"evaluation_type\": \"time_period\",\n \"chain\": \"ethereum\",\n \"time_period\": {\n \"from\": \"2026-03-01T12:34:56+00:00\",\n \"to\": \"2026-03-02T01:02:03+00:00\"\n },\n \"show_transaction_detail_for\": []\n }'"
responses:
'200':
description: Successful Response
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/EvaluateTransactionResponse'
- $ref: '#/components/schemas/EvaluateHistoricalDataResponse'
title: Response Evaluate Transaction Route External V0 Cosigners Id Evm Evaluate Post
'404':
description: Cosigner not found
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- APIKey: []
- ClientID: []
- JWT: []
components:
schemas:
UnknownTarget:
properties:
type:
type: string
title: Type
default: unknown
additionalProperties: true
type: object
title: UnknownTarget
description: Unknown target type - client should handle gracefully.
FunctionCallPolicyResponse:
properties:
type:
type: string
enum:
- function_call
const: function_call
title: Type
rules:
$ref: '#/components/schemas/FunctionCallRules-Output'
target:
items:
anyOf:
- $ref: '#/components/schemas/AssetIDTarget'
- $ref: '#/components/schemas/MissingAssetIDTarget'
- $ref: '#/components/schemas/UnknownTarget'
title: Target
type: array
type: object
required:
- type
- target
- rules
title: FunctionCallPolicyResponse
ValidationError:
properties:
loc:
items:
anyOf:
- type: string
- type: integer
type: array
title: Location
msg:
type: string
title: Message
type:
type: string
title: Error Type
type: object
required:
- loc
- msg
- type
title: ValidationError
TokenSpendApprovalAmountRule:
properties:
operator:
anyOf:
- $ref: '#/components/schemas/LessThanComparisonOperator'
- $ref: '#/components/schemas/GreaterThanComparisonOperator'
- $ref: '#/components/schemas/EqualityOperator'
title: Operator
value:
title: Value
type: string
required:
- operator
- value
title: TokenSpendApprovalAmountRule
type: object
MovedAssetsPolicyResponse:
properties:
rules:
$ref: '#/components/schemas/MovedAssetsRules-Output'
type:
const: moved_assets
enum:
- moved_assets
title: Type
type: string
required:
- type
- rules
title: MovedAssetsPolicyResponse
type: object
RiskExposureRules-Input:
properties:
category_thresholds:
items:
$ref: '#/components/schemas/CategoryThreshold-Input'
title: Category Thresholds
type: array
required:
- category_thresholds
title: RiskExposureRules
type: object
IgnoreThresholdRule:
properties:
operator:
$ref: '#/components/schemas/LessThanComparisonOperator'
value:
type: integer
title: Value
type: object
required:
- operator
- value
title: IgnoreThresholdRule
TransactionUSDValueRules-Output:
properties:
transaction_usd_value:
$ref: '#/components/schemas/TransactionUSDValueRule'
type: object
required:
- transaction_usd_value
title: TransactionUSDValueRules
TokenSpendApprovalPolicyResponse:
properties:
rules:
$ref: '#/components/schemas/TokenSpendApprovalRules-Output'
type:
const: token_spend_approval
enum:
- token_spend_approval
title: Type
type: string
required:
- type
- rules
title: TokenSpendApprovalPolicyResponse
type: object
EvaluationSummary:
properties:
total_transactions:
type: integer
title: Total Transactions
description: Total number of transactions scanned for this evaluation.
approved:
type: integer
title: Approved
description: Transactions approved by all policies under this mode.
rejected:
type: integer
title: Rejected
description: Transactions rejected by at least one policy or blocked before policy evaluation (non-benign scans). Per-policy counts only reflect transactions that reached policy evaluation, so the sum of per-policy rejected counts may be less than this value.
manual_approved:
type: integer
title: Manual Approved
description: Transactions that required manual approval (pending decision).
additionalProperties: false
type: object
required:
- total_transactions
- approved
- rejected
- manual_approved
title: EvaluationSummary
description: 'Aggregated counts across all transactions.
Note: ``rejected`` includes transactions blocked before policy evaluation
(non-benign scans). Per-policy counts only reflect transactions that
reached policy evaluation, so ``sum(p.rejected for p in policies)`` may be
less than ``summary.rejected``.'
EventParameter:
properties:
operator:
anyOf:
- $ref: '#/components/schemas/EqualityOperator'
- $ref: '#/components/schemas/LessThanComparisonOperator'
- $ref: '#/components/schemas/GreaterThanComparisonOperator'
title: Operator
value:
type: string
title: Value
parameter:
type: string
title: Parameter
type: object
required:
- operator
- value
- parameter
title: EventParameter
EvaluateTransactionRequest:
discriminator:
propertyName: evaluation_type
oneOf:
- additionalProperties: false
description: 'Simulate mode: evaluate a hypothetical EVM transaction against cosigner policies.'
properties:
account_address:
description: Address of the account initiating the transaction.
title: Account Address
type: string
chain:
allOf:
- enum:
- arbitrum
- base
- bsc
- gnosis
- ethereum
- optimism
- polygon
- sepolia
- monad
- katana
title: SupportedEvmChains
type: string
description: Chain name, e.g. "ethereum", "polygon".
data:
anyOf:
- additionalProperties: false
description: Standard EVM transaction payload.
properties:
data:
description: Calldata as a hex string, for example "0xa22cb465...".
title: Data
type: string
from:
description: Sender address.
title: From
type: string
to:
description: Recipient or contract address.
title: To
type: string
type:
const: transaction
default: transaction
description: Transaction type discriminator. Defaults to "transaction".
enum:
- transaction
title: Type
type: string
value:
description: Wei value as a hex string, for example "0x0".
title: Value
type: string
required:
- from
- to
- value
- data
title: EvmSendTransaction
type: object
- additionalProperties: false
description: EIP-712 typed-data signing payload.
properties:
eip712_executor:
anyOf:
- type: string
- type: 'null'
description: Executor contract address, for example a Safe executor.
title: Eip712 Executor
type:
const: eip712
description: Must be "eip712".
enum:
- eip712
title: Type
type: string
typed_data:
description: EIP-712 typed-data structure as a JSON string.
title: Typed Data
type: string
required:
- type
- typed_data
title: EvmEip712Data
type: object
description: EVM transaction payload.
title: Data
evaluation_type:
const: simulate
description: Evaluation mode. Use "simulate" for dry-run evaluation of calldata.
enum:
- simulate
title: Evaluation Type
type: string
inline_policies:
anyOf:
- items:
additionalProperties: true
description: A single policy definition for inline evaluation, bypassing persisted policy lookup.
properties:
action:
description: 'Policy action: "approve", "reject", or "pending".'
title: Action
type: string
name:
description: Policy name.
title: Name
type: string
policy:
description: Policy definition with policy_type_id, conditions, targets, etc.
title: Policy
type: object
required:
- name
- action
- policy
title: InlinePolicyEntry
type: object
type: array
- type: 'null'
description: Optional list of inline policy definitions to evaluate against instead of persisted policies. When provided, the cosigner's stored policies are ignored and these are used instead. Priority is derived from list order (index 0 = highest).
title: Inline Policies
metadata:
description: Additional context. Accepts a "domain" key for the dapp origin domain.
title: Metadata
type: object
options:
description: Evaluation options to apply. Defaults to ["validation"].
items:
type: string
title: Options
type: array
required:
- evaluation_type
- chain
- account_address
- data
title: EvaluateSimulateRequest
type: object
- additionalProperties: false
properties:
chain:
allOf:
- enum:
- arbitrum
- base
- bsc
- gnosis
- ethereum
- optimism
- polygon
- sepolia
- monad
- katana
title: SupportedEvmChains
type: string
description: Chain identifier.
evaluation_type:
const: tx_hash
description: Evaluation mode.
enum:
- tx_hash
title: Evaluation Type
type: string
inline_policies:
anyOf:
- items:
additionalProperties: true
description: A single policy definition for inline evaluation, bypassing persisted policy lookup.
properties:
action:
description: 'Policy action: "approve", "reject", or "pending".'
title: Action
type: string
name:
description: Policy name.
title: Name
type: string
policy:
description: Policy definition with policy_type_id, conditions, targets, etc.
title: Policy
type: object
required:
- name
- action
- policy
title: InlinePolicyEntry
type: object
type: array
- type: 'null'
description: Optional list of inline policy definitions to evaluate against instead of persisted policies. When provided, the cosigner's stored policies are ignored and these are used instead. Priority is derived from list order (index 0 = highest).
title: Inline Policies
show_transaction_detail_for:
anyOf:
- items:
enum:
- approved
- rejected
- manual_approved
type: string
type: array
- type: 'null'
description: Transaction hash lists for asked verdicts.
title: Show Transaction Detail For
tx_hash:
description: Transaction hash to evaluate.
title: Tx Hash
type: string
required:
- evaluation_type
- tx_hash
- chain
title: EvaluateTxHashRequest
type: object
- additionalProperties: false
properties:
chain:
allOf:
- enum:
- arbitrum
- base
- bsc
- gnosis
- ethereum
- optimism
- polygon
- sepolia
- monad
- katana
title: SupportedEvmChains
type: string
description: Chain identifier.
evaluation_type:
const: time_period
description: Evaluation mode.
enum:
- time_period
title: Evaluation Type
type: string
show_transaction_detail_for:
anyOf:
- items:
enum:
- approved
- rejected
- manual_approved
type: string
type: array
- type: 'null'
description: Transaction hash lists for asked verdicts.
title: Show Transaction Detail For
time_period:
allOf:
- additionalProperties: false
properties:
from:
description: Start of window (inclusive, ISO 8601).
format: date-time
title: From
type: string
to:
description: End of window (inclusive, ISO 8601).
format: date-time
title: To
type: string
required:
- from
- to
title: TimePeriodInput
type: object
description: Time window for query.
required:
- evaluation_type
- time_period
- chain
title: EvaluateTimePeriodRequest
type: object
title: EvaluateTransactionRequest
description: Request body for evaluating an EVM transaction against cosigner policies.
CalledAddressRules-Input:
properties:
called_addresses:
title: Called Addresses
$ref: '#/components/schemas/CalledAddressesRule'
type: object
required:
- called_addresses
title: CalledAddressRules
FireblocksCosignerUpdateExternal:
properties:
type:
type: string
enum:
- fireblocks
const: fireblocks
title: Type
vault_ids:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Vault Ids
chains:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Chains
involvement_level:
anyOf:
- $ref: '#/components/schemas/ApproverSigningMode'
- type: 'null'
security_policy:
anyOf:
- $ref: '#/components/schemas/ExternalPolicyOption'
- type: 'null'
unsupported_chain_behavior:
anyOf:
- $ref: '#/components/schemas/DecisionAction'
- type: 'null'
type: object
required:
- type
title: FireblocksCosignerUpdateExternal
TokenSpendApprovalPolicyRequest:
properties:
rules:
$ref: '#/components/schemas/TokenSpendApprovalRules-Input'
type:
const: token_spend_approval
enum:
- token_spend_approval
title: Type
type: string
required:
- type
- rules
title: TokenSpendApprovalPolicyRequest
type: object
FunctionCallRules-Input:
properties:
function_name:
$ref: '#/components/schemas/FunctionName'
function_parameters:
anyOf:
- items:
$ref: '#/components/schemas/FunctionParameter'
type: array
- type: 'null'
title: Function Parameters
type: object
required:
- function_name
title: FunctionCallRules
OtherChainPolicyResponse:
description: Policy response for other/unsupported chains as returned by the API.
properties:
name:
type: string
title: Name
action:
$ref: '#/components/schemas/Action'
policy:
$ref: '#/components/schemas/UnsupportedChainPolicyResponse'
type: object
required:
- name
- action
- policy
title: OtherChainPolicyResponse
CalledAddressRules-Output:
properties:
called_addresses:
title: Called Addresses
$ref: '#/components/schemas/CalledAddressesRule'
type: object
required:
- called_addresses
title: CalledAddressRules
TelegramExternalAction:
properties:
type:
type: string
enum:
- telegram
const: telegram
title: Type
chats:
items:
$ref: '#/components/schemas/TelegramExternalChannel'
type: array
minItems: 1
title: Chats
message_format:
anyOf:
- type: string
- type: 'null'
title: Message Format
type: object
required:
- type
- chats
title: TelegramExternalAction
GainingAddressesPolicyResponse:
properties:
type:
type: string
enum:
- gaining_addresses
const: gaining_addresses
title: Type
rules:
$ref: '#/components/schemas/GainingAddressesRules-Output'
type: object
required:
- type
- rules
title: GainingAddressesPolicyResponse
RiskExposureRules-Output:
properties:
category_thresholds:
items:
$ref: '#/components/schemas/CategoryThreshold-Output'
title: Category Thresholds
type: array
required:
- category_thresholds
title: RiskExposureRules
type: object
MovedAssetsRule:
properties:
operator:
$ref: '#/components/schemas/InclutionOperator'
value:
items:
anyOf:
- $ref: '#/components/schemas/AssetIDTarget'
- $ref: '#/components/schemas/AssetTagTarget'
- $ref: '#/components/schemas/AssetLabelTarget'
- $ref: '#/components/schemas/UnknownTarget'
title: Value
type: array
required:
- operator
- value
title: MovedAssetsRule
type: object
BitcoinCompositePolicyRequest:
properties:
type:
type: string
enum:
- composite
const: composite
title: Type
default: composite
operator:
type: string
enum:
- and
- or
title: Operator
rules:
items:
oneOf:
- $ref: '#/components/schemas/GainingAddressesPolicyRequest'
- $ref: '#/components/schemas/TransactionUSDValuePolicyRequest'
- $ref: '#/components/schemas/BitcoinCompositePolicyRequest'
discriminator:
propertyName: type
mapping:
composite: '#/components/schemas/BitcoinCompositePolicyRequest'
gaining_addresses: '#/components/schemas/GainingAddressesPolicyRequest'
transaction_usd_value: '#/components/schemas/TransactionUSDValuePolicyRequest'
type: array
title: Rules
type: object
required:
- operator
- rules
title: BitcoinCompositePolicyRequest
CosignerSafeResponseExternal:
properties:
chain:
type: string
title: Chain
type:
type: string
enum:
- safe
const: safe
title: Type
override_address:
anyOf:
- type: string
- ty
# --- truncated at 32 KB (119 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/blockaid/refs/heads/main/openapi/blockaid-cosigner-api-openapi.yml