| title | Quickstart |
|---|---|
| description | Make your first authenticated call to the ResQ Tactical OS APIs in five minutes. |
import CallEvidenceBasic from "/snippets/api/call-evidence-basic.mdx"; import HealthCheck from "/snippets/api/health-check.mdx"; import StreamEvents from "/snippets/api/stream-events.mdx";
ResQ exposes two HTTPS APIs:
| API | Base URL | Stack |
|---|---|---|
| Infrastructure API | https://api.resq.software |
Rust + Axum |
| Coordination API | https://coordination.resq.software |
TypeScript + Elysia |
<HealthCheck />
A healthy response looks like:
```json
{
"status": "ok",
"pinata": true,
"gemini": true,
"spoon_os": "0.1.0"
}
```
<CodeGroup>
```bash curl
curl -X POST https://api.resq.software/login \
-H "Content-Type: application/json" \
-d '{"username":"YOUR_USERNAME","password":"YOUR_PASSWORD"}'
```
```ts TypeScript
const res = await fetch("https://api.resq.software/login", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ username, password }),
});
const { token, expires_at } = await res.json();
```
</CodeGroup>
The response carries a token and a Unix expiry:
```json
{
"token": "eyJhbGciOi...",
"expires_at": 1746345600
}
```
Store the token securely. See [Authentication](/authentication) for refresh
and rotation guidance.
<CallEvidenceBasic />
<StreamEvents />
Each line is a JSON event: telemetry frames, mission state changes, and
HITL approvals.
<CardGroup cols={2}>
<Card title="TypeScript" icon="js" href="/sdks/typescript">
`@resq-systems/http`, `@resq-systems/security`, UI components.
</Card>
<Card title="Python" icon="python" href="/sdks/python">
`resq-mcp` (FastMCP server) and `resq-dsa`.
</Card>
<Card title="Rust" icon="rust" href="/sdks/rust">
Unified `resq` CLI plus seven TUI tools.
</Card>
<Card title=".NET" icon="hashtag" href="/sdks/dotnet">
Typed clients, Protobuf contracts, sim harnesses.
</Card>
</CardGroup>