---
title: "Create a Solana token account (ATA) for an account"
method: POST
path: "/account/{address}/token-accounts"
tags: ["Accounts"]
---

# Create a Solana token account (ATA) for an account

`POST /account/{address}/token-accounts`

Create the Solana Associated Token Account (ATA) for a registered account's Solana deposit address and an SPL mint, so transfers from senders that omit a create-ATA instruction (some CEXes) do not bounce on-chain. Allowlisted clients only. Idempotent: returns the existing ATA with created=false if it already exists. Rejects native/wrapped SOL (no ATA needed).

## Path parameters

- `address` string, required — Ethereum address (0x followed by 40 hex characters)

## Headers

- `x-api-key` string, required — API key for authentication
- `x-api-version` string — API version identifier (e.g. "2026-04.amazon"). Optional today, will become required in a future release.

## Request body

- TokenAccountRequestBody
  - `mint` string, required — Base58-encoded SPL token mint to create the Associated Token Account for

## Response `200`

Token account exists (created now or previously)

- TokenAccountResponse
  - `ataAddress` string, required
  - `created` boolean, required
  - `txSignature` string

## Other responses

- `400` — Invalid mint (bad base58, unsupported token, or SOL/WSOL)
- `401` — Missing or invalid API key
- `403` — Project not in the allowlist, lacks deposits:write scope, or the account is owned by a different project
- `404` — No Solana account registered for this address
- `502` — Solana RPC or transaction submission failure

---

[API](https://skmtc.net/rhinestonewtf/apis/deposit-service-api.md) · [All operations](https://skmtc.net/rhinestonewtf/apis/deposit-service-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/rhinestonewtf/deposit-service-api/revisions/ce4e0abfe33a/schema)
