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.
LogiHash supports exactly three languages: English (en), German (de), and French (fr). That applies to the console, this documentation, and the EN/DE/FR label-translation fields in forms and APIs—no other locales are offered.
Cryptographic signing keys used for T-Code verification are rotated on a 90-day cycle.
Creator identity (name, address, logo) is stored in your organisation profile and applied automatically by the API. Display options and per-T-Code fields are sent in each generate request body.
Creator NameRequiredAllowed: Non-empty text
Notes: Creator identity for the issuing entity.
Address (Street, House Number, Postal Code, City, optional State, Country)RequiredAllowed: Street, house number, postal code, city, and country are required non-empty text; state is optional
Notes: State / province is optional and omitted from formatted addresses when empty.
Object TypeRequiredAllowed: Preset: ID Card, Contract, Invoice, Certificate, Diploma, Permit, Badge, Ticket, Voucher, Warranty, Membership, or custom text
Notes: Custom mode via "Other": enter a default name (required). Optionally enable EN/DE/FR translations — empty translation fields fall back to the default name when scanning.
T-Code LabelRequiredAllowed: Non-empty text (max 200 characters)
Notes: Required creator-side label for identifying this T-Code in your dashboard. Stored in plain meta.json, not encrypted.
Validity (Valid for / Valid until)RequiredAllowed: GUI: duration presets or fixed YYYY-MM-DD date (minimum today in Anywhere on Earth)
Default: 1 year from today (Valid for preset → { "for_years": 1 })
Notes: In the GUI, choose Valid for (duration) or Valid until (fixed date). The API receives a single validity object with exactly one key. Fixed dates use Anywhere on Earth (AoE, UTC−12) end-of-day semantics.
Creator's Logo (optional)OptionalAllowed: Image upload (PNG, JPG/JPEG, WebP, SVG as base64 data URL), max 2 MB
Notes: Click to upload logo (max 2MB).
Linked DocumentOptionalAllowed: Accepted types: pdf, doc/docx, xml, xls/xlsx, ppt/pptx, PNG, JPG/JPEG, WebP, SVG (max 10MB)
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 | JPEG | 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
Fields sent in the POST body for each T-Code you generate (including display_options).
object_typeRequiredstringAllowed: Non-empty string (default name for custom types)
Notes: Usually matches one of form object types. For custom types, optionally include enable_object_type_translations (boolean) and object_type_translations.en/de/fr — empty translation fields fall back to object_type when scanning.
tcode_labelRequiredstringAllowed: Non-empty string (max 200 characters)
Notes: Required creator-side label for dashboard identification. Stored in plain meta.json, not encrypted.
validityRequiredobjectAllowed: Object with exactly one key
Default: { "for_years": 1 }
Notes: Required. Send exactly one of: { "until_date": "YYYY-MM-DD" } or { "for_days"|"for_weeks"|"for_months"|"for_years": positive integer }. until_date uses Anywhere on Earth (AoE, UTC−12) end-of-calendar-day semantics.
output_image_formatRequiredstringAllowed: png | jpg | jpeg | webp | svg
Default: png
Notes: Selects output image format for generated T-Code.
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.
Configured once under Organisation settings in the tenant console. The server applies creator name, address, and logo automatically when your API key identifies the organisation.
creator_nameRequiredstringAllowed: Non-empty
Notes: Stored in your organisation profile (tenant console → API). Applied automatically — do not send on every generate request.
addressRequiredobjectAllowed: Must include street, house_number, postal_code, city, and country as non-empty strings; state is optional
Notes: Stored in your organisation profile. Applied automatically with creator_name.
logoOptionalstringAllowed: data URL only: image/png, image/jpeg, image/webp, image/svg+xml; maximum decoded size 2 MB
Notes: Optional image stored in your organisation profile. Applied automatically when configured.
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.
Each generate call uses your API credentials, loads organisation defaults from the console, and sends only per-T-Code fields in the JSON body.
Authorization: Bearer <API_KEY> — API credential for the caller.X-Client-ID: <CLIENT_ID> — Client identifier for the caller.Content-Type: application/json — Request body is JSON.Accept: application/json — Response should be JSON.Example profile stored for your organisation. You do not send this JSON on every generate request.
{
"creator_name": "Trustec Valley",
"address": {
"street": "Bahnhofstrasse",
"house_number": "1A",
"postal_code": "8001",
"city": "Zurich",
"country": "CH"
},
"logo": "data:image/png;base64,<stored-in-console>"
}/api/v1/tcode/generateSend these fields in the POST body, including display_options for each T-Code. Creator name, address, and logo come from your stored organisation profile.
1) Minimal valid generate request (defaults)
{
"object_type": "Invoice",
"tcode_label": "INV-2026-0001",
"validity": {
"until_date": "2027-04-09"
},
"output_image_format": "png",
"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"
}
},
"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"
}
]
}2) Generate request with custom scan text and app buttons
{
"object_type": "Certificate",
"tcode_label": "CERT-2026-55",
"validity": {
"for_years": 1
},
"output_image_format": "webp",
"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"
}
},
"custom_fields": [
{
"label": "Certificate ID",
"value": "CERT-2026-55"
},
{
"label": "Issued To",
"value": "Jane Doe"
},
{
"label": "Program",
"value": "Advanced Compliance"
},
{
"label": "Hours",
"value": "24"
}
]
}3) Generate request with linked document + label translations
{
"object_type": "Contract",
"tcode_label": "CTR-10-2026",
"validity": {
"until_date": "2027-10-15"
},
"output_image_format": "svg",
"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"
}
},
"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"
}
}
}/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>"
}