# Deploy actions | API reference | Femtos

> Every HyperCore deploy action, newest first: HIP-3 dexs and their markets, spot deploys, outcomes, validator votes, each as the node wrote it. GET /v1/hypercore/deploys on HyperCore: parameters, response fields and a live call per layer.

- Base URL: `https://api.femtos.xyz/v1` (REST) · `wss://api.femtos.xyz/v1/ws` (WebSocket) · MCP: `https://api.femtos.xyz/mcp`
- Auth: `Authorization: Bearer $FEMTOS_KEY`. Free key: https://dashboard.femtos.xyz/signup (browser), or with
  no browser: `GET https://femtos.xyz/accounts/agent/challenge`, solve its proof of work, then `POST https://femtos.xyz/accounts/agent/signup`
  (https://femtos.xyz/agents.md#agent-onboarding)
- Decimals are exact strings, times Unix milliseconds, addresses lowercase `0x`
- Whole API in one file: https://femtos.xyz/agents.md · OpenAPI: https://api.femtos.xyz/v1/openapi.json · Index: https://femtos.xyz/llms.txt
- Page with live calls: https://femtos.xyz/reference/deploys

## Deploy actions — GET `/v1/hypercore/deploys`

Every HyperCore deploy action, newest first: HIP-3 dexs and their markets, spot deploys, outcomes, validator votes, each as the node wrote it.

Layers: HyperCore. Not on Elysium or HyperEVM: served on HyperCore only.
Page with live calls: https://femtos.xyz/reference/deploys?layer=hypercore

| Param | In | Example or values | Meaning |
|---|---|---|---|
| `kind` | query | `(empty)`, `perpDeploy`, `spotDeploy`, `outcomeDeploy`, `activateOutcomeDeployer`, `VoteGlobalAction` | One kind; every one when absent |
| `variant` | query | (optional) | One variant, as written: the action's key (registerAsset2, haltTrading, setFundingInterestRates, J…), an outcome operation (settleOutcome…); several keys: sorted, joined by commas |
| `dex` | query | (optional) | One perp dex or outcome venue |
| `coin` | query | (optional) | One coin (BTC, xyz:TSLA) |
| `user` | query | (optional) | Only this account |
| `status` | query | `(empty)`, `ok`, `err` | ok or err; both when absent |
| `notable` | query | `(empty)`, `true` | true: the notable actions only, the routine ones left out: `perpDeploy` `setFundingInterestRates` (each HIP-3 dex's funding interest rates), `outcomeDeploy` `registerStandaloneOutcomeFromTemplate` (every outcome registered from a template), `outcomeDeploy` `settleOutcome` (every outcome settlement, on any venue), `VoteGlobalAction` `LL` holding `registerTokensAndQuestion` (the validators' vote registering a question), `VoteGlobalAction` `LL` holding `registerTokensAndStandaloneOutcome` (the validators' vote registering an outcome), `VoteGlobalAction` `LL` holding `settleOutcome` (the validators' vote settling an outcome), `VoteGlobalAction` `LL` holding `settleQuestion2` (the validators' vote settling a question) |
| `from` | query | (optional) | Window start (Unix ms, default `to` − 24 h) |
| `to` | query | (optional) | Window end (Unix ms, exclusive, default now) |
| `limit` | query | `20` | Deploy actions |

```bash
curl -H "Authorization: Bearer $FEMTOS_KEY" "https://api.femtos.xyz/v1/hypercore/deploys?kind=perpDeploy&limit=20"
```

| Field | Type | Meaning |
|---|---|---|
| `deploys[]` | object | Newest first: {block, time, bundleHash, bundleIdx, actionIdx, kind, variant, dex, coin, user, entity, multiSigUser, …} |
| `deploys[].variant` | string | The action's key besides `type` (an outcomeDeploy's: its operation's); several: sorted, joined by commas |
| `deploys[].status` | ok \| err \| null | ok, or err (refused: `response` says why); null when the node wrote no answer |
| `deploys[].response` | object \| string \| null | The exchange's answer as the node wrote it: `{type: default}` (a vote: `{type: validatorVote, data}`), a refusal's text; null when the node wrote none |
| `deploys[].action` | object | The action as the node wrote it, every digit as written (a named wallet's address: its handle): `{type, <variant>: {…}}`; inside a multiSig, its inner action |
| `from` | ms | Start of the window read |
| `to` | ms | End of the window read (exclusive) |
| `head` | object \| null | The newest block the history has read (the live feed's, or S3's newest file when later): actions after it are not in it yet; null before any: {block, time} |
| `pending[]` | object | Spans of blocks overlapping the window whose actions the history does not hold yet, oldest first: read the window again once they are gone; empty when none: {fromBlock, toBlock, fromTime, toTime} |
| `next_cursor` | string \| null | Opaque cursor of the next page: pass it as `cursor`, unchanged. null on the last page |

Next page: `cursor` = the `next_cursor` of the previous answer (https://femtos.xyz/agents.md#pagination).

## Related (Deploys)

- [Deploys stream](https://femtos.xyz/reference/ws/deploys.md) `WS hc.deploys`: Every HyperCore deploy action as our node executes it (HIP-3 dexs and their markets, spot deploys, outcomes, validator votes): the rows of GET /v1/hypercore/deploys, pushed per block. One frame per block with all its matching events. (HyperCore)

Every page: https://femtos.xyz/reference.md
