Register
Register a new creative work on the blockchain with metadata, creators, and a digital certificate issued by Allfeat.
The ATS Widget is a plug-and-play web component that allows organizations to integrate the Allfeat Time Stamp (ATS) service directly into their own platform. Powered by Allfeat’s proprietary API, the widget lets your end users register and protect creative works on the Allfeat blockchain — without requiring them to visit Allfeat’s portal or to hold an Allfeat account.
Register
Register a new creative work on the blockchain with metadata, creators, and a digital certificate issued by Allfeat.
Update
Register a new version of an existing work — update creators, metadata, or the creative work file itself.
Theming
Fully customizable via CSS variables — adapt the widget to match your design system.
Your organization acts as a bridge between your end users and Allfeat. All ATS registrations go through your organization’s Allfeat account — your users never interact with Allfeat directly.
This means:
The integration involves three actors:
┌─────────────────┐ JWT Token ┌─────────────────┐│ Your Backend │◄──────────────────►│ Allfeat API ││ (secret_key) │ POST /v1/sessions │ ats.api. ││ │ │ allfeat.org │└────────┬────────┘ └────────┬────────┘ │ token │ ▼ │┌─────────────────┐ ││ Your Frontend │ ││ <ats-widget │ Upload + API calls ││ site-key="…"> │────────────────────────────►││ │ │└─────────────────┘ │site-key attribute (public key)secret_key to obtain a JWT session tokensetToken()When a work is registered, the allfeat:complete event returns an accessCode — a unique 68-character string (format: atc_ + 64 hex characters) that acts as a capability token for that specific work. The access code is the key to all subsequent operations: updating a version or consulting work details.
The access code is designed to be given to the end user who registered the work. It is their proof of registration and their means to interact with their work later. Your service may optionally store it as a backup, but the primary holder should be the end user.
Since Allfeat user accounts are abstracted, your organization decides how to manage users and their works. Here are two common approaches:
Approach 1 — User holds the access code (recommended)
The access code is displayed to the user after registration (the widget shows it on the success screen). The user is responsible for storing it. When they want to update or consult their work, they provide the access code themselves.
Your service only needs to store the atsId for reference:
Your Database┌──────────┬────────┬────────────┐│ user_id │ ats_id │ registered │├──────────┼────────┼────────────┤│ user_123 │ 42 │ 2025-06-01 ││ user_456 │ 78 │ 2025-07-15 │└──────────┴────────┴────────────┘Approach 2 — Service stores the access code as backup
Your service stores the access code alongside the user mapping. This enables you to provide a smoother UX (e.g., pre-filling the access code in the update flow) but adds responsibility for securing those codes.
Your Database┌──────────┬────────┬──────────────────────┬────────────┐│ user_id │ ats_id │ access_code │ registered │├──────────┼────────┼──────────────────────┼────────────┤│ user_123 │ 42 │ atc_a1b2c3d4... │ 2025-06-01 ││ user_456 │ 78 │ atc_e5f6a7b8... │ 2025-07-15 │└──────────┴────────┴──────────────────────┴────────────┘Both approaches work — choose based on your product needs and security posture. Allfeat only sees your organization’s account regardless.
The ATS Widget is self-serve — there’s no subscription required. Create an account on app.allfeat.org and spin up an organization to start integrating. Each user can create up to 3 organizations for free.
Each ATS registration or version update incurs fees billed to your organization’s credit balance:
| Fee | Description |
|---|---|
| Network fee | Blockchain transaction cost, estimated via dry-run simulation |
| Deposit | On-chain storage deposit for the work or version |
| Service fee | Allfeat platform fee (applied as basis points on the transaction) |
| Storage fee | Media storage fee — free up to 10 MB, increases progressively above |
The total price is the sum of all four. Fees are deducted from your organization’s credit balance automatically. The session creation will fail if your balance is insufficient.
The widget is distributed as a static JavaScript file via CDN:
<!-- Recommended: pin to major version (auto-receives patches) --><script src="https://cdn.allfeat.org/widgets/ats/v2/ats-widget.iife.js"></script>Include it with a <script> tag — no package manager required. The <ats-widget> custom element is immediately available.
| Channel | URL | Cache | Use case |
|---|---|---|---|
| Pinned | cdn.allfeat.org/widgets/ats/2.0.0/ats-widget.iife.js | Immutable | Reproducible builds |
| Major | cdn.allfeat.org/widgets/ats/v2/ats-widget.iife.js | 1h | Production (recommended) |
| Latest | cdn.allfeat.org/widgets/ats/latest/ats-widget.iife.js | 5min | Always latest stable |
| Dev | cdn.allfeat.org/widgets/ats/dev/ats-widget.iife.js | 5min | Testing only |
ESM builds are also available (ats-widget.esm.js).
Alternatively, install via npm for bundled projects (coming soon):
bun add allfeat-ats-component # not yet publishedimport { AllfeatRegister } from 'allfeat-ats-component';site_key (cpk_...) and secret_key (csk_...) from the Dashboard