# Save a waiting domain's registrant

`PUT /v1/domains/@id/registrant` · scope `domains:registrant`

JSON body `{"registrant": {…}, "owner": {…} | null}` or `{"from_domain_id": N}` (the registrant of running domain N, from GET /v1/registrants). After saving, Tino tries to register right away and returns the new dossier. Requires the `domains:registrant` scope: only personal API tokens with an IP restriction. Required fields: [Domain registrant dossier](/en/docs/domain-registrant#saving-the-registrant).

## HTTP request

| Item | Value |
| --- | --- |
| URL | `https://api.tino.vn/v1/domains/@id/registrant` |
| Method | `PUT` |
| Scope | `domains:registrant` |
| Header | `Authorization: Bearer <token>` |
| Content-Type | — (no body) |
| Tokens that can call it | personal API tokens (`tinopat_`) with an IP allow-list only |

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | int | yes | Domain ID |

## Example request

```bash
curl -X PUT "https://api.tino.vn/v1/domains/200001/registrant" \
  -H "Authorization: Bearer $TINO_TOKEN"
```

`$TINO_TOKEN` is a token with the scope `domains:registrant`. Path parameters in the example are sample values.

SDK ([SDK & examples](/en/docs/sdk)): no dedicated function yet, use `client.request("PUT", "/domains/@id/registrant")`.

## Example response

No live sample: the route changes real data or the test account has no data for it. The answer is a JSON object; errors follow the common shape in [Calling the Tino API](/en/docs/api#errors).
