Week of September 14

Console

Fixes from using the console every day, and a pass over the guides to make them match what the API does.

Invite someone again

When a person disconnected your application from their Layout account, there was no way back: provisioning the same number failed and resending the link did too. Now provisioning that number again, or pressing Resend link, starts a fresh invite on the same application. Someone with their own Layout account still has to approve you again before you can build for them.

  • Provisioning and resending from the console texts the approval link to a number that already has Layout, and the sign-up link to a new number. Before, both got the sign-up link, which signed the person in without connecting them to you.
  • The approval text carries a full link to tap, not a short code that looked like a verification code.
  • Sandbox never texts an approval link. Where the API would have texted an approval link in production, a sandbox call answers next: "connect" with the link for you to open yourself.
  • The console says what happened after you provision or resend: a link texted, already connected, or not texted because it is sandbox.

Errors that explain themselves

When the API rejects a console request with a reason, the console now shows that reason instead of a generic "Check the details and try again". A person who revoked your access, a send that failed and an opted-out number each get their own message.

One search everywhere

The console's search box now runs the same search as the docs: every section of every page, ranked, with the matching words highlighted and ⌘K to open it.

Guides corrected

  • Ordering over MCP describes connecting with a build grant token and the three tools that session can call.
  • Provisioning users shows that Layout texts the approval link by default, with next: "awaiting_user_approval".
  • Event types marks order.needs_approval and order.challenge as reserved and not sent today.
  • Rate limits and idempotency lists the daily build ceilings the API actually enforces.

Breaking changes

None. If you built a handler that waits on order.needs_approval or order.challenge, it will not fire yet.

All changes