Skip to content

Quickstart

From zero to a finished report in four requests.

1. Create an API key#

  1. Sign in to cockpit.rubikyt.com and open Developers, then API keys.
  2. Name the key and pick its scopes. For this guide: interviews:create, interviews:read and interviews:decide.
  3. Copy the secret. It starts with rubi_live_ and is shown once. Store it in your secret manager.
bash
export RUBI_API_KEY="rubi_live_..."

2. Create an interview#

Pass an existing trader_id or describe the trader inline. analyst_guidance is private: it steers the interviewer and the report but is never shown to the trader.

request
curl https://api.rubikyt.com/v1/interviews \
  -H "Authorization: Bearer $RUBI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "trader": {
      "full_name": "Jane Doe",
      "email": "jane@example.com",
      "external_id": "cus_18422"
    },
    "language": "en",
    "analyst_guidance": "First payout request. Check who places the trades and whether account acc_99812 is hedged elsewhere.",
    "window_hours": 72,
    "technical_analysis": { "enabled": true, "symbol": "EURUSD", "date": "2026-09-22" },
    "sandbox": true
  }'

The response contains the invite link. It is only returned now and on reissue, so send it to the trader right away.

201 response
{
  "interview": {
    "id": "8f0b1c52-3f6e-4d0a-9d1e-2c3b4a5d6e7f",
    "trader": { "id": "5a1f...", "name": "Jane Doe", "email": "jane@example.com", "external_id": "cus_18422" },
    "status": "created",
    "expired": false,
    "language": "en",
    "risk_score": null,
    "recommended_step": null,
    "decision": null,
    "media": [],
    "created_at": "2026-09-23T10:00:00Z",
    "expires_at": "2026-09-26T10:00:00Z",
    "sort_at": "2026-09-23T10:00:00Z"
  },
  "invite_url": "https://interview.rubikyt.com/i/3kQ9vX...",
  "expires_at": "2026-09-26T10:00:00Z"
}

3. Wait for the report#

Subscribe a webhook endpoint to interview.report_ready, or poll GET /v1/interviews/{id} until status is report_ready. The detail contains report, the transcript in answers, integrity events and the activity_summary.

bash
curl https://api.rubikyt.com/v1/interviews/$INTERVIEW_ID \
  -H "Authorization: Bearer $RUBI_API_KEY"

4. Record the decision#

bash
curl https://api.rubikyt.com/v1/interviews/$INTERVIEW_ID/decision \
  -H "Authorization: Bearer $RUBI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "decision": "approved", "ai_assessment": "correct", "reason": "Consistent strategy, no linked accounts." }'
Telling Rubi whether the AI was correct, partially right or wrong feeds your firm's learning memory. It is optional, and it is the fastest way to improve the next reports.