> For the complete documentation index, see [llms.txt](https://k4k3ru.gitbook.io/k4k3ru-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://k4k3ru.gitbook.io/k4k3ru-docs/api/market-hub/get-carry-snapshot.md).

# Get a Fixed Funding Carry Route

`MarketHub.Carry.Get` evaluates one directed route over HTTPS JSON-RPC. It is free of ticks charges and accepts optional signed authentication. Anonymous requests use the IP/method quota; verified requests use the account/method quota. Use [Search](/k4k3ru-docs/api/market-hub/search-carry-routes.md) to discover routes and copy an eligible route's `route` selector into this request.

```json
{
  "id": "carry-get-1",
  "method": "MarketHub.Carry.Get",
  "params": {
    "symbol": "BTC/USDC",
    "baseAsset": "BTC",
    "quantity": "0.1",
    "holdingPeriodMinutes": 1440,
    "route": {
      "buy": {"venue": "binance", "marketType": "perp"},
      "sell": {"venue": "hyperliquid", "marketType": "perp"}
    }
  }
}
```

The required holding period is 1–43,200 minutes. `assetClass` defaults to `crypto`. Quantity is a positive base-unit decimal string. Symbol and base asset must match exactly after normalization. Each route leg requires `venue` and `marketType`. AMM Spot selectors additionally require `chain` and `poolId`; `network` defaults to `mainnet`, the only supported network. Pool IDs retain case. A requested pool is never silently replaced by another pool; if the aggregated source cannot price that pool, its price is unavailable.

Supported directions are `spot-perp`, `perp-spot`, and `perp-perp`. Identical buy/sell markets and `spot-spot` are rejected. Search filters, including `minimumEstimatedFundingBps`, and unknown fields are rejected.

Entry prices use the same [quantity-aware AMM and depth pricing as Search](/k4k3ru-docs/api/market-hub/search-carry-routes.md#calculation-and-eligibility). Private quotes do not update the public BBO or OrderBook.

## Result and availability

The result describes this route even when data is missing or estimated Funding is negative. It does not return a candidate array.

| Field                             | Meaning                                                                                     |
| --------------------------------- | ------------------------------------------------------------------------------------------- |
| `ac`, `s`, `ba`, `qa`, `q`, `hpm` | Normalized asset class, symbol, base/quote assets, quantity and evaluation period.          |
| `route`                           | Fixed buy/sell selectors, retained when data is unavailable.                                |
| `routeId`                         | Directed market-pair identity; independent of quantity and holding period.                  |
| `evaluationKey`                   | Route, quantity and holding-period identity used for subscription routing.                  |
| `evaluationId`                    | Identifier of this evaluation; not an ordered sequence number.                              |
| `status`                          | `available`, `partial`, or `unavailable`.                                                   |
| `buy`, `sell`                     | Quantity-aware priced legs; absent when unavailable. Leg keys follow Search.                |
| `buyFunding`, `sellFunding`       | Available Perp observations with signed estimated amounts. Spot has no Funding observation. |
| `entrySpread`                     | Entry price difference; absent unless both prices are available.                            |
| `fundingEstimate`                 | Funding amount when all required Funding inputs are available.                              |
| `assessment`                      | Execution, trading fees, exit cost and Spot-short borrowing evaluation state.               |
| `availability`                    | Individual metric states and freshness.                                                     |
| `ts`                              | Evaluation time, Unix microseconds.                                                         |

`availability` contains `buyPrice`, `sellPrice`, `buyFunding`, `sellFunding`, `fundingAmount`, `fundingBps`, and `entrySpread`. Each has `status`; available inputs include `observedAt` and `validUntil` as Unix microseconds. Spot Funding has `status: "not_applicable"` and contributes zero. Unavailable inputs include a `reason`, such as `market_unavailable`, `price_missing`, `price_stale`, `pool_unavailable`, `insufficient_depth`, `funding_missing`, `funding_stale`, `funding_invalid`, `funding_timestamp_invalid`, or `mark_price_missing`.

Price and Funding availability are independent. With stale prices but fresh Funding, `fundingEstimate.amount` remains available. Its `bps`, `annualizedRate`, and `referenceNotional` are omitted when the buy entry notional is unavailable. With missing Funding but fresh prices, `entrySpread` remains available. Consumers must inspect the individual metric state; `partial` is not a close instruction. Missing values are never represented as zero.

The [Search calculation and freshness rules](/k4k3ru-docs/api/market-hub/search-carry-routes.md) also apply here. Bps use the current hypothetical buy entry notional, not a position's entry cost or margin. This is not a position P\&L or liquidation calculation. `perp-spot` assumes Spot shorting; borrowing availability and cost remain `not_evaluated` on this route.

Invalid requests return `invalid_parameter`. Missing market data produces an `unavailable`/`partial` result instead of `not_found`.

A successful `status: "available"` means the required market-data inputs can be evaluated; execution feasibility remains `not_evaluated` in `assessment.executionFeasibility`. Use the same `params` with signed Subscribe to monitor this route continuously, including when its estimated Funding drops below an entry threshold.

## Migration

This is a breaking change from candidate-based Carry Get. Move old Get requests to `MarketHub.Carry.Search` with `carry.SearchParams` / `carry.SearchResult`. Get now uses fixed `carry.Params` / `carry.Result`. Service and SDK must be released together before this contract can be used in production.

## Optional authentication and rate limits

Without `auth`, Gateway permits 3 requests per rolling 60 seconds per IP and method. With a valid signed `auth`, it permits 60 requests per rolling 60 seconds per authenticated account and method. Search and Get have separate quotas; API keys and IPs belonging to the same account share the authenticated quota. Both modes cost zero ticks and require no positive ticks balance. Invalid supplied authentication is rejected rather than falling back to the anonymous quota.

Use the normal API-key signature over the actual method, params, current timestamp and a unique nonce on each request. Merely attaching an API key does not enable the account quota. An exhausted quota returns HTTP 429, JSON-RPC `rate_limit_error` and `Retry-After: 60`. These counters are currently local to each Gateway process; restarts reset them and multiple Gateway instances do not share a global counter.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://k4k3ru.gitbook.io/k4k3ru-docs/api/market-hub/get-carry-snapshot.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
