Managed Signing
Create Policy

Create Policy

POST
https://api-prod.useknit.io/api/v1/managed-signing/policies
Scopemanaged-signing:writeAuthBearer token

This endpoint creates a new policy for managing signing request rules.

Body

FieldTypeRequiredDescription
namestringYesPolicy name
rulesobjectYesPolicy rules configuration

Basic Example

{
  "name": "default",
  "rules": {
    "chains": ["ETHEREUM_MAINNET"],
    "maxApprovalAmount": "1000000",
    "denyUnlimitedApprovals": true
  }
}

Full Policy Rules Schema

{
  "name": "comprehensive-policy",
  "rules": {
    "chains": ["ETHEREUM_MAINNET", "MATIC_MAINNET"],
    "tokens": ["0xAllowedToken1", "0xAllowedToken2"],
    "spenders": ["0xAllowedSpender1"],
    "maxApprovalAmount": "1000000000000000000",
    "denyUnlimitedApprovals": true,
    "requireApprovalAbove": "500000000000000000",
    "maxTransferAmount": "1000000000000000000",
    "rateLimits": {
      "windowSec": 3600,
      "maxCount": 10,
      "maxValue": "5000000000000000000"
    },
    "allowRawTx": false,
    "allowedContracts": ["0xContract1", "0xContract2"],
    "typedData": {
      "allow": true,
      "allowedPrimaryTypes": ["Permit", "Order"],
      "allowedDomains": [
        {
          "name": "Uniswap",
          "chainId": 1,
          "verifyingContract": "0xContractAddress"
        }
      ]
    },
    "message": {
      "allow": true,
      "maxBytes": 1024,
      "allowedPrefixes": ["Sign this message"]
    }
  }
}

Policy Rules Reference

Transaction Controls

FieldTypeDescription
chainsstring[]Allowed blockchain networks
tokensstring[]Allowed token contract addresses (for approvals and transfers)
spendersstring[]Allowed spender addresses for approvals
allowedContractsstring[]Contracts allowed for raw transactions
allowRawTxbooleanAllow raw transaction signing

Approval & Transfer Limits

FieldTypeDescription
maxApprovalAmountstringMaximum approval amount (in base units)
denyUnlimitedApprovalsbooleanBlock unlimited (max uint256) approvals
maxTransferAmountstringMaximum transfer amount per transaction (in base units)
requireApprovalAbovestringRequire manual approval above this amount

Rate Limiting

FieldTypeDescription
rateLimits.windowSecnumberTime window for rate limiting (seconds)
rateLimits.maxCountnumberMax requests allowed in time window
rateLimits.maxValuestringMax total value in time window (wei)

EIP-712 Typed Data Controls

FieldTypeDescription
typedData.allowbooleanAllow EIP-712 signing
typedData.allowedPrimaryTypesstring[]Allowed EIP-712 primary types
typedData.allowedDomainsobject[]Allowed EIP-712 domains
typedData.allowedDomains[].namestringDomain name
typedData.allowedDomains[].chainIdnumberChain ID
typedData.allowedDomains[].verifyingContractstringContract address

EIP-191 Message Controls

FieldTypeDescription
message.allowbooleanAllow EIP-191 message signing
message.maxBytesnumberMax message size in bytes
message.allowedPrefixesstring[]Required message prefixes

Request

curl "https://api-prod.useknit.io/api/v1/managed-signing/policies" \
  -H "Authorization: Bearer $KNIT_ACCESS_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "default",
    "rules": {
        "chains": ["ETHEREUM_MAINNET"],
        "maxApprovalAmount": "1000000",
        "denyUnlimitedApprovals": true
    }
}'

Response

Response
{
  "statusCode": 201,
  "message": "Policy created",
  "data": {
    "id": "<local-policy-id>",
    "businessId": "<business-id>",
    "name": "default",
    "rules": {
      "chains": ["ETHEREUM_MAINNET"],
      "maxApprovalAmount": "1000000",
      "denyUnlimitedApprovals": true
    },
    "createdAt": "2026-01-20T18:30:40.912Z",
    "updatedAt": "2026-01-20T18:30:40.912Z"
  },
  "success": true
}

Response Fields

FieldTypeDescription
idstringLocal policy ID (use this in subsequent requests)
businessIdstringYour business ID
namestringPolicy name
rulesobjectPolicy rules configuration
createdAtstringCreation timestamp
updatedAtstringLast update timestamp