> ## Documentation Index
> Fetch the complete documentation index at: https://crossmint-wallets-docs-2-5.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# REST API

> Create user wallets from your backend in under 5 minutes

<CardGroup cols={2}>
  <Snippet file="before-you-start.mdx" />
</CardGroup>

<Steps>
  <Step title="Create a wallet">
    <CodeGroup>
      ```bash curl theme={null}
      curl --request POST \
          --url https://staging.crossmint.com/api/2022-06-09/wallets \
          --header 'Content-Type: application/json' \
          --header 'X-API-KEY: <x-api-key>' \
          --data '{
              "type": "evm-smart-wallet",
              "config": {
                  "adminSigner": {
                  "type": "evm-keypair",
                  "address": "0x1234567890123456789012345678901234567890"
                  }
              },
              "linkedUser": "email:user@example.com"
          }'
      ```

      ```tsx node.js theme={null}
      const options = {
          method: 'POST',
          headers: {'X-API-KEY': '<x-api-key>', 'Content-Type': 'application/json'},
          body: '{"type":"evm-smart-wallet","config":{"adminSigner":{"type":"evm-keypair","address":"0x1234567890123456789012345678901234567890"}},"linkedUser":"email:user@example.com"}'
      };

      fetch('https://staging.crossmint.com/api/2022-06-09/wallets', options)
      .then(response => response.json())
      .then(response => console.log(response))
      .catch(err => console.error(err));
      ```

      ```python python theme={null}
      import requests

      url = "https://staging.crossmint.com/api/2022-06-09/wallets"

      payload = {
          "type": "evm-smart-wallet",
          "config": {"adminSigner": {
                  "type": "evm-keypair",
                  "address": "0x1234567890123456789012345678901234567890"
              }},
          "linkedUser": "email:user@example.com"
      }
      headers = {
          "X-API-KEY": "<x-api-key>",
          "Content-Type": "application/json"
      }

      response = requests.request("POST", url, json=payload, headers=headers)

      print(response.text)
      ```
    </CodeGroup>
  </Step>
</Steps>

## Launching in Production

For production, the steps are almost identical, but some changes are required:

1. Create a developer account on the [production console](https://www.crossmint.com/console)
2. Create a production client API key on the [API Keys](https://www.crossmint.com/console/projects/apiKeys) page with the API scopes `users.create`, `users.read`, `wallets.read`, `wallets.create`, `wallets:transactions.create`, `wallets:transactions.sign`, `wallets:balance.read`, `wallets.fund`
3. Replace your test API key with the production key

## Learn More

<CardGroup cols={3}>
  <Card title="Check Balances" icon="money-bill-transfer" iconType="duotone" href="/wallets/wallet-actions/check-balances">
    Check the balance of a wallet.
  </Card>

  <Card title="Transfer Tokens" icon="coins" iconType="duotone" color="#1A5785" href="/wallets/wallet-actions/transfer-tokens">
    Send tokens between wallets.
  </Card>

  <Card title="Delegated Signers" icon="key" iconType="duotone" color="#2156B9" href="/wallets/wallet-actions/delegated-signers">
    Add delegated signers to a wallet.
  </Card>
</CardGroup>

## Other Links

<CardGroup cols={2}>
  <Card title="API Reference" icon="terminal" color="#B56710" href="/api-reference/wallets/create-wallet">
    Deep dive into API reference docs.
  </Card>

  <Card title="Talk to an expert" icon="message" iconType="duotone" color="#ADD8E6" href="https://www.crossmint.com/contact/sales">
    Contact our sales team for support.
  </Card>
</CardGroup>
