Skip to content

Response Schema

Each response has been mapped into a pydantic schema in a way that makes it easy to read and write codes that use them.

The classes identifying the response schema of an endpoint are the only ones ending with Response word, all other sub-schemes are used to identify the structures obtained from the responses.

Schema Enhancement

If some schema are incorrect or needs to be enhanced (optional/mandatory fields changes, incorrect datatype or schema update) feel free to open a pull request or issue by attaching:

- method
- endpoint call executed
- response obtained

cyhole.jupiter.schema

JupiterHTTPError

Bases: BaseModel

Jupiter API returns an error schema on failed request that can be used to investigated the error. This schema is used to strandardise the HTTPErrors.

code class-attribute instance-attribute

code: str = Field(
    validation_alias=AliasChoices("errorCode", "error_code")
)

msg class-attribute instance-attribute

msg: str = Field(alias='error')

GetPriceDepthValues

Bases: BaseModel

Depth values.

amount_10_sol class-attribute instance-attribute

amount_10_sol: float = Field(alias='10')

amount_100_sol class-attribute instance-attribute

amount_100_sol: float = Field(alias='100')

amount_1000_sol class-attribute instance-attribute

amount_1000_sol: float = Field(alias='1000')

GetPriceDepthRatio

Bases: BaseModel

Depth ratio information.

timestamp_unix class-attribute instance-attribute

timestamp_unix: int = Field(alias='timestamp')

depth instance-attribute

depth: GetPriceDepthValues

GetPriceDepth

Bases: BaseModel

Depth information.

buy_price_impact_ratio class-attribute instance-attribute

buy_price_impact_ratio: GetPriceDepthRatio | None = Field(
    default=None, alias="buyPriceImpactRatio"
)

sell_price_impact_ratio class-attribute instance-attribute

sell_price_impact_ratio: GetPriceDepthRatio | None = Field(
    default=None, alias="sellPriceImpactRatio"
)

GetPriceLastSwappedPrice

Bases: BaseModel

Last swapped price information.

last_jupiter_sell_at_unix class-attribute instance-attribute

last_jupiter_sell_at_unix: int = Field(
    alias="lastJupiterSellAt"
)

last_jupiter_sell_price class-attribute instance-attribute

last_jupiter_sell_price: str = Field(
    alias="lastJupiterSellPrice"
)

last_jupiter_buy_at_unix class-attribute instance-attribute

last_jupiter_buy_at_unix: int = Field(
    alias="lastJupiterBuyAt"
)

last_jupiter_buy_price class-attribute instance-attribute

last_jupiter_buy_price: str = Field(
    alias="lastJupiterBuyPrice"
)

GetPriceQuotedPrice

Bases: BaseModel

Last quoted price information.

buy_price class-attribute instance-attribute

buy_price: str = Field(alias='buyPrice')

buy_at_unix class-attribute instance-attribute

buy_at_unix: int = Field(alias='buyAt')

sell_price class-attribute instance-attribute

sell_price: str | None = Field(
    default=None, alias="sellPrice"
)

sell_at_unix class-attribute instance-attribute

sell_at_unix: int | None = Field(
    default=None, alias="sellAt"
)

GetPriceExtraInfo

Bases: BaseModel

Extra information about the price.

last_swapped_price class-attribute instance-attribute

last_swapped_price: GetPriceLastSwappedPrice | None = Field(
    default=None, alias="lastSwappedPrice"
)

quoted_price class-attribute instance-attribute

quoted_price: GetPriceQuotedPrice = Field(
    alias="quotedPrice"
)

confidence_level class-attribute instance-attribute

confidence_level: str = Field(alias='confidenceLevel')

depth instance-attribute

depth: GetPriceDepth

GetPriceData

Bases: BaseModel

id instance-attribute

id: str

Chain address of the token.

type instance-attribute

type: str

The type of the token.

price instance-attribute

price: str

The price of the token.

extra_info class-attribute instance-attribute

extra_info: None | GetPriceExtraInfo = Field(
    default=None, alias="extraInfo"
)

Extra information about the price. Only available if request param extra_info is set to True.

GetPriceResponse

Bases: BaseModel

Model used to represent the Price endpoint from Jupiter API.

data instance-attribute

data: dict[str, GetPriceData | None]

time_taken class-attribute instance-attribute

time_taken: float = Field(alias='timeTaken')

GetQuoteInput

Bases: BaseModel

Model used to identify the inputs params required by a GET Quote request.

input_token class-attribute instance-attribute

input_token: str = Field(serialization_alias='inputMint')

The address of the input token on the chain.

output_token class-attribute instance-attribute

output_token: str = Field(serialization_alias='outputMint')

The address of the output token on the chain.

amount instance-attribute

amount: int

The amount to swap, factoring in the token decimals. For example, if the token has 6 decimals, then 1.0 = 1_000_000.

slippage_base_points class-attribute instance-attribute

slippage_base_points: int = Field(
    default=50, serialization_alias="slippageBps"
)

Slippage tolerance in basis points. Observe that if the slippage exeeded this value, then the swap will fail.

swap_mode class-attribute instance-attribute

swap_mode: str = Field(
    default=JupiterSwapMode.EXACT_IN.value,
    serialization_alias="swapMode",
)

Define if the slippage is on the input or output token.

dexes class-attribute instance-attribute

dexes: list[str] | None = None

List of DEXes to include; by default, all the DEXes are included.
See JupiterSwapDex for all the supported DEXs

exclude_dexes class-attribute instance-attribute

exclude_dexes: list[str] | None = Field(
    default=None, serialization_alias="excludeDexes"
)

List of DEXes to exclude.
See JupiterSwapDex for all the supported DEXs

restrict_intermediate_tokens class-attribute instance-attribute

restrict_intermediate_tokens: bool | None = Field(
    default=None,
    serialization_alias="restrictIntermediateTokens",
)

Restrict to a top token set for stable liquidity. This will help to reduce exposure to potential high slippage routes.

only_direct_routes class-attribute instance-attribute

only_direct_routes: bool = Field(
    default=False, serialization_alias="onlyDirectRoutes"
)

Limit to single hop routes only.

as_legacy_transaction class-attribute instance-attribute

as_legacy_transaction: bool = Field(
    default=False, serialization_alias="asLegacyTransaction"
)

Use legacy transactions instead of versioned ones.

platform_fee_base_points class-attribute instance-attribute

platform_fee_base_points: int | None = Field(
    default=None, serialization_alias="platformFeeBps"
)

Fee to charge. The value is in percent and taken from output token.

max_accounts class-attribute instance-attribute

max_accounts: int | None = Field(
    default=None, serialization_alias="maxAccounts"
)

Max accounts to be used for the quote. Jupiter Frontend uses a maxAccounts of 64.

validator_dexes classmethod

validator_dexes(dexes: list[str]) -> list[str]
Source code in src/cyhole/jupiter/schema.py
128
129
130
131
132
133
@field_validator("dexes", "exclude_dexes")
@classmethod
def validator_dexes(cls, dexes: list[str]) -> list[str]:
    for dex in dexes:
        JupiterSwapDex.check(dex)
    return dexes

serialize_dexes classmethod

serialize_dexes(dexes: list[str] | None) -> str | None
Source code in src/cyhole/jupiter/schema.py
135
136
137
138
@field_serializer("dexes", "exclude_dexes")
@classmethod
def serialize_dexes(cls, dexes: list[str] | None) -> str | None:
    return ",".join(dexes) if dexes else None

validator_swap_mode classmethod

validator_swap_mode(mode: str) -> str
Source code in src/cyhole/jupiter/schema.py
140
141
142
143
144
@field_validator("swap_mode")
@classmethod
def validator_swap_mode(cls, mode: str) -> str:
    JupiterSwapMode.check(mode)
    return mode

serialize_flows classmethod

serialize_flows(value: bool | None) -> str | None
Source code in src/cyhole/jupiter/schema.py
146
147
148
149
150
151
@field_serializer("restrict_intermediate_tokens", "only_direct_routes", "as_legacy_transaction")
@classmethod
def serialize_flows(cls, value: bool | None) -> str | None:
    if value is not None:
        return "true" if value else "false"
    return

GetQuotePlatformFees

Bases: BaseModel

amount instance-attribute

amount: str

fee_base_points class-attribute instance-attribute

fee_base_points: str = Field(alias='feeBps')

GetQuoteSwapInfo

Bases: BaseModel

amm_key class-attribute instance-attribute

amm_key: str = Field(alias='ammKey')

amm_label class-attribute instance-attribute

amm_label: str | None = Field(default=None, alias='label')

input_token class-attribute instance-attribute

input_token: str = Field(alias='inputMint')

input_amount class-attribute instance-attribute

input_amount: str = Field(alias='inAmount')

output_token class-attribute instance-attribute

output_token: str = Field(alias='outputMint')

output_amount class-attribute instance-attribute

output_amount: str = Field(alias='outAmount')

fee_token class-attribute instance-attribute

fee_token: str = Field(alias='feeMint')

fee_amount class-attribute instance-attribute

fee_amount: str = Field(alias='feeAmount')

GetQuoteRoutePlan

Bases: BaseModel

swap_info class-attribute instance-attribute

swap_info: GetQuoteSwapInfo = Field(alias='swapInfo')

percent instance-attribute

percent: int

GetQuoteResponse

Bases: BaseModel

Model used to represent the Quote endpoint from Jupiter API.

input_token class-attribute instance-attribute

input_token: str = Field(alias='inputMint')

input_amount class-attribute instance-attribute

input_amount: str = Field(alias='inAmount')

output_token class-attribute instance-attribute

output_token: str = Field(alias='outputMint')

output_amount class-attribute instance-attribute

output_amount: str = Field(alias='outAmount')

other_amount_threshold class-attribute instance-attribute

other_amount_threshold: str = Field(
    alias="otherAmountThreshold"
)

swap_mode class-attribute instance-attribute

swap_mode: str = Field(alias='swapMode')

slippage_base_points class-attribute instance-attribute

slippage_base_points: int = Field(alias='slippageBps')

platform_fees class-attribute instance-attribute

platform_fees: GetQuotePlatformFees | None = Field(
    default=None, alias="platformFee"
)

price_impact_pct class-attribute instance-attribute

price_impact_pct: str = Field(alias='priceImpactPct')

route_plan class-attribute instance-attribute

route_plan: list[GetQuoteRoutePlan] = Field(
    alias="routePlan"
)

context_slot class-attribute instance-attribute

context_slot: int = Field(alias='contextSlot')

time_taken class-attribute instance-attribute

time_taken: float = Field(alias='timeTaken')

GetQuoteTokensResponse

Bases: BaseModel

Model used to represent the Quote/Token endpoint from Jupiter API.

tokens instance-attribute

tokens: list[str]

GetQuoteProgramIdLabelResponse

Bases: BaseModel

Model used to represent the Quote/Program ID to Label endpoint from Jupiter API.

dexes instance-attribute

dexes: dict[str, str]

PostSwapBody

Bases: BaseModel

Model used to identify the body required by a POST Swap request.

user_public_key class-attribute instance-attribute

user_public_key: str = Field(
    serialization_alias="userPublicKey"
)

wrap_unwrap_sol class-attribute instance-attribute

wrap_unwrap_sol: bool = Field(
    default=None, serialization_alias="wrapAndUnwrapSol"
)

use_shared_accounts class-attribute instance-attribute

use_shared_accounts: bool = Field(
    default=None, serialization_alias="useSharedAccounts"
)

fee_account class-attribute instance-attribute

fee_account: str = Field(
    default=None, serialization_alias="feeAccount"
)

tracking_account class-attribute instance-attribute

tracking_account: str = Field(
    default=None, serialization_alias="trackingAccount"
)

compute_unit_price_micro_lamports class-attribute instance-attribute

compute_unit_price_micro_lamports: int = Field(
    default=None,
    serialization_alias="computeUnitPriceMicroLamports",
)

prioritization_fee_lamports class-attribute instance-attribute

prioritization_fee_lamports: int = Field(
    default=None,
    serialization_alias="prioritizationFeeLamports",
)

as_legacy_transaction class-attribute instance-attribute

as_legacy_transaction: bool = Field(
    default=None, serialization_alias="asLegacyTransaction"
)

use_token_ledger class-attribute instance-attribute

use_token_ledger: bool = Field(
    default=None, serialization_alias="useTokenLedger"
)

destination_token_account class-attribute instance-attribute

destination_token_account: str = Field(
    default=None,
    serialization_alias="destinationTokenAccount",
)

dynamic_compute_unit_limit class-attribute instance-attribute

dynamic_compute_unit_limit: bool = Field(
    default=None,
    serialization_alias="dynamicComputeUnitLimit",
)

skip_user_accounts_rpc_calls class-attribute instance-attribute

skip_user_accounts_rpc_calls: bool = Field(
    default=None,
    serialization_alias="skipUserAccountsRpcCalls",
)

quote_response class-attribute instance-attribute

quote_response: GetQuoteResponse = Field(
    serialization_alias="quoteResponse"
)

PostSwapResponse

Bases: BaseModel

swap_transaction class-attribute instance-attribute

swap_transaction: str = Field(alias='swapTransaction')

last_valid_block_height class-attribute instance-attribute

last_valid_block_height: int = Field(
    alias="lastValidBlockHeight"
)

prioritization_fee_lamports class-attribute instance-attribute

prioritization_fee_lamports: int = Field(
    default=0, alias="prioritizationFeeLamports"
)

GetTokenInfoResponse

Bases: BaseModel

Model used to represent the Token endpoint from Jupiter API focused on retrieving information about a token.

name instance-attribute

name: str

address instance-attribute

address: str

symbol instance-attribute

symbol: str

decimals instance-attribute

decimals: int

created_at instance-attribute

created_at: str

logoURI class-attribute instance-attribute

logoURI: str | None = None

tags class-attribute instance-attribute

tags: list[str] | None = None

daily_volume class-attribute instance-attribute

daily_volume: float | None = None

freeze_authority class-attribute instance-attribute

freeze_authority: str | None = None

mint_authority class-attribute instance-attribute

mint_authority: str | None = None

minted_at class-attribute instance-attribute

minted_at: str | None = None

permanent_delegate class-attribute instance-attribute

permanent_delegate: str | None = None

extensions class-attribute instance-attribute

extensions: dict[str, str] | None = None

GetTokenMarketMintsResponse

Bases: BaseModel

Model used to represent the Token Market Mints endpoint from Jupiter API.

mints instance-attribute

mints: list[str]

GetTokenTaggedToken

GetTokenTaggedResponse

Bases: BaseModel

Model used to represent the Token Tagged endpoint from Jupiter API.

tokens instance-attribute

tokens: list[GetTokenTaggedToken]

GetTokenNewToken

Bases: BaseModel

Model used to represent a token information on the Token New endpoint.

mint instance-attribute

mint: str

name instance-attribute

name: str

symbol instance-attribute

symbol: str

decimals instance-attribute

decimals: int

created_at instance-attribute

created_at: str

known_markets instance-attribute

known_markets: list[str]

metadata_updated_at instance-attribute

metadata_updated_at: int

logo_uri class-attribute instance-attribute

logo_uri: str | None = None

mint_authority class-attribute instance-attribute

mint_authority: str | None = None

freeze_authority class-attribute instance-attribute

freeze_authority: str | None = None

GetTokenNewResponse

Bases: BaseModel

Model used to represent the Token New endpoint from Jupiter API.

tokens instance-attribute

tokens: list[GetTokenNewToken]

PostLimitOrderCreateBody

Bases: BaseModel

Model used to identify the body required by a POST Limit Order Create request.

user_public_key class-attribute instance-attribute

user_public_key: str = Field(serialization_alias='owner')

Public Key of the Owner wallet

input_token class-attribute instance-attribute

input_token: str = Field(serialization_alias='inputMint')

The address of the input token on the chain used to buy.

input_amount class-attribute instance-attribute

input_amount: int = Field(serialization_alias='inAmount')

The amount of input token to use for the limit order.

output_token class-attribute instance-attribute

output_token: str = Field(serialization_alias='outputMint')

The address of the output token on the chain that will bought.

output_amount class-attribute instance-attribute

output_amount: int = Field(serialization_alias='outAmount')

The amount of output token to buy in the limit order.

base instance-attribute

base: str

Public Key used to initiate the Limit Order

expired_at_unix_time class-attribute instance-attribute

expired_at_unix_time: int | None = Field(
    default=None, serialization_alias="expiredAt"
)

Expiring date for the Limit Order expressed in UNIX time

referral_public_key class-attribute instance-attribute

referral_public_key: str | None = Field(
    default=None, serialization_alias="referralAccount"
)

The address of the account used to get referral fees.

referral_name class-attribute instance-attribute

referral_name: str | None = Field(
    default=None, serialization_alias="referralName"
)

PostLimitOrderCreateResponse

Bases: BaseModel

Model used to represent the Limit Order Create endpoint from Jupiter API.

transaction class-attribute instance-attribute

transaction: str = Field(alias='tx')

order_public_key class-attribute instance-attribute

order_public_key: str = Field(alias='orderPubkey')

PostLimitOrderCancelBody

Bases: BaseModel

Model used to identify the body required by a POST Limit Order Cancel request.

user_public_key class-attribute instance-attribute

user_public_key: str = Field(serialization_alias='owner')

Public Key of the Owner wallet

fee_payer_public_key class-attribute instance-attribute

fee_payer_public_key: str = Field(
    serialization_alias="feePayer"
)

Public Key of the fee payer.

orders instance-attribute

orders: list[str]

List of orders Public Keys to cancel.

PostLimitOrderCancelResponse

Bases: BaseModel

Model used to represent the Limit Order Cancel endpoint from Jupiter API.

transaction class-attribute instance-attribute

transaction: str = Field(alias='tx')

GetLimitOrderOpenAccount

Bases: BaseModel

maker instance-attribute

maker: str

input_token class-attribute instance-attribute

input_token: str = Field(alias='inputMint')

input_amount class-attribute instance-attribute

input_amount: str = Field(alias='inAmount')

output_token class-attribute instance-attribute

output_token: str = Field(alias='outputMint')

output_amount class-attribute instance-attribute

output_amount: str = Field(alias='outAmount')

ori_input_token class-attribute instance-attribute

ori_input_token: str = Field(alias='oriInAmount')

ori_output_amount class-attribute instance-attribute

ori_output_amount: str = Field(alias='oriOutAmount')

expired_at_unix_time class-attribute instance-attribute

expired_at_unix_time: int | None = Field(
    default=None, alias="expiredAt"
)

base instance-attribute

base: str

GetLimitOrderOpen

Bases: BaseModel

public_key class-attribute instance-attribute

public_key: str = Field(alias='publicKey')

account instance-attribute

account: GetLimitOrderOpenAccount

GetLimitOrderOpenResponse

Bases: BaseModel

Model used to represent the Limit Order Opens endpoint from Jupiter API.

orders instance-attribute

orders: list[GetLimitOrderOpen]

GetLimitOrderHistory

Bases: BaseModel

id instance-attribute

id: int

maker instance-attribute

maker: str

order_key class-attribute instance-attribute

order_key: str = Field(alias='orderKey')

input_token class-attribute instance-attribute

input_token: str = Field(alias='inputMint')

input_amount class-attribute instance-attribute

input_amount: str = Field(alias='inAmount')

output_token class-attribute instance-attribute

output_token: str = Field(alias='outputMint')

output_amount class-attribute instance-attribute

output_amount: str = Field(alias='outAmount')

ori_input_token class-attribute instance-attribute

ori_input_token: str = Field(alias='oriInAmount')

ori_output_amount class-attribute instance-attribute

ori_output_amount: str = Field(alias='oriOutAmount')

expired_at_unix_time class-attribute instance-attribute

expired_at_unix_time: int | None = Field(
    default=None, alias="expiredAt"
)

state instance-attribute

state: str

create_transaction_id class-attribute instance-attribute

create_transaction_id: str = Field(alias='createTxid')

cancel_transaction_id class-attribute instance-attribute

cancel_transaction_id: str | None = Field(
    default=None, alias="cancelTxid"
)

updated_at class-attribute instance-attribute

updated_at: datetime = Field(alias='updatedAt')

created_at class-attribute instance-attribute

created_at: datetime = Field(alias='createdAt')

parse_datetime

parse_datetime(datetime_raw: str | datetime) -> datetime
Source code in src/cyhole/jupiter/schema.py
388
389
390
391
392
@field_validator("created_at", "updated_at")
def parse_datetime(cls, datetime_raw: str | datetime) -> datetime:
    if isinstance(datetime_raw, str):
        return datetime.strptime(datetime_raw, "%Y-%m-%dT%H:%M:%S")
    return datetime_raw

validator_state classmethod

validator_state(state: str) -> str
Source code in src/cyhole/jupiter/schema.py
394
395
396
397
398
@field_validator("state")
@classmethod
def validator_state(cls, state: str) -> str:
    JupiterLimitOrderState.check(state)
    return state

GetLimitOrderHistoryResponse

Bases: BaseModel

Model used to represent the Limit Order History endpoint from Jupiter API.

orders instance-attribute

orders: list[GetLimitOrderHistory]

GetLimitOrderTradeHistoryOrder

Bases: BaseModel

id instance-attribute

id: int

order_key class-attribute instance-attribute

order_key: str = Field(alias='orderKey')

input_token class-attribute instance-attribute

input_token: str = Field(alias='inputMint')

output_token class-attribute instance-attribute

output_token: str = Field(alias='outputMint')

GetLimitOrderTradeHistory

Bases: BaseModel

id instance-attribute

id: int

input_amount class-attribute instance-attribute

input_amount: str = Field(alias='inAmount')

output_amount class-attribute instance-attribute

output_amount: str = Field(alias='outAmount')

transaction_id class-attribute instance-attribute

transaction_id: str = Field(alias='txid')

updated_at class-attribute instance-attribute

updated_at: datetime = Field(alias='updatedAt')

created_at class-attribute instance-attribute

created_at: datetime = Field(alias='createdAt')

order instance-attribute

order: GetLimitOrderTradeHistoryOrder

parse_datetime

parse_datetime(datetime_raw: str | datetime) -> datetime
Source code in src/cyhole/jupiter/schema.py
422
423
424
425
426
@field_validator("created_at", "updated_at")
def parse_datetime(cls, datetime_raw: str | datetime) -> datetime:
    if isinstance(datetime_raw, str):
        return datetime.strptime(datetime_raw, "%Y-%m-%dT%H:%M:%S")
    return datetime_raw

GetLimitOrderTradeHistoryResponse

Bases: BaseModel

Model used to represent the Limit Order Trade History endpoint from Jupiter API.

orders instance-attribute

orders: list[GetLimitOrderTradeHistory]