---
title: "Get the active draft by policy type"
method: GET
path: "/policy/draft"
tags: ["Policy Editor V2"]
---

# Get the active draft by policy type

`GET /policy/draft`

## Request

- Base URL: `https://api.fireblocks.io/v1`
- URL: `https://api.fireblocks.io/v1/policy/draft`
- Auth: none declared
- TypeScript: <https://skmtc.dev/fireblocks/apis/fireblocks-api/docs/policy/draft/get.ts> (a function with typed inputs; its response is checked against the schema)

Returns the active draft and its validation for a specific policy type.

## Query parameters

- `policyType` 'TRANSFER' | 'STAKE' | 'CONTRACT_CALL' | 'TYPED_MESSAGE' | 'APPROVE' | 'MINT' | 'BURN' | 'RAW' | 'COMPLIANCE' | 'DEPLOYMENT' | 'PROGRAM_CALL' | 'DAPP_CONNECTION' | 'UPGRADE' | 'ORDER' | 'AML_CHAINALYSIS_V2_SCREENING' | 'AML_CHAINALYSIS_V2_POST_SCREENING' | 'AML_ELLIPTIC_HOLISTIC_SCREENING' | 'AML_ELLIPTIC_HOLISTIC_POST_SCREENING' | 'TR_NOTABENE_SCREENING' | 'TR_NOTABENE_POST_SCREENING', required: Policy type enumeration

## Response `200`

A draft validation response object

- DraftReviewAndValidationResponse: Draft validation
  - `draftResponse` DraftResponse, required: Response object for draft operations
    - `status` string, required: Operation status
    - `rules` PolicyRule[], required: Draft rules
      - `name` string, required: Name of the policy rule
      - `id` string, required: Unique identifier for the policy rule
      - `policyEngineVersion` 'v2', required: Policy engine version
      - `type` 'TRANSFER' | 'STAKE' | 'CONTRACT_CALL' | 'TYPED_MESSAGE' | 'APPROVE' | 'MINT' | 'BURN' | 'RAW' | 'COMPLIANCE' | 'DEPLOYMENT' | 'PROGRAM_CALL' | 'DAPP_CONNECTION' | 'UPGRADE' | 'ORDER' | 'AML_CHAINALYSIS_V2_SCREENING' | 'AML_CHAINALYSIS_V2_POST_SCREENING' | 'AML_ELLIPTIC_HOLISTIC_SCREENING' | 'AML_ELLIPTIC_HOLISTIC_POST_SCREENING' | 'TR_NOTABENE_SCREENING' | 'TR_NOTABENE_POST_SCREENING', required: Policy type enumeration
      - `subType` 'TRANSFER' | 'STAKE' | 'CONTRACT_CALL' | 'TYPED_MESSAGE' | 'APPROVE' | 'MINT' | 'BURN' | 'RAW' | 'COMPLIANCE' | 'DEPLOYMENT' | 'PROGRAM_CALL' | 'DAPP_CONNECTION' | 'UPGRADE' | 'ORDER' | 'AML_CHAINALYSIS_V2_SCREENING' | 'AML_CHAINALYSIS_V2_POST_SCREENING' | 'AML_ELLIPTIC_HOLISTIC_SCREENING' | 'AML_ELLIPTIC_HOLISTIC_POST_SCREENING' | 'TR_NOTABENE_SCREENING' | 'TR_NOTABENE_POST_SCREENING': Policy type enumeration
      - `initiator` union, required
        - '*': All users are allowed
        - InitiatorConfig: Policy rule initiator configuration
          - `users` string[]: List of user IDs
          - `groups` string[]: List of policy group IDs
          - `services` string[]
          - `fbAdminGroups` string[]
          - `exchange` string[]
          - `operator` 'INCLUDES': Operator for selection
      - `asset` AssetConfig: Policy asset configuration
        - `nftTransfer` boolean, required: Whether this is an NFT transfer
        - `assetTypes` union[]: List of asset types
          - union
            - string
            - '*'
        - `operator` 'INCLUDES': Operator for selection
      - `source` SourceConfig, required: Source account configuration for policy rules
        - `type` AccountType2[]: Source account types
        - `subType` AccountIdentifier[]: Source account subtypes
          - `type` 'EXCHANGE' | 'UNMANAGED' | 'VAULT' | 'GLOBAL_WHITELIST' | 'NETWORK_CONNECTION' | 'FIAT_ACCOUNT' | 'CONNECTED_ACCOUNT' | 'ONE_TIME_ADDRESS' | 'SRC_DST_NA' | 'MULTIPLE_VENUES' | 'END_USER_WALLET' | 'OEC_PARTNER' | 'CONTRACT' | 'INTERNAL' | 'EXTERNAL' | 'DAPP_CONNECTION' | 'UNKNOWN' | '*' | 'ANY', required: Type of account
          - `id` string: Account ID
          - `subType` string: Account subtype
          - `address` string: Account address
        - `ids` AccountIdentifier[]: Source account identifiers
          - `type` 'EXCHANGE' | 'UNMANAGED' | 'VAULT' | 'GLOBAL_WHITELIST' | 'NETWORK_CONNECTION' | 'FIAT_ACCOUNT' | 'CONNECTED_ACCOUNT' | 'ONE_TIME_ADDRESS' | 'SRC_DST_NA' | 'MULTIPLE_VENUES' | 'END_USER_WALLET' | 'OEC_PARTNER' | 'CONTRACT' | 'INTERNAL' | 'EXTERNAL' | 'DAPP_CONNECTION' | 'UNKNOWN' | '*' | 'ANY', required: Type of account
          - `id` string: Account ID
          - `subType` string: Account subtype
          - `address` string: Account address
        - `tags` PolicyTag[]: Tags for source matching
          - `id` string, required: Tag identifier
        - `operator` 'INCLUDES', required: Operator for selection
        - `matchFrom` 'ACCOUNT': Whether to match from account (relevant only for ORDER policy type)
      - `destination` DestinationConfig: Destination configuration for policy rules
        - `type` AccountType2[]: Destination account types
        - `subType` AccountIdentifier[]
          - `type` 'EXCHANGE' | 'UNMANAGED' | 'VAULT' | 'GLOBAL_WHITELIST' | 'NETWORK_CONNECTION' | 'FIAT_ACCOUNT' | 'CONNECTED_ACCOUNT' | 'ONE_TIME_ADDRESS' | 'SRC_DST_NA' | 'MULTIPLE_VENUES' | 'END_USER_WALLET' | 'OEC_PARTNER' | 'CONTRACT' | 'INTERNAL' | 'EXTERNAL' | 'DAPP_CONNECTION' | 'UNKNOWN' | '*' | 'ANY', required: Type of account
          - `id` string: Account ID
          - `subType` string: Account subtype
          - `address` string: Account address
        - `ids` AccountIdentifier[]
          - `type` 'EXCHANGE' | 'UNMANAGED' | 'VAULT' | 'GLOBAL_WHITELIST' | 'NETWORK_CONNECTION' | 'FIAT_ACCOUNT' | 'CONNECTED_ACCOUNT' | 'ONE_TIME_ADDRESS' | 'SRC_DST_NA' | 'MULTIPLE_VENUES' | 'END_USER_WALLET' | 'OEC_PARTNER' | 'CONTRACT' | 'INTERNAL' | 'EXTERNAL' | 'DAPP_CONNECTION' | 'UNKNOWN' | '*' | 'ANY', required: Type of account
          - `id` string: Account ID
          - `subType` string: Account subtype
          - `address` string: Account address
        - `tags` PolicyTag[]: Tags for destination matching
          - `id` string, required: Tag identifier
        - `operator` 'INCLUDES', required: Operator for selection
        - `matchFrom` 'ACCOUNT' | 'SOURCE': Whether to match from account or source (relevant only for ORDER policy type). If set to ACCOUNT, only matchFrom is allowed and other fields are not required.
        - `addressType` '*' | 'WHITELISTED' | 'ONE_TIME', required: Type of destination addresses allowed
      - `account` AccountConfig: Policy account configuration
        - `type` AccountType2[]: Account types
        - `subType` AccountIdentifier[]
          - `type` 'EXCHANGE' | 'UNMANAGED' | 'VAULT' | 'GLOBAL_WHITELIST' | 'NETWORK_CONNECTION' | 'FIAT_ACCOUNT' | 'CONNECTED_ACCOUNT' | 'ONE_TIME_ADDRESS' | 'SRC_DST_NA' | 'MULTIPLE_VENUES' | 'END_USER_WALLET' | 'OEC_PARTNER' | 'CONTRACT' | 'INTERNAL' | 'EXTERNAL' | 'DAPP_CONNECTION' | 'UNKNOWN' | '*' | 'ANY', required: Type of account
          - `id` string: Account ID
          - `subType` string: Account subtype
          - `address` string: Account address
        - `ids` AccountIdentifier[]
          - `type` 'EXCHANGE' | 'UNMANAGED' | 'VAULT' | 'GLOBAL_WHITELIST' | 'NETWORK_CONNECTION' | 'FIAT_ACCOUNT' | 'CONNECTED_ACCOUNT' | 'ONE_TIME_ADDRESS' | 'SRC_DST_NA' | 'MULTIPLE_VENUES' | 'END_USER_WALLET' | 'OEC_PARTNER' | 'CONTRACT' | 'INTERNAL' | 'EXTERNAL' | 'DAPP_CONNECTION' | 'UNKNOWN' | '*' | 'ANY', required: Type of account
          - `id` string: Account ID
          - `subType` string: Account subtype
          - `address` string: Account address
        - `tags` PolicyTag[]: Tags for account matching
          - `id` string, required: Tag identifier
        - `operator` 'INCLUDES', required: Operator for selection
        - `matchFrom` 'ACCOUNT' | 'SOURCE': Whether to match from account or source
      - `side` 'BUY' | 'SELL' | 'ANY': Order side for trading operations
      - `verdict` VerdictConfig, required: Verdict configuration
        - `action` 'ALLOW' | 'BLOCK' | '2-TIER' | 'ACCEPT' | 'REJECT' | 'ALERT' | 'SCREEN' | 'PASS' | 'WAIT' | 'FREEZE' | 'CANCEL', required: Verdict action
        - `approvers` ApproversConfig: Approvers configuration
          - `canInitiatorApprove` boolean, required: Whether initiator can approve
          - `operator` 'AND' | 'OR': Operator for approval groups
          - `allowOperatorAsAuthorizer` boolean: Whether operator can be authorizer
          - `approvalGroups` object[]: List of approval groups
            - `threshold` number, required: Approval threshold
            - `users` string[]: List of user IDs
            - `groups` string[]: List of policy group IDs
        - `designatedSigners` DesignatedSignersConfig: Designated signers configuration
          - `type` 'SINGLE' | 'MULTIPLE' | 'INITIATOR', required: Type of designated signers
          - `users` string[]: List of user IDs
          - `groups` string[]: List of policy group IDs
      - `amountOverTime` AmountOverTimeConfig: Amount over time configuration
        - `range` AmountRangeMinMax2, required: Amount range with minimum and maximum values
          - `min` string, required: Minimum amount
          - `max` string: Maximum amount
        - `currency` 'NATIVE' | 'USD' | 'EUR', required: Currency for the amount
        - `timePeriod` TimePeriodConfig, required: Time period configuration
          - `seconds` string, required: Time period in seconds
          - `initiator` 'PER_SINGLE_MATCH' | 'ACROSS_ALL_MATCHES', required: Type of match for time period application
          - `source` 'PER_SINGLE_MATCH' | 'ACROSS_ALL_MATCHES', required: Type of match for time period application
          - `destination` 'PER_SINGLE_MATCH' | 'ACROSS_ALL_MATCHES', required: Type of match for time period application
      - `amount` AmountConfig: Currency property for amount configuration
        - `range` AmountRangeMinMax2, required: Amount range with minimum and maximum values
          - `min` string, required: Minimum amount
          - `max` string: Maximum amount
        - `currency` 'NATIVE' | 'USD' | 'EUR': Currency for the amount
      - `externalDescriptor` string: External descriptor for the rule
      - `method` union
        - '*': All methods allowed
        - ContractMethodConfig: Contract method configuration
          - `methodCalls` string[], required
          - `operator` 'EITHER' | 'EXACT', required: Operator for method calls
          - `payloadSuffix` string: Payload suffix for method calls
      - `isGlobalPolicy` boolean: Whether this is a global policy
      - `programCall` ProgramCallConfig: Program call configuration
        - `allowedSolanaProgramCalls` '*' | 'WHITELISTED', required: Whether Solana program calls are allowed
      - `screeningMetadata` ScreeningMetadataConfig: Screening metadata configuration
        - `direction` 'INBOUND' | 'OUTBOUND' | 'ANY': Direction of transaction
        - `provider` 'CHAINALYSIS' | 'CHAINALYSIS_V2' | 'ELLIPTIC' | 'ELLIPTIC_HOLISTIC' | 'NOTABENE', nullable: Screening provider
        - `riskRating` 'LOW' | 'MEDIUM' | 'HIGH' | 'SEVERE' | 'ANY': Risk rating threshold
        - `riskScore` string: Risk score threshold
        - `exposureType` 'DIRECT' | 'INDIRECT' | 'ANY': Exposure type
        - `category` string[]
        - `name` string[]
        - `categoryId` string[]
        - `status` 'COMPLETED' | 'PENDING' | 'REJECTED' | 'FAILED' | 'CANCELED' | 'BLOCKING_TIME_EXPIRED': Transaction status
        - `sourceAddress` string: Source address
        - `destAddress` string: Destination address
      - `quoteAsset` AssetConfig: Policy asset configuration
        - `nftTransfer` boolean, required: Whether this is an NFT transfer
        - `assetTypes` union[]: List of asset types
          - union
            - string
            - '*'
        - `operator` 'INCLUDES': Operator for selection
      - `baseAsset` AssetConfig: Policy asset configuration
        - `nftTransfer` boolean, required: Whether this is an NFT transfer
        - `assetTypes` union[]: List of asset types
          - union
            - string
            - '*'
        - `operator` 'INCLUDES': Operator for selection
      - `quoteAmount` AmountRange: Amount range with minimum and maximum values
        - `range` AmountRangeMinMax2, required: Amount range with minimum and maximum values
          - `min` string, required: Minimum amount
          - `max` string: Maximum amount
      - `baseAmount` AmountRange: Amount range with minimum and maximum values
        - `range` AmountRangeMinMax2, required: Amount range with minimum and maximum values
          - `min` string, required: Minimum amount
          - `max` string: Maximum amount
      - `dAppAddress` DAppAddressConfig: dApp address configuration for policy rules
        - `globalWhitelisted` string[], required: Globally whitelisted addresses
        - `tenantWhitelisted` string[], required: Tenant whitelisted addresses
        - `urls` string[], required: Allowed all address
        - `operator` 'INCLUDES', required: Operator for selection
      - `derivationPath` DerivationPathConfig: Derivation path configuration
        - `path` number[], required: Derivation path as array of numbers
        - `partial` boolean: Whether this is a partial path
      - `index` number: Index for the policy rule
    - `draftId` string, required: Draft unique id
    - `metadata` PolicyMetadata, required: Policy metadata keyed by policy type
  - `validation` PolicyValidation, required: Policy validation object
    - `status` string, required: Validation status
    - `checkResult` PolicyCheckResult, required: Policy rules validation result
      - `errors` number, required: Number of errors
      - `results` PolicyRuleCheckResult[], required: A set of validation results
        - `index` number, required: Rule index number in the policy
        - `status` 'ok' | 'failure', required: Validation status
        - `errors` PolicyRuleError[], required: A set of rule validation error objects
          - `errorMessage` string, required: Error message
          - `errorCode` number, required: error code
          - `errorCodeName` string, required: error code name
          - `errorField` 'operator' | 'operators' | 'authorizationGroups' | 'designatedSigner' | 'designatedSigners' | 'contractMethods' | 'amountAggregation' | 'src' | 'dst', required: The field which the error relates to * operator - transaction initiator * operators - transaction initiators * authorizationGroups - transaction authorizer groups * designatedSigner - transaction signer * designatedSigners - transaction signers * contractMethods - contract methods * amountAggregation - transaction amount aggregation configuration * src - transaction source asset configuration * dst - transaction destination asset configuration

## Other responses

- `default`: Error Response

---

[API](https://skmtc.dev/fireblocks/apis/fireblocks-api.md) - [All operations](https://skmtc.dev/fireblocks/apis/fireblocks-api/llms.txt) - [OpenAPI document](https://skmtc.dev/fireblocks/apis/fireblocks-api/revisions/4eba9965659a?raw)
