---
title: "Provision a Solana token account"
method: POST
path: "/account/{address}/token-accounts"
tags: ["Accounts"]
---

# Provision a Solana token account

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

## Request

- Base URL: `https://v1.orchestrator.rhinestone.dev/deposit-processor`
- URL: `https://v1.orchestrator.rhinestone.dev/deposit-processor/account/{address}/token-accounts`
- Auth: one of:
  - API key in header `x-api-key`
  - HTTP bearer
- TypeScript: <https://skmtc.dev/rhinestonewtf/apis/deposit-service-api/docs/account/:address/token-accounts/post.ts> (a function with typed inputs; its response is checked against the schema)

Creates a token account for a registered account’s Solana deposit address, or returns the existing one.

## Path parameters

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

## Query parameters

- `chain` 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp' | 'solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1': Solana source network; defaults to mainnet when omitted

## Headers

- `x-api-key` string: 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`: Organization 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
- `503`: Tenant billing verification is temporarily unavailable; retry after 5 seconds.

## Changes

- **2026-11-06** `aa1767d704fa`: 4 info
  - the endpoint scheme security `internalProjectBearer` was added to the API
  - the endpoint scheme security `tenantApiKey` was added to the API
  - the `header` request parameter `x-api-key` became optional
  - added the non-success response with the status `503`
- **2026-09-30** `a6fd693c3d5f`: 1 info
  - added the new optional `query` request parameter `chain`
- **2026-09-17** `676300ac19ff`: 5 info
  - added the optional property `code` to the response with the `400` status
  - added the optional property `code` to the response with the `401` status
  - added the optional property `code` to the response with the `403` status
  - added the optional property `code` to the response with the `404` status
  - …1 more
- **2026-05-28** `26fe44507260`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/rhinestonewtf/apis/deposit-service-api/changes/account/:address/token-accounts/post.md)

---

[API](https://skmtc.dev/rhinestonewtf/apis/deposit-service-api.md) - [All operations](https://skmtc.dev/rhinestonewtf/apis/deposit-service-api/llms.txt) - [OpenAPI document](https://skmtc.dev/rhinestonewtf/apis/deposit-service-api/revisions/aa1767d704fa?raw)
