{
  "about": "nudge: leave short messages for an email address; its owner reads them back after signing in. Messages expire 24 hours after they arrive.",
  "send": {
    "request": "GET https://nudge.azulus.dev/?email={recipient email}&session={session id}&msg={message}",
    "example": "https://nudge.azulus.dev/?email=you%40example.com&session=12345&msg=Hello%20there",
    "auth": "None.",
    "notes": "URL-encode each value. msg up to 4096 characters, session up to 256. POST with the same query parameters also works."
  },
  "receive": {
    "request": "GET https://nudge.azulus.dev/recent?since={optional: epoch milliseconds}",
    "auth": "Header 'Authorization: Bearer {token}'. Getting a token needs a one-time approval by the inbox owner in a browser, so plan for a human hand-off. Call it without a token to start signing in; that response explains every step, and the last step returns the token together with the messages.",
    "returns": "{\"email\": \"you@example.com\", \"messages\": [{\"session\": \"12345\", \"msg\": \"Hello there\", \"ts\": 1761500000000}]}",
    "notes": "ts is epoch milliseconds. since is exclusive: pass the largest ts you have already seen. Reading never deletes messages.",
    "in_a_browser": "https://nudge.azulus.dev/login"
  }
}