Creator NameRequiredAllowed: Non-empty text
Notes: Creator identity for the issuing entity.
LogiHash Documentation
This page documents the current behavior of the Try platform form and API demo: all supported fields, allowed values, required rules, and practical constraints for production-ready T-Code generation.
Creator identity data is account-level and must stay consistent. It is not meant to change for every T-Code. Per-item differences should go into object type, custom fields, validity date, and optional linked document metadata.
Creator NameRequiredAllowed: Non-empty text
Notes: Creator identity for the issuing entity.
Address (Street, House Number, Postal Code, City, Country)RequiredAllowed: All non-empty text values
Notes: All five address fields are mandatory.
Object TypeRequiredAllowed: Preset: ID Card, Contract, Invoice, Certificate, Diploma, Permit, Badge, Ticket, Voucher, Warranty, Membership, or custom text
Notes: Custom mode is available via "Other".
T-Code LabelOptionalAllowed: Optional text
Notes: Creator-side helper label, intentionally not encrypted.
Valid UntilRequiredAllowed: YYYY-MM-DD date, minimum today
Default: One year from today (GUI initial date)
Notes: Must be on or after today.
LogoOptionalAllowed: Image upload (base64 data URL), max 2 MB
Notes: Optional branding logo.
Linked DocumentOptionalAllowed: Accepted types: pdf, doc/docx, xml, xls/xlsx, ppt/pptx, images
Notes: Supports optional label and optional EN/DE/FR label translations.
Additional Custom FieldsRequiredAllowed: At least 4 entries, each with non-empty label and value
Notes: Extra rows allowed; translation toggle supports EN/DE/FR per row.
Download FormatRequiredAllowed: PNG | JPG | WebP | SVG
Default: PNG (GUI); png (API example)
Notes: Equivalent to API field output_image_format.
The GUI supports the same visual controls reflected in display_options for API usage. Use this section to keep rendered T-Codes visually consistent across channels.
T-Code colorRequiredAllowed: black, logihash blue, navy, darkGreen, maroon, purple, darkGray, brown
Default: black (maps to #000000 in API)
Notes: These map to fixed hex values used by the API and GUI validator.
T-Code backgroundRequiredAllowed: transparent | white
Default: transparent
Notes: Transparent is ideal for overlay usage; white is print-friendly on noisy backgrounds.
Scan text enabledRequiredAllowed: true | false
Default: true
Notes: Toggles the sentence shown above or below the code.
Scan text contentRequiredAllowed: Default sentence or custom sentence
Default: “Scan to verify with the LogiHash App” (when not using custom text)
Notes: Custom mode uses your own sentence instead of the default.
Scan text positionRequiredAllowed: above | below
Default: below
Notes: Controls where the sentence appears relative to the T-Code.
Scan text alignmentRequiredAllowed: left | center | right
Default: center
Notes: Text alignment inside the generated image block.
Scan text colorRequiredAllowed: Same palette as T-Code color
Default: black
Notes: GUI and API both enforce the same allowed color set.
App buttonsRequiredAllowed: enabled true|false, style filled|outlined, color from palette
Default: enabled false; when enabled: style filled, color black
Notes: Adds in-image app-action buttons for branded visual style.
API base endpoint: https://api.logihash.com
Generate path: /api/v1/tcode/generate — Verify/Retrieve path: /api/v1/tcode/verify-retrieve
creator_nameRequiredstringAllowed: Non-empty
Notes: Core creator identity.
tcode_labelOptionalstringAllowed: Any string
Notes: Optional creator-side label.
addressRequiredobjectAllowed: Must include all address subfields as non-empty strings
Notes: street, house_number, postal_code, city, country are required.
object_typeRequiredstringAllowed: Non-empty
Notes: Usually matches one of form object types.
valid_untilRequiredstringAllowed: YYYY-MM-DD
Default: One year from creation date
Notes: Expiration date for positive verification.
output_image_formatRequiredstringAllowed: png | jpg | webp | svg
Default: png
Notes: Selects output image format for generated T-Code.
logoOptionalstringAllowed: data:image/...;base64,... under 2 MB
Notes: Optional image payload.
custom_fieldsRequiredarrayAllowed: Minimum 4 items; each item needs non-empty label + value
Notes: Rows can also include optional translations.
display_options.tcode_backgroundRequiredstringAllowed: transparent | white
Default: transparent
Notes: Background style of T-Code.
display_options.tcode_colorRequiredstringAllowed: #000000, #30acfd, #1e3a5f, #166534, #7f1d1d, #581c87, #374151, #78350f
Default: #000000
Notes: Only these hex values are accepted.
display_options.scan_text.enabledRequiredbooleanAllowed: true | false
Default: true
Notes: Turns the scan sentence on or off in the generated image.
display_options.scan_text.positionRequiredstringAllowed: above | below
Default: below
Notes: Placement of scan message.
display_options.scan_text.alignmentRequiredstringAllowed: left | center | right
Default: center
Notes: Horizontal alignment of scan message.
display_options.scan_text.use_customRequiredbooleanAllowed: true | false
Default: false
Notes: When false, the platform default sentence is used (see GUI scan text content).
display_options.scan_text.custom_textRequiredstring | nullAllowed: null or custom text
Default: null
Notes: Set to null when use_custom is false.
display_options.scan_text.colorRequiredstringAllowed: #000000, #30acfd, #1e3a5f, #166534, #7f1d1d, #581c87, #374151, #78350f
Default: #000000
Notes: Scan line color in the generated image.
display_options.app_buttons.enabledRequiredbooleanAllowed: true | false
Default: false
Notes: Toggles app buttons in the generated image.
display_options.app_buttons.colorRequiredstringAllowed: #000000, #30acfd, #1e3a5f, #166534, #7f1d1d, #581c87, #374151, #78350f
Default: #000000
Notes: Button color from the fixed palette.
display_options.app_buttons.styleRequiredstringAllowed: filled | outlined
Default: filled
Notes: Button rendering style in generated image.
linked_documentOptionalobjectAllowed: If present, requires file_name + mime_type + data_base64; optional label, enable_label_translations, label_translations.en/de/fr
Notes: Encrypted attachment metadata and content.
This is the dedicated display_options object used in API requests.
display_options.tcode_backgroundRequiredstringAllowed: transparent | white
Default: transparent
Notes: Background style of generated T-Code.
display_options.tcode_colorRequiredstringAllowed: #000000, #30acfd, #1e3a5f, #166534, #7f1d1d, #581c87, #374151, #78350f
Default: #000000
Notes: Only this fixed color set is accepted.
display_options.scan_text.enabledRequiredbooleanAllowed: true | false
Default: true
Notes: Turns scan sentence on or off.
display_options.scan_text.positionRequiredstringAllowed: above | below
Default: below
Notes: Placement of scan text relative to T-Code.
display_options.scan_text.alignmentRequiredstringAllowed: left | center | right
Default: center
Notes: Text alignment within the image block.
display_options.scan_text.use_customRequiredbooleanAllowed: true | false
Default: false
Notes: Enables custom sentence mode.
display_options.scan_text.custom_textRequiredstring | nullAllowed: null or custom text
Default: null
Notes: When custom mode is off, use null.
display_options.scan_text.colorRequiredstringAllowed: #000000, #30acfd, #1e3a5f, #166534, #7f1d1d, #581c87, #374151, #78350f
Default: #000000
Notes: Uses the same fixed color palette.
display_options.app_buttons.enabledRequiredbooleanAllowed: true | false
Default: false
Notes: Toggles app buttons in generated image.
display_options.app_buttons.colorRequiredstringAllowed: #000000, #30acfd, #1e3a5f, #166534, #7f1d1d, #581c87, #374151, #78350f
Default: #000000
Notes: Button color from fixed palette.
display_options.app_buttons.styleRequiredstringAllowed: filled | outlined
Default: filled
Notes: Rendering style for app buttons.
The current implementation builds a deterministic, fixed-length T-Code string. It first creates core components, then signs canonical messages with Ed25519, and finally appends signatures as base64url text.
Component lengths and meaning (full 270 chars)
version (2): hex value, default at start is 01. Used for format/version compatibility checks.creator_id (7): creator namespace (example: TRYLH01). Allowed characters: uppercase letters, lowercase letters, and digits only ([A-Za-z0-9]). This ID is chosen during creator registration in LogiHash and is not changeable afterward.db_entry_id (17): unique document/record reference.dek_material (50): base64url text used to derive encryption key material.kid (20): key identifier used to resolve the verification public key context.policy_flags (2): hex value, default at start is 0F. Compact policy/config bits.full_signature (86): Ed25519 signature (64 bytes) encoded as base64url.header_signature (86): Ed25519 signature (64 bytes) encoded as base64url.Verification format (134 chars)
version + creator_id + db_entry_id + kid + policy_flags + header_signature.dek_material and full_signature.How signatures are created (current implementation)
Ed25519 (library: @noble/ed25519).len:value concatenation).LogiHash:TCode:FullSig:v1: for full signature.LogiHash:TCode:HdrSig:v1: for header signature.full_signature signs: version + creator_id + db_entry_id + dek_material + kid + policy_flags.header_signature signs: version + creator_id + db_entry_id + kid + policy_flags.How encryption is used (current implementation)
AES-256-GCM.dek_material, hashed with SHA-256 to a 32-byte AES key.IV(12 bytes) || ciphertext+tag, then base64url encoded.Where each signature is used
header_signature: used in compact verification flow (134-char value) and fast authenticity checks.full_signature: used when full 270-char T-Code is available and full integrity context is checked.kid context).Endpoint expects one body field:verification_value
Use the 134-character verification format (header verification value), not the full 270-character T-Code. The verification value contains:version,creator_id,db_entry_id,kid,policy_flags, and header_signature.
Verification first checks header-signature integrity and key context. If valid, the backend can return mapped metadata/linked-document context according to policy and availability.
Use these payloads as copy-ready templates for integration testing. Replace IDs, dates, and sample values with your own creator data.
/api/v1/tcode/generate1) Minimal valid generate request (defaults)
{
"creator_name": "LogiHash GmbH",
"tcode_label": "INV-2026-0001",
"address": {
"street": "Bahnhofstrasse",
"house_number": "1A",
"postal_code": "8001",
"city": "Zurich",
"country": "CH"
},
"object_type": "Invoice",
"valid_until": "2027-04-09",
"output_image_format": "png",
"custom_fields": [
{
"label": "Invoice No",
"value": "INV-2026-0001"
},
{
"label": "Customer",
"value": "ACME Europe"
},
{
"label": "Amount",
"value": "CHF 4,250.00"
},
{
"label": "Currency",
"value": "CHF"
}
],
"display_options": {
"tcode_background": "transparent",
"tcode_color": "#000000",
"scan_text": {
"enabled": true,
"position": "below",
"alignment": "center",
"use_custom": false,
"custom_text": null,
"color": "#000000"
},
"app_buttons": {
"enabled": false,
"color": "#000000",
"style": "filled"
}
}
}2) Generate request with custom scan text and app buttons
{
"creator_name": "LogiHash GmbH",
"address": {
"street": "Bahnhofstrasse",
"house_number": "1A",
"postal_code": "8001",
"city": "Zurich",
"country": "CH"
},
"object_type": "Certificate",
"valid_until": "2028-12-31",
"output_image_format": "webp",
"custom_fields": [
{
"label": "Certificate ID",
"value": "CERT-2026-55"
},
{
"label": "Issued To",
"value": "Jane Doe"
},
{
"label": "Program",
"value": "Advanced Compliance"
},
{
"label": "Hours",
"value": "24"
}
],
"display_options": {
"tcode_background": "white",
"tcode_color": "#1e3a5f",
"scan_text": {
"enabled": true,
"position": "above",
"alignment": "left",
"use_custom": true,
"custom_text": "Scan to verify this certificate",
"color": "#1e3a5f"
},
"app_buttons": {
"enabled": true,
"color": "#30acfd",
"style": "outlined"
}
}
}3) Generate request with linked document + label translations
{
"creator_name": "LogiHash GmbH",
"address": {
"street": "Bahnhofstrasse",
"house_number": "1A",
"postal_code": "8001",
"city": "Zurich",
"country": "CH"
},
"object_type": "Contract",
"valid_until": "2027-10-15",
"output_image_format": "svg",
"custom_fields": [
{
"label": "Contract No",
"value": "CTR-10-2026"
},
{
"label": "Counterparty",
"value": "Northwind AG"
},
{
"label": "Region",
"value": "DACH"
},
{
"label": "Signed At",
"value": "2026-10-15"
}
],
"linked_document": {
"file_name": "contract.pdf",
"mime_type": "application/pdf",
"data_base64": "<base64-encoded-file-content>",
"label": "Original Contract",
"enable_label_translations": true,
"label_translations": {
"en": "Original Contract",
"de": "Originalvertrag",
"fr": "Contrat original"
}
},
"display_options": {
"tcode_background": "transparent",
"tcode_color": "#000000",
"scan_text": {
"enabled": true,
"position": "below",
"alignment": "center",
"use_custom": false,
"custom_text": null,
"color": "#000000"
},
"app_buttons": {
"enabled": false,
"color": "#000000",
"style": "filled"
}
}
}/api/v1/tcode/verify-retrieve1) Verify using compact verification value (recommended)
{
"verification_value": "<134-char header value: version+creator_id+db_entry_id+kid+policy_flags+header_signature>"
}2) Verify a scanned value from printed material
{
"verification_value": "01TRYLH01A12B34C56D78E90F1KIDEXAMPLE00000000010Fh4Z8m8tN8qQ2fQ1fR9...<truncated>"
}Authorization: Bearer <API_KEY> — API credential for the caller.X-Client-ID: <CREATOR_ID> — this value is the Creator ID.Content-Type: application/jsonAccept: application/jsonAPI_KEY and CREATOR_ID are issued for the creator account. Requests with missing or mismatched credentials should be rejected by the API.