---
title: "Lookup Account"
method: POST
path: "/api/v1/accounts/lookup"
tags: ["Accounts"]
---

# Lookup Account

`POST /api/v1/accounts/lookup`

Resolve a user UUID to its credit wallet, creating it on first sight.

Get-or-create, so a brand-new user always has a uuid to submit with. A
created account starts at zero credits — exactly the account POST /videos
would have provisioned — so `can_upload` is false until credits are bought.

``user_id`` is the canonical billing key. Email and org_id remain supported
only as legacy lookup inputs.

## Headers

- `x-api-key` string, nullable
- `League` string, nullable

## Request body

- union — Request schema for account lookup (POST /api/v1/accounts/lookup).
  - object
    - `user_id` string, uuid, nullable, required — Glory League user UUID and current billing key. Send this to create or read the same wallet used by POST /videos.
    - `email` string, nullable — Optional end-user email retained as a lookup handle for legacy accounts. Matched case-insensitively.
    - `org_id` string, nullable — Legacy wallet id accepted for backward compatibility. New clients must use user_id; organization metadata does not control billing.
    - `jwt` string, nullable — Short-lived token Glory League issued for this user; stored for reference when the account is first created.
  - object
    - `user_id` string, uuid, nullable — Glory League user UUID and current billing key. Send this to create or read the same wallet used by POST /videos.
    - `email` string, nullable, required — Optional end-user email retained as a lookup handle for legacy accounts. Matched case-insensitively.
    - `org_id` string, nullable — Legacy wallet id accepted for backward compatibility. New clients must use user_id; organization metadata does not control billing.
    - `jwt` string, nullable — Short-lived token Glory League issued for this user; stored for reference when the account is first created.
  - object
    - `user_id` string, uuid, nullable — Glory League user UUID and current billing key. Send this to create or read the same wallet used by POST /videos.
    - `email` string, nullable — Optional end-user email retained as a lookup handle for legacy accounts. Matched case-insensitively.
    - `org_id` string, nullable, required — Legacy wallet id accepted for backward compatibility. New clients must use user_id; organization metadata does not control billing.
    - `jwt` string, nullable — Short-lived token Glory League issued for this user; stored for reference when the account is first created.

## Response `200`

Successful Response

- GLAccountResponse — An account's identity + credit balance.
  - `user_id` string, required — User UUID — send this as user_id on POST /videos and in the JWT
  - `org_id` string, nullable — Deprecated wallet-id alias retained for legacy clients
  - `org_name` string, required — Legacy account handle; normally blank for user-id wallets
  - `video_quota` integer, required — Credits ever granted to this account
  - `video_usage` integer, required — Credits already spent
  - `remaining` integer, required — Credits left (never negative)
  - `can_upload` boolean, required — False means the next POST /videos returns 402 — send the user to the purchase page first

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/preciser/apis/preciser-data-management-api.md) · [All operations](https://skmtc.net/preciser/apis/preciser-data-management-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/preciser/preciser-data-management-api/revisions/16e2b6a1c2bb/schema)
