POST /api/tally/coins/migrate-out
| Method | POST |
| Path | /api/tally/coins/migrate-out |
| Group | Tally Protocol |
| Auth | no session — authorized by the coin's single-use bearer ticket (called domain-to-domain) |
| Source | shared/api-core/src/routes/tallyProtocol.ts |
What it does
The issuing domain side of a cross-domain redeem. Called by the destination
domain (not the user). Verifies the coin's single-use bearer_ticket, then
atomically burns the coin (status='migrated', spend_seq++) and returns an
Ed25519-signed migration authorization the destination uses to mint. Trust is
the domain's published node key (/api/node/status) — no shared secret.
Idempotent: a repeat call re-returns the same authorization.
Returns
{ "ok": true, "migration": {
"token_id": "ZT-…", "to_zid": "ZEQ…", "to_origin": "https://zeqond.com",
"value": 6, "origin_spend_seq": 1, "home_origin": "https://zeqapi.com",
"migration_sig": "…", "node_pubkey": "…" } }
You do not normally call this directly; it is invoked by
POST /api/tally/coins/redeem.