Modulr Rules API

Rules

Operations 5

PUT /rules/{ruleId} Edit a specific Rule #
POST /rules Create a Rule #
DELETE /rules Delete a Rule #
GET /accounts/{id}/rules Get all Rules for a specific Account #
GET /accounts/{id}/rules/{rtype} Retrieve a Rule by rule type on a specific account #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/modulr-rules-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

modulr-rules-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Modulr Rules API
  description: Modulr API
  license:
    name: © Modulr Finance
    url: https://www.modulrfinance.com
  version: '1.0'
servers:
- url: https://api-sandbox.modulrfinance.com/api-sandbox-token
security:
- modulo_security: []
tags:
- name: Rules
  description: Rules
paths:
  /rules/{ruleId}:
    put:
      tags:
      - Rules
      summary: Edit a specific Rule
      description: The ability to modify the details of a specific rule based on the rule's unique reference.
      operationId: modifyRule
      parameters:
      - name: ruleId
        in: path
        description: Id of Rule to be edited
        required: true
        style: simple
        explode: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/rule.CreateRuleRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rule.RuleResponse'
        '400':
          description: Validation errors
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/rule.MessageResponse'
      security:
      - HMAC: []
      - TOKEN: []
  /rules:
    post:
      tags:
      - Rules
      summary: Create a Rule
      description: When you want a new rule on an account you can create one with this endpoint. Note that Rules are linked to an Account and each Account can only have one instance of a Rule type
      operationId: createRule
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/rule.CreateRuleRequest'
        required: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rule.RuleResponse'
        '400':
          description: Validation errors
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/rule.MessageResponse'
      security:
      - HMAC: []
      - TOKEN: []
    delete:
      tags:
      - Rules
      summary: Delete a Rule
      description: When you no longer want a rule on an account you can do it with this endpoint. You can delete more than one rule in the same request.
      operationId: removeRules
      parameters:
      - name: rIds
        in: query
        description: Id(s) of Rules to delete
        required: true
        style: form
        explode: true
        schema:
          type: array
          items:
            type: string
      responses:
        '200':
          description: Successfully deleted single resource
          content:
            application/json:
              schema:
                type: object
        '207':
          description: Map of multiple responses for multi-request
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/rule.MessageResponse'
      security:
      - HMAC: []
      - TOKEN: []
  /accounts/{id}/rules:
    get:
      tags:
      - Rules
      summary: Get all Rules for a specific Account
      description: The ability to get the details of all rules associated with the specified account using the Account ID as a reference. Can filter by a specific type using the type parameter.
      operationId: getRules
      parameters:
      - name: id
        in: path
        description: Account ID of the rules
        required: true
        style: simple
        explode: false
        schema:
          type: string
      - name: page
        in: query
        description: Page to fetch (0 indexed)
        required: false
        style: form
        explode: true
        schema:
          type: integer
          format: int32
          default: 0
      - name: size
        in: query
        description: Size of Page to fetch
        required: false
        style: form
        explode: true
        schema:
          type: integer
          format: int32
          default: 20
      - name: rtype
        in: query
        description: Filter to a specific RuleType
        required: false
        style: form
        explode: true
        schema:
          type: string
          default: ''
        example: SPLIT, SWEEP, FUNDING
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rule.RulePageResponse'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/rule.MessageResponse'
      security:
      - HMAC: []
      - TOKEN: []
  /accounts/{id}/rules/{rtype}:
    get:
      tags:
      - Rules
      summary: Retrieve a Rule by rule type on a specific account
      description: You need to know the unique reference of the account and the rule type you want to get to information on.
      operationId: getRule
      parameters:
      - name: id
        in: path
        description: Account ID of the rule
        required: true
        style: simple
        explode: false
        schema:
          type: string
      - name: rtype
        in: path
        description: The type of Rule.
        required: true
        style: simple
        explode: false
        schema:
          type: string
        example: SPLIT, SWEEP, FUNDING
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/rule.RuleResponse'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/rule.MessageResponse'
      security:
      - HMAC: []
      - TOKEN: []
components:
  schemas:
    rule.MessageResponse:
      type: object
      properties:
        field:
          type: string
        code:
          type: string
          enum:
          - GENERAL
          - BUSINESSRULE
          - MFASTATUS
          - MFAERROR
          - MFATIMEOUT
          - MFADEVICEMM
          - MFAMESSAGEINVALID
          - NOTFOUND
          - DUPLICATE
          - INVALID
          - CONNECTION
          - RETRY
          - RATELIMIT
          - PERMISSION
          - NOTACCEPTABLE
          - MFAVERIFICATION
          - TOKENEXPIRED
        errorCode:
          type: string
        message:
          type: string
        sourceService:
          type: string
    rule.SplitConfig:
      type: object
      description: Configuration for a Split Rule
      properties:
        destinationId:
          type: string
          description: Id of destination beneficiary. e.g. B1000001.
        percent:
          type: string
          description: Percentage of payment to be moved to specified destination. e.g. 7.25.
          minLength: 1
      required:
      - destinationId
      - percent
    rule.RuleConfigData:
      type: object
      description: Configuration fields for all types of rules. To be populated where applicable based on rule type.
      properties:
        daysToRun:
          type: array
          description: Day(s) of the week the rule is to run. e.g. ["MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY","SUNDAY"]. Sweep Rule Only
          items:
            type: string
            enum:
            - MONDAY
            - TUESDAY
            - WEDNESDAY
            - THURSDAY
            - FRIDAY
            - SATURDAY
            - SUNDAY
        frequency:
          type: string
          description: Frequency of the rule. Sweep Rule Only
          enum:
          - Daily
        destinationId:
          type: string
          description: Id of destination beneficiary. e.g. B1000001. Sweep Rule Only
        balanceToLeave:
          type: number
          description: Balance to be left after the rule has been ran. e.g. 100.00. Sweep Rule Only
        triggerBalance:
          type: number
          description: Minimum balance required to trigger the rule. e.g. 100.00. Sweep Rule Only
        splits:
          type: array
          items:
            $ref: '#/components/schemas/rule.SplitConfig'
        conditionalSplits:
          type: array
          items:
            $ref: '#/components/schemas/rule.SplitConfig'
        conditionalSplitConfig:
          $ref: '#/components/schemas/rule.ConditionalSplitConfig'
        sourceId:
          type: string
          description: Account to fund the supplied accountId. e.g. A1000002. Funding Rule Only
    rule.RuleResponse:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for a Rule
          example: R1000001
        type:
          type: string
          description: The type of Rule. Can be one of the following {SWEEP, SPLIT, FUNDING}
          enum:
          - SPLIT
          - SWEEP
          - FUNDING
        status:
          type: string
          enum:
          - ACTIVE
          - INACTIVE
        name:
          type: string
          description: Rule's name
          example: My new rule
        accountId:
          type: string
          description: The Account which the Rule is created on.
          example: A1000001
        accountCurrency:
          type: string
          enum:
          - GBP
          - EUR
          - AED
          - AFN
          - ALL
          - AMD
          - ANG
          - AOA
          - ARS
          - AUD
          - AWG
          - AZN
          - BAM
          - BBD
          - BDT
          - BGN
          - BHD
          - BIF
          - BMD
          - BND
          - BOB
          - BOV
          - BRL
          - BSD
          - BTN
          - BWP
          - BYN
          - BZD
          - CAD
          - CDF
          - CHE
          - CHF
          - CHW
          - CLF
          - CLP
          - CNY
          - COP
          - COU
          - CRC
          - CUC
          - CUP
          - CVE
          - CZK
          - DJF
          - DKK
          - DOP
          - DZD
          - EGP
          - ERN
          - ETB
          - FJD
          - FKP
          - GEL
          - GHS
          - GIP
          - GMD
          - GNF
          - GTQ
          - GYD
          - HKD
          - HNL
          - HRK
          - HTG
          - HUF
          - IDR
          - ILS
          - INR
          - IQD
          - IRR
          - ISK
          - JMD
          - JOD
          - JPY
          - KES
          - KGS
          - KHR
          - KMF
          - KPW
          - KRW
          - KWD
          - KYD
          - KZT
          - LAK
          - LBP
          - LKR
          - LRD
          - LSL
          - LYD
          - MAD
          - MDL
          - MGA
          - MKD
          - MMK
          - MNT
          - MOP
          - MRU
          - MUR
          - MVR
          - MWK
          - MXN
          - MXV
          - MYR
          - MZN
          - NAD
          - NGN
          - NIO
          - NOK
          - NPR
          - NZD
          - OMR
          - PAB
          - PEN
          - PGK
          - PHP
          - PKR
          - PLN
          - PYG
          - QAR
          - RON
          - RSD
          - RUB
          - RWF
          - SAR
          - SBD
          - SCR
          - SDG
          - SEK
          - SGD
          - SLE
          - SLL
          - SOS
          - SRD
          - SSP
          - STN
          - SVC
          - SYP
          - SZL
          - SHP
          - THB
          - TJS
          - TMT
          - TND
          - TOP
          - TRY
          - TTD
          - TWD
          - TZS
          - UAH
          - UGX
          - USD
          - USN
          - UYI
          - UYU
          - UYW
          - UZS
          - VES
          - VND
          - VUV
          - WST
          - XAF
          - XAG
          - XAU
          - XBA
          - XBB
          - XBC
          - XBD
          - XCD
          - XDR
          - XOF
          - XPD
          - XPF
          - XPT
          - XSU
          - XTS
          - XUA
          - XXX
          - YER
          - ZAR
          - ZMW
          - ZWL
        masterId:
          type: string
          description: The master rule ID. When a rule is changed, the original is marked as inactive, and a new one created. The master ID enables us to identify those rules which are updates
          example: M1000001
        data:
          $ref: '#/components/schemas/rule.RuleConfigData'
      required:
      - accountCurrency
      - accountId
      - data
      - id
      - masterId
      - name
      - type
    rule.ConditionalSplitConfig:
      type: object
      description: Configuration for a Conditional Split Rule
      properties:
        destinationId:
          type: string
          description: Id of destination beneficiary. e.g. B1000001.
        percent:
          type: string
          description: Percentage of payment to be moved to specified destination. e.g. 7.25.
          minLength: 1
        conditionAmount:
          type: number
          description: Amount the conditional split rule should reach before defaulting to the split rule. e.g. 100.
          maximum: 2147483647
          minimum: 0.01
        conditionDone:
          type: boolean
          description: Whether the condition amount has been met. e.g. true or false
      required:
      - conditionAmount
      - destinationId
      - percent
    rule.RulePageResponse:
      type: object
      properties:
        content:
          type: array
          description: List of responses on the current page
          items:
            $ref: '#/components/schemas/rule.RuleResponse'
        size:
          type: integer
          format: int32
          description: Page size
        totalSize:
          type: integer
          format: int64
          description: Total count
        page:
          type: integer
          format: int32
          description: Current page number, 0-based, i.e first page = 0, second page = 1
        totalPages:
          type: integer
          format: int32
          description: Total pages
      required:
      - content
      - page
      - size
      - totalPages
      - totalSize
    rule.CreateRuleRequest:
      type: object
      description: create rule request
      properties:
        type:
          type: string
          description: The type of Rule. Can be one of the following {SWEEP, SPLIT, FUNDING}
        name:
          type: string
          description: Rule's name
          example: My new rule
          maxLength: 25
          minLength: 0
        accountId:
          type: string
          description: The Account which the Rule is created on.
          example: A1000001
          minLength: 1
        data:
          $ref: '#/components/schemas/rule.RuleConfigData'
      required:
      - accountId
      - data
      - name
      - type
  securitySchemes:
    modulo_security:
      type: apiKey
      name: Authorization
      in: header
    TOKEN:
      type: apiKey
      name: Authorization
      in: header
x-readme:
  proxy-enabled: false