cURL
curl --request POST \
--url https://api.yoshi.ai/v1/paper-trading/accounts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"starting_cash_balance": "100000",
"name": "<string>",
"skip_approval": false
}
'import os
from yoshi_sdk import Yoshi
client = Yoshi(
api_key=os.environ.get("YOSHI_API_KEY"), # This is the default and can be omitted
)
account = client.paper_trading.accounts.create()
print(account.data)import Yoshi from '@yoshi-ai/sdk';
const client = new Yoshi({
apiKey: process.env['YOSHI_API_KEY'], // This is the default and can be omitted
});
const account = await client.paperTrading.accounts.create();
console.log(account.data);package main
import (
"context"
"fmt"
"github.com/yoshi-ai-dev/yoshi-go"
"github.com/yoshi-ai-dev/yoshi-go/option"
)
func main() {
client := yoshi.NewClient(
option.WithAPIKey("My API Key"),
)
account, err := client.PaperTrading.Accounts.New(context.TODO(), yoshi.PaperTradingAccountNewParams{})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", account.Data)
}
yoshi paper-trading:accounts create \
--api-key 'My API Key'{
"data": {
"action_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"action_type": "<string>",
"action_kind": "trade",
"status": "<string>",
"thread_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"approval_url": "<string>",
"approval_status_url": "<string>",
"description": "<string>",
"display_error_message": "<string>",
"created_at": "<string>",
"updated_at": "<string>",
"decided_at": "<string>",
"executed_at": "<string>",
"expires_at": "<string>",
"decision_needs": {
"approval": true,
"passkey": true,
"identity_verification": true,
"client_execution": true
},
"details_v1": {
"kind": "paper_trade",
"account": {
"id": "<string>",
"source": "paper",
"source_label": "<string>",
"display_name": "<string>",
"subtitle": "<string>",
"institution_name": "<string>",
"icon_url": "<string>",
"available_amount_display": "<string>",
"available_amount_label": "<string>",
"available_amount_state": "available"
},
"symbol": "<string>",
"security_name": "<string>",
"side": "buy",
"side_label": "<string>",
"input_mode": "shares",
"quantity": "<string>",
"quantity_display": "<string>",
"amount_label": "<string>",
"current_price_display": "<string>",
"price_change_display": "<string>",
"price_change_direction": "positive",
"quote_as_of": "2023-11-07T05:31:56Z",
"quote_as_of_label": "<string>",
"estimated_cost_display": "<string>",
"order_type_display": "<string>",
"proposed_by_label": "<string>",
"top_markdown": "<string>",
"bottom_markdown": "<string>",
"reason_markdown": "<string>",
"timing_disclosure": "<string>",
"money_movement_disclosure": "<string>",
"primary_action_label": "<string>",
"secondary_action_label": "<string>"
}
},
"meta": {
"request_id": "req_a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"timestamp": "2026-04-10T12:00:00.000Z"
}
}Paper Trading
Create Test Drive account
Create a Test Drive account. Requires user approval in the Yoshi web app before the account is created.
POST
/
paper-trading
/
accounts
cURL
curl --request POST \
--url https://api.yoshi.ai/v1/paper-trading/accounts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"starting_cash_balance": "100000",
"name": "<string>",
"skip_approval": false
}
'import os
from yoshi_sdk import Yoshi
client = Yoshi(
api_key=os.environ.get("YOSHI_API_KEY"), # This is the default and can be omitted
)
account = client.paper_trading.accounts.create()
print(account.data)import Yoshi from '@yoshi-ai/sdk';
const client = new Yoshi({
apiKey: process.env['YOSHI_API_KEY'], // This is the default and can be omitted
});
const account = await client.paperTrading.accounts.create();
console.log(account.data);package main
import (
"context"
"fmt"
"github.com/yoshi-ai-dev/yoshi-go"
"github.com/yoshi-ai-dev/yoshi-go/option"
)
func main() {
client := yoshi.NewClient(
option.WithAPIKey("My API Key"),
)
account, err := client.PaperTrading.Accounts.New(context.TODO(), yoshi.PaperTradingAccountNewParams{})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", account.Data)
}
yoshi paper-trading:accounts create \
--api-key 'My API Key'{
"data": {
"action_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"action_type": "<string>",
"action_kind": "trade",
"status": "<string>",
"thread_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"approval_url": "<string>",
"approval_status_url": "<string>",
"description": "<string>",
"display_error_message": "<string>",
"created_at": "<string>",
"updated_at": "<string>",
"decided_at": "<string>",
"executed_at": "<string>",
"expires_at": "<string>",
"decision_needs": {
"approval": true,
"passkey": true,
"identity_verification": true,
"client_execution": true
},
"details_v1": {
"kind": "paper_trade",
"account": {
"id": "<string>",
"source": "paper",
"source_label": "<string>",
"display_name": "<string>",
"subtitle": "<string>",
"institution_name": "<string>",
"icon_url": "<string>",
"available_amount_display": "<string>",
"available_amount_label": "<string>",
"available_amount_state": "available"
},
"symbol": "<string>",
"security_name": "<string>",
"side": "buy",
"side_label": "<string>",
"input_mode": "shares",
"quantity": "<string>",
"quantity_display": "<string>",
"amount_label": "<string>",
"current_price_display": "<string>",
"price_change_display": "<string>",
"price_change_direction": "positive",
"quote_as_of": "2023-11-07T05:31:56Z",
"quote_as_of_label": "<string>",
"estimated_cost_display": "<string>",
"order_type_display": "<string>",
"proposed_by_label": "<string>",
"top_markdown": "<string>",
"bottom_markdown": "<string>",
"reason_markdown": "<string>",
"timing_disclosure": "<string>",
"money_movement_disclosure": "<string>",
"primary_action_label": "<string>",
"secondary_action_label": "<string>"
}
},
"meta": {
"request_id": "req_a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"timestamp": "2026-04-10T12:00:00.000Z"
}
}Authorizations
A Yoshi API key from Settings → API Keys, or a Yoshi OAuth access token issued by Sign in with Yoshi.
Body
application/json
Response
Approval request created. User must approve in the Yoshi web app.
Hide child attributes
Hide child attributes
Available options:
trade, transfer, data_fix, automation, account_create, unknown - Option 1
- Option 2
- Option 3
Hide child attributes
Hide child attributes
Available options:
paper_trade Hide child attributes
Hide child attributes
Available options:
paper, apex Available options:
available, unavailable Available options:
buy, sell Available options:
shares, dollars Available options:
positive, negative, neutral, null Last modified on June 18, 2026
Was this page helpful?