Key management
Keys & batches
Vulkain stores Steam CD keys encrypted at rest. You never manage raw plaintext in the database — you upload batches, then distribute through links. This page defines the inventory model and statuses.
Keys
A product key belongs to one game and one batch. We store:
- Ciphertext — AES-GCM encrypted key material
- Hash — for duplicate detection (same key cannot enter the same account twice)
- Last 4 — safe display in the dashboard and redemption log
- Status — lifecycle below
Expected Steam format: segments like XXXXX-XXXXX-XXXXX (and close variants). Invalid lines are counted as malformed, not silently dropped.
Key statuses
| Status | Meaning |
|---|---|
| available | In the pool and ready to be claimed through a key link. |
| reserved | Temporarily held during a redeem attempt so two people cannot get the same key. |
| redeemed | Claimed. Issued to a recipient and tied to that claim. |
| revoked | Removed from circulation by you (or an admin action). Not available for new claims. |
| marked_external | Tracked as used outside Vulkain (e.g. handed out manually). Excluded from the live pool. |
| malformed | Failed validation on upload (bad format). Kept for audit; never distributed. |
Batches
A batch is one upload event for a game — paste or CSV/TXT file, with a label (e.g. Press pack — March 2026).
Each completed batch records:
- Accepted — new keys added to the pool
- Duplicates — already in your account (or repeated in the same file)
- Malformed — failed format checks
Batch statuses
| Status | Meaning |
|---|---|
| processing | Upload is being parsed and written. |
| completed | Finished. Accepted, duplicate, and malformed counts are final. |
| failed | The upload could not be completed. Retry with a fixed file or paste. |
Where to go in the product
- Keys — browse inventory by status
- Batches — upload history and counts
- Game page → Add — upload into a specific title
Need an account first? See Get started. Ready to share keys? See key links.