# Integration quickstart

> Use a server-side API key for inline fast assessment or asynchronous deep research without handing over signing control.

Canonical page: https://tennto.vlightup.jp/docs/quickstart/

## 1. Obtain an API key

Sign in and open API Keys to create a named, expiring key. Copy the secret when it is issued; it is shown only once. If access is not available for your account, request a demo.

Keep the API key on your server. Never embed it in browser JavaScript, a VITE\_ variable, a mobile bundle, a public repository, or a prompt. Use a secrets manager and revoke keys you no longer need. A Clerk session token is not an external API key.

- [API Keys](https://tennto.vlightup.jp/api-keys): Authenticated key management.

```bash
export TENNTO_API_URL='https://trustauthy-api.reiun-ni.workers.dev'
# Set TENNTO_API_KEY securely in your server environment. Do not paste it into docs.
```

## 2. Start an assessment

The address below is a request-shape example, not a risk finding or recommendation. Replace it with the Solana address you intend to research. Running the command starts a real assessment and consumes quota.

```bash
curl --fail-with-body "$TENNTO_API_URL/v1/risk" \
  -H "Authorization: Bearer $TENNTO_API_KEY" \
  -H 'Content-Type: application/json' \
  --data '{
  "address": "5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1",
  "chain": "solana",
  "mode": "fast"
}'
```

A successful fast assessment returns HTTP 200 with runId, status "completed", and the full result object. Evaluate that result before signing; the saved run remains retrievable by ID.

For asynchronous deep research, change mode to "default". That request returns HTTP 202 with a queued run ID, not a completed assessment. Example default-mode response:

```json
{
  "runId": "example-run",
  "status": "queued"
}
```

## 3. Retrieve a result or poll deep research

```bash
# Replace example-run with the runId from the start response.
curl --fail-with-body "$TENNTO_API_URL/v1/risk/example-run" \
  -H "Authorization: Bearer $TENNTO_API_KEY"
```

Use a key belonging to the same user. The current risk service returns queued, running, completed, failed, or canceled. The shared response schema also permits credits\_exhausted; handle it as a terminal state. Result may be null or partial while the run is in progress. Stop polling on a terminal status; enforce your own timeout and review path.

Fast results do not need polling after a completed start response. For deep research, use bounded polling with backoff; polls count against the request quota. Inspect assessment.status, assessment.sanctions, evidence limitations and reportStatus. Default research can finish writing its report before the final Jev assessment is ready. HTTP 200 or status "completed" is not permission to sign.

## 4. Apply your own policy

Your server maps the findings to its own allow, hold, or block policy before signing. Treat insufficient evidence, unknown sanctions, failed runs and timeouts explicitly; do not automatically treat a missing score as low risk.

POST is not idempotent. If a start response is lost, do not blindly retry: a duplicate submission can create another run and consume additional quota.

- [API reference](https://tennto.vlightup.jp/docs/api/): Fields, errors and current quotas.
- [OpenAPI document](https://tennto.vlightup.jp/openapi.json): Machine-readable public API contract.
