Skip to main content
Use this page when building POST /strategies or PATCH /strategies/:id payloads programmatically. The external API now accepts a single flat rules array. The backend maps it internally to dealbreakers and the four UI rule groups (Security, Market, Socials, AI).

Request shape

Create and update use this external rule shape:
{
  "rule": "liquidity_usd",
  "dealbreaker": false,
  "min": 10000
}
Rule fields:
  • rule: required string. Must be an exact supported rule id.
  • dealbreaker: required boolean. Marks whether this rule is treated as a dealbreaker.
  • enabled: optional boolean. enabled: false skips any rule type.
  • min: optional number. Used only for numeric rules.
  • max: optional number. Used only for numeric rules.
  • value: optional string. Used only for enum rules (risk_level).
Unknown rule ids fail hard. Wrong field types or wrong field combinations fail hard with a clear error message that includes the blocking rules[index].

Rule-kind behavior

Boolean rules

Use enabled only.
  • enabled: true applies the rule.
  • enabled: false skips the rule.
  • min, max, and value are not allowed.
Boolean payload example:
{ "rule": "is_honeypot", "dealbreaker": true, "enabled": true }

Numeric rules

Use min and/or max.
  • At least one of min or max is required.
  • min and max must be non-negative finite numbers.
  • If both are present, max must be greater than min.
  • enabled is not allowed unless you are using enabled: false to skip the rule.
  • value is not allowed.
  • Internally, min maps to greater_than, max maps to less_than.
Numeric payload examples:
{ "rule": "liquidity_usd", "dealbreaker": false, "min": 10000 }
{ "rule": "dev_wallet_percent", "dealbreaker": true, "min": 5, "max": 20 }

Enum rules

Currently only risk_level.
  • value is required.
  • Allowed values: CRITICAL, HIGH, MEDIUM, LOW (case-insensitive input accepted).
  • Operator is internally fixed to equals.
  • enabled is not allowed unless you are using enabled: false to skip the rule.
  • min and max are not allowed.
Enum payload example:
{ "rule": "risk_level", "dealbreaker": true, "value": "LOW" }

PATCH clear behavior

PATCH /strategies/:id supports full replacement semantics for rules.
  • Omit rules to keep existing internal rules unchanged.
  • Send rules: [] to clear both internal dealbreakers and ruleGroups.
  • POST /strategies still requires a non-empty rules array.

Trigger update semantics

PATCH /strategies/:id uses replacement semantics for triggers too.
  • Omit triggers to keep existing triggers unchanged.
  • Send triggers to replace the entire internal trigger set.

Full create payload example

{
  "name": "API Strategy Example",
  "description": "Built from integration service",
  "strict": true,
  "alertCooldownMins": 30,
  "retryPolicy": {
    "type": "QUICK_RETRY",
    "maxAttempts": 3,
    "delayMinutes": 15
  },
  "matching": {
    "enabled": true,
    "minPercent": 80
  },
  "triggers": ["new_token_created"],
  "rules": [
    { "rule": "is_honeypot", "dealbreaker": true, "enabled": true },
    { "rule": "has_freeze_authority", "dealbreaker": true, "enabled": true },
    { "rule": "risk_level", "dealbreaker": true, "value": "LOW" },
    { "rule": "liquidity_usd", "dealbreaker": false, "min": 10000 },
    { "rule": "market_cap", "dealbreaker": false, "max": 1500000 },
    { "rule": "has_twitter", "dealbreaker": false, "enabled": true },
    { "rule": "website_content_validation_score", "dealbreaker": false, "min": 50 }
  ],
  "isActive": false
}

Supported rule ids

Source of truth: backend external rule catalog.

Security

is_honeypot, is_mintable, top_10_holder_percent, dev_wallet_percent, is_lp_locked, risk_level, rugged, lp_locked_pct, has_freeze_authority, has_high_ownership, has_top10_high_ownership, has_single_holder_ownership, has_creator_rug_history, has_low_lp_providers, has_low_liquidity, creator_has_multiple_tokens, has_creator_balance, has_lockers, risk_count, token_mutable, has_transfer_fee, token_age
token_age is evaluated in minutes.
Breaking change: on March 11, 2026, token_age runtime semantics moved from hours to minutes. Existing persisted thresholds were not auto-migrated.

Market

sell_tax, buy_tax, liquidity_usd, market_cap, volume_24h, tx_count, num_buys, num_sells, kols, global_fees_paid, pro_traders, snipers, insiders, bundle, dev_migrations, dev_pairs_created, bonding_progress, is_pump, holder_count

Socials

has_website, has_telegram, has_twitter, at_least_one_social, website_has_ca, website_contains_token_name, twitter_link_has_ca, x_link_contains_token_name, twitter_effective_views, x_community_member_count, x_community_views_count, twitter_effective_followers

AI

website_content_validation_score, x_content_validation_score

APIs

Full external API endpoint reference.

Data Point Glossary

Human-readable meaning of each rule and metric.