# signup

The signup() method for the SurrealDB Mojo SDK signs up to a record-access method.

Creates a new record-access account from CBOR-encoded credentials and signs in.

```python title="Method Syntax"
client.signup(credentials_cbor, session)
```

## Arguments

<table>
    <thead>
        <tr>
            <th colspan="2" scope="col">Argument</th>
            <th colspan="2" scope="col">Description</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td colspan="2" scope="row" data-label="Argument"><code>credentials_cbor</code></td>
            <td colspan="2" scope="row" data-label="Description">The signup payload, CBOR-encoded as a map, as a <code>List[UInt8]</code>. It names the access method along with the namespace, database, and any variables it expects.</td>
        </tr>
        <tr>
            <td colspan="2" scope="row" data-label="Argument"><code>session</code></td>
            <td colspan="2" scope="row" data-label="Description">An optional session id.</td>
        </tr>
    </tbody>
</table>

## Example usage

```python
from surrealdb import CborCodec
from std.collections import List

var codec = CborCodec()
var pairs = List[Tuple[String, List[UInt8]]]()
pairs.append(Tuple(String("namespace"), codec.encode_text("test")))
pairs.append(Tuple(String("database"), codec.encode_text("test")))
pairs.append(Tuple(String("access"), codec.encode_text("user")))
pairs.append(Tuple(String("email"), codec.encode_text("chiru@example.com")))
pairs.append(Tuple(String("pass"), codec.encode_text("changeme")))

var resp = client.signup(codec.encode_map(pairs))
```

> [!NOTE]
> `signup` operates on a stateful session, which is provided by the WebSocket transport. WebSocket support is rolling out.

## See also

- [Authentication](/docs/reference/mojo/concepts/authentication.md)
- [`signin()`](/docs/reference/mojo/methods/signin.md)
