# One-time sign-in ticket

`POST /service/@id/builder/login` · TinoPage Builder, service owner's sign-in token

Returns 201 `{url, expires_at}`: a one-time sign-in link valid for 120 seconds, to the dashboard (`target: me`) or a website's editor (`target: editor`, `site_id`). Open it right away for the service owner; do not store it or send it through another channel. A suspended service still gets a ticket (read-only access); a terminated one answers 403 `ACCOUNT_TERMINATED`.

## HTTP request

| Item | Value |
| --- | --- |
| URL | `https://api.tino.vn/service/@id/builder/login` |
| Method | `POST` |
| Authentication | the TinoPage Builder service owner's sign-in token (`Authorization: Bearer <token>`); the `/v1` gateway does not expose TinoPage Builder yet |
| Content-Type | `application/json` |

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | int | yes | TinoPage Builder service ID |
| `target` | body | string | no | `me` (dashboard, default) or `editor` (website editor) |
| `site_id` | body | string | no | ID (UUID) of the website to open; omit for the account's oldest website |
| `idempotency_key` | body | string | no | 8–64 characters `A-Za-z0-9._:-`: resending the same key and content returns the earlier result instead of running again |

## Example request

```bash
curl -X POST "https://api.tino.vn/service/100003/builder/login" \
  -H "Authorization: Bearer $TINO_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "target": "editor",
  "site_id": "5b1e2c3d-4f5a-4b6c-8d7e-9f0a1b2c3d4e"
}'
```

`$TINO_TOKEN` is the TinoPage Builder service owner's sign-in token. Path parameters in the example are sample values.

SDK ([SDK & examples](/en/docs/sdk)): no dedicated function yet, use `client.request("POST", "/service/@id/builder/login")`.

## Example response

```json
{
 "data": {
  "url": "https://builder.tino.vn/dang-nhap/ve/<ve>",
  "expires_at": "2026-10-26T03:32:00Z"
 }
}
```

Sample built from the TinoPage Builder API (Tino relays the answer as is inside `data`); values are examples.
