Skip to main content

📄 Guide

Rules and targets (card CARD / employee CUSTOMER) are bound many-to-many: a rule constrains nothing after creation and only takes effect once bound. Both bind and unbind are batch endpoints that address one rule and a batch of subjects: rule-level problems (missing / not ACTIVE / not owned by the company) reject the whole batch, while subject-level problems are item-independent with partial success — the response splits results into successTargets and failTargets, with per-item reasons in failTargets[].errorCode. Rule creation is covered in Creating velocity rules; the full code set is in the Error code dictionary.
Besides the bind endpoint on this page, rules can also be bound at issue time through the ruleIds field of the card application (no more than 5) — see Applying for virtual cards. Whichever path you take, a single card or a single employee carries at most 5 rules.

Batch bind

POST /open-api-corp/velocity/v1/bind

Request parameters

Response data

The endpoint returns no successCount / failCount: both equal the array lengths, and a second source of truth is avoided on purpose.
Per-item errorCode values for bind:

Request example

Response example

Batch-level error codes

Batch unbind

POST /open-api-corp/velocity/v1/unbind Same shape as bind: one request addresses a single rule, items are processed independently, and one failure does not affect the rest.

Request parameters

The response has the same shape as bind (successTargets / failTargets); per-item errorCode values for unbind:

Request example

Response example

Batch-level error codes

Listing a rule’s targets

GET /open-api-corp/velocity/v1/list-rule-targets — lists the cards and employees bound to a rule, paginated, newest binding first. The response data is a page: total / page / pageSize plus result[], each entry carrying subjectType (CARD / CUSTOMER), subjectId, and modifyTime (ISO-8601).
Returning an error instead of an empty page when the rule does not exist is deliberate: an empty page would be indistinguishable from “the rule exists but has no targets”. When you receive an empty result, you can be sure the rule exists and simply has nothing bound to it yet.

Listing the rules constraining a target

GET /open-api-corp/velocity/v1/list-target-rules — lists the rules constraining a card / employee, paginated. The response data is a page: total (the number of rules bound to this target) / page / pageSize plus result[], each entry carrying ruleId, ruleName, status (ACTIVE / INACTIVE), and modifyTime.

Next steps