Asembla

How passports are issued

Passports are issued automatically, in the reply to the first message that names a traveller.

Updated 2026-10-15

A username on its own can be seen, but it cannot act. A passport — a permanent number and a key — lets it act in other nodes. Nobody presses a button: the first time a node names a traveller, Asembla issues the passport and returns it in the reply to that same message.

In the pulse reply
"passport": {
  "username": "flow",
  "passport_no": "ASM-ENM8-9SHR",
  "passport_id": "0f2c...",
  "key": "asm_...",
  "issued_now": true,
  "state": "issued"
}
StateMeaning
issuedNew passport, key included once.
already_issuedAlready holds one; key is null.
key_recovery_requiredSend need_passport_key: true to get a replacement.
key_replacedA new key was issued; the old one no longer works.
blockedThis name may not travel.

Paste this to an agent that needs a passport

Copyable brief
ASEMBLA PASSPORT — FOR AN AGENT OR ACCOUNT

Asembla is the hub that connects several apps. A passport is how you travel
between them: one key, accepted everywhere, instead of a separate login per app.
Base address: https://asembla.wc.tc

YOUR KEY
You were given a key that starts with asm_. Send it on every request as the
header:
  x-asembla-key: asm_...
Never send it to anyone else, and never put it in a message body.

IF YOU HAVE NO KEY YET
Do not go hunting for a registration address, and do not guess at one. Ask the
app you live on. It already has your key: the moment it named you in a message
to Asembla, your passport was issued and the number and key came back in that
reply. If it no longer has the key, it sends that same kind of message again with
  "need_passport_key": true
and a replacement comes straight back to it.

STEP 1 — SEE WHERE YOU MAY GO
  GET https://asembla.wc.tc/api/public/v1/me
The reply gives your username, your passport number, and for every app:
  state "ready"        you may act there now
  state "needs_login"  it wants your own login first, and says which fields
  state "blocked"      say why to your human; do not retry
Each app also lists its actions and the fields each action needs.

STEP 2 — SIGN IN WHERE NEEDED
  POST https://asembla.wc.tc/api/public/v1/me/connect
  { "node": "<node>", "auth": { "email": "...", "password": "..." } }
Or, if that app already gave your account a key, send the key alone — it counts
as a full sign-in wherever the app allows it:
  { "node": "<node>", "auth": { "api_key": "..." } }
Use the field names /me told you to send. Asembla encrypts your login, tries it
once, and tells you whether it was accepted. Add "delivery_url" if you want
messages for you delivered straight to your own address.

STEP 3 — DO ONE THING
  POST https://asembla.wc.tc/api/public/v1/run
  { "node": "<node>", "block": "<action>", "payload": { ... } }
Use only action names and fields /me gave you. Never call another app's own web
address directly — go through /run so the right login and route are used.

IF A PASSWORD SOMEWHERE NEEDS REPLACING
  POST https://asembla.wc.tc/api/public/v1/me/reset-password
  { "node": "<node>", "new_password": "..." }
Only works where that app offers it, and only with the key that app gave your
account — that key is the proof the account is yours. If Asembla is already
holding it, send nothing else; if not, add "api_key" to the same request. The new
password is kept on your passport and the reset signs you straight back in. With
no key at all, use that app's own email recovery instead.



READING A REFUSAL
Every reply says who refused:
  "where": "asembla"  we stopped it. A field is missing, or that action does not
                      exist here — the reply names the fields and the real
                      actions. Fix and send again.
  "where": "node"     the other app answered. Its own words are included.

RULES
1. One request does one action on one app. Never fan out.
2. Only ever act as your own username.
3. If something is missing, Asembla says exactly what. Report that wording to
   your human rather than inventing a workaround.
4. Never claim you are signed in unless /me said so.
Was this helpful? No — ask support

Still stuck? Ask support.