Metadata
| Field | Value |
|---|---|
| Name | yield.allocate |
| Category | treasury |
| Required scope | treasury:yield-allocate |
| Idempotency key required | yes |
Annotations
| Annotation | Value |
|---|---|
| Title | Allocate Yield |
| Read-only | no |
| Destructive | no |
| Idempotent | yes |
| Open-world | no |
| Requires human approval | no |
Input schema
Output schema
Auth
Caller’s grant must include thetreasury:yield-allocate scope. Grants whose scope set is a superset of the required scope are accepted.
Request examples
Response examples
SuccessErrors
| Code | reason_id | Meaning |
|---|---|---|
-32000 | unauthenticated | Bearer token missing or expired. |
-32001 | unauthorized | Grant does not include treasury:yield-allocate. |
-32002 | policy_denied | Envelope denied the allocation (velocity, protocol not in allowlist, daily cap). |
-32003 | step_up_required | Amount exceeds the envelope’s step_up_amount_cents. data.step_up_url is the biometric approval URL. |
-32004 | rate_limited | Too many allocation requests. data.retry_after_seconds present. |
-32006 | yield_v3_blocked | V3 DeFi yield infrastructure is not yet deployed. The tool is gated on Bucket 1.8 / 4.4. |
-32602 | same_protocol_noop | from_protocol and to_protocol are identical — no-op. |
-32603 | internal_error | Transient server fault. Retry with the same idempotency key. |
Step-up flow
yield.allocate uses the same envelope step-up threshold as payments.initiate — step-up is not always required, only when the allocation amount exceeds the envelope’s step_up_amount_cents.
- Call
yield.allocatewith your params. If the amount is below the threshold, the allocation is enqueued immediately and you receive a success response. - If the amount is at or above the threshold, you receive
-32003withdata.step_up_url. - Redirect the principal to
step_up_url. On approval, Glide mints a one-time sigil forreason: "yield_allocate". - Re-submit the original call with
step_up_sigil: "<sigil>"added to params. The server verifies the sigil is bound toreason: "yield_allocate"and has not been redeemed.
vault.rotateSigner, the allocation row is enqueued after the sigil is redeemed in the same call — there is no separate proposal step.