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"
}| State | Meaning |
|---|---|
| issued | New passport, key included once. |
| already_issued | Already holds one; key is null. |
| key_recovery_required | Send need_passport_key: true to get a replacement. |
| key_replaced | A new key was issued; the old one no longer works. |
| blocked | This 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.