Skip to content
API reference/Client logins

Make a sign-in link for a client login

Try it

For an "Edit your website" button in your own dashboard: a link that signs this client login in and opens their website's editor (or their home page) in your brand — no password screen. It works once and for 5 minutes, so make it when the button is pressed and send the browser straight to it; never email it. Only for client logins: someone who is also on a team, edits another company's site or uses two-step sign-in is refused (they sign in with their password). Takes NO Idempotency-Key — the link is never saved for a replay; calling again makes a new one.

POST/api/v1/sites/{site_id}/logins/{login_id}/sign-in-link

Authentication

An API key as Authorization: Bearer or x-api-key. It needs the clients:sign-in scope — make one-time sign-in links that open a client login's editor with no password (for your own dashboard).

clients:sign-inChanges the draft or a recordNo Idempotency-Key — one-time secretMCP tool: create_sign_in_link

Parameters

Named placeholders go in the path; the rest in a JSON body.

site_idstringPath · required
The site's id.1 to 100 characters
login_idstringPath · required
The login's id.1 to 100 characters
opensstringBody · optional
editor = Easy mode on this website (default); client = their home page with every site they edit.One of: editor, clientDefault "editor"

Response

201 with JSON on success (schema on the right). Errors use the standard envelope; the answer holds a one-time secret, so it is never saved for a replay and an Idempotency-Key is refused (400 idempotency_key_not_accepted) — call again to get a new one.

curl
curl -X POST 'https://websites.workflowcorp.com/api/v1/sites/SITE_ID/logins/LOGIN_ID/sign-in-link' \
  -H "Authorization: Bearer $WEBSITEBUDDY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"opens":"editor"}'
Example arguments
{
  "site_id": "SITE_ID",
  "login_id": "LOGIN_ID",
  "opens": "editor"
}
Response schema
{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "Send the client's browser here. One use, a few minutes."
    },
    "expires_at": {
      "type": "string"
    },
    "login_id": {
      "type": "string"
    },
    "email": {
      "type": "string"
    },
    "opens": {
      "type": "string",
      "enum": [
        "editor",
        "client"
      ]
    },
    "sentence": {
      "type": "string"
    }
  },
  "required": [
    "url",
    "expires_at",
    "login_id",
    "email",
    "opens",
    "sentence"
  ],
  "additionalProperties": false
}