# Ora API > 用你自己的脚本执行发射、交易和策略,调用的正是 Ora 应用所使用的端点。 使用 API 密钥进行身份验证,发送 JSON,返回的也是 JSON。 > **Danger:** **没有测试模式。** 每次调用都作用于主网,动用的是真实资金,与在应用中操作完全一样。请先从只读调用开始,再尝试小额操作。 **Base URL:** `https://api.useora.xyz`。本部分中的所有路径都相对于它。 ### 快速开始 1. **开通 API 访问权限。** 每个账户默认都是关闭的。请通过 [Discord](https://discord.gg/K9BrY9g6zs) 或 [Telegram](https://t.me/useora_xyz) 联系 Ora 支持团队,为你的账户开通。 2. **创建密钥。** 在应用中,点击右上角的头像,然后点击 **API Key**,再点击 **Generate key**。密钥只显示一次:请把它复制到密钥管理工具或环境变量中。生成密钥即表示你接受 API 使用条款,即 Ora [服务条款](https://useora.xyz/terms)的第 10.8 至 10.11 条。 3. **发起第一次调用。** 返回 `200` 表示调用成功。返回 `401` 表示密钥有误;返回 `403` 表示 API 访问权限尚未开通。 ```bash curl https://api.useora.xyz/portfolio/stats \ -H "Authorization: Bearer $ORA_API_KEY" ``` ### 一个小型客户端 只要不是一次性的调用,就建议把这些调用封装成一个小型客户端。本部分的示例都假定使用下面这个客户端(Node 18+,或任何支持 `fetch` 的运行环境): ```js title="ora.mjs" const ORA = 'https://api.useora.xyz'; const KEY = process.env.ORA_API_KEY; // ora_…, never hard-coded export async function ora(method, path, body) { const res = await fetch(ORA + path, { method, headers: { Authorization: `Bearer ${KEY}`, // Only when there is a body: a body-less POST with this header is refused (400). ...(body ? { 'Content-Type': 'application/json' } : {}), }, body: body ? JSON.stringify(body) : undefined, }); const data = await res.json(); if (!res.ok || data.success === false) { const err = new Error(`${res.status} ${data.error}${data.message ? `: ${data.message}` : ''}`); err.status = res.status; err.requestId = res.headers.get('x-request-id'); // quote it when you contact support throw err; } return data; } ``` ### 接下来看什么 - [身份验证](https://docs.useora.xyz/developers/authentication/):密钥如何运作,以及如何轮换或撤销密钥。 - [请求与错误](https://docs.useora.xyz/developers/requests-and-errors/):金额、地址、错误码和速率限制。 - [签名与数据流](https://docs.useora.xyz/developers/signing-and-streams/):少数需要你自己的钱包签名的流程,以及实时数据。 - [API 指南](https://docs.useora.xyz/developers/guides/):买入和卖出、策略、发射代币。 - [端点](https://docs.useora.xyz/developers/endpoints/):密钥可以调用的所有路由。 如有疑问或需要申请访问权限,请联系 Ora 支持团队。咨询某次调用时,请附上它的 `X-Request-ID`。