Skip to main content
A route template is a custom route saved under a name. Its route.hops can be reused with routeTemplateId on create and estimate, in place of route. Templates are private to your integration.
  • Transfers copy the hops. Editing or deleting a template never changes a transfer already created from it.
  • Bundle hops are drawn again for each transfer, so two transfers from one template can pass through different library wallets.
  • A template works one way or both. The rules differ for one recipient and for several destinations (see Rules). A template is saved if it works at least one way. usableFor says which, and problems says why not. Both are checked again on every read.
  • Up to 100 templates per integration. Names are unique within your integration.
POST, PATCH and DELETE require an Idempotency-Key header, like every mutation.

Endpoints

Request body (POST)

string
required
1–64 characters: letters, digits, spaces, ., _ or -, starting with a letter or digit. Unique in your integration (MH_022).
string | null
Up to 500 characters, for example what the route is for.
object
required
{ "hops": [...] }, exactly as on create: each hop { "wallet", "waitSeconds" } or { "bundle", "waitSeconds" }.

Response

integer
Pass it as routeTemplateId.
string
string | null
object
{ hops } as saved, bundles unresolved.
integer
How long the route takes: the sum of its waits.
object
{ recipientWallet: boolean, destinations: boolean }.
object
For each way the template cannot be used, the MH_018 messages it would get. {} when both work.
string
string

Errors