> ## Documentation Index
> Fetch the complete documentation index at: https://docs.get-rial.com/llms.txt
> Use this file to discover all available pages before exploring further.

# List templates

> Your templates, newest first, with how many verifications each one has started.



## OpenAPI

````yaml /api-reference/openapi.json get /v1/link-templates
openapi: 3.1.0
info:
  title: rial API
  version: 0.1.0
  description: 'Prove a photo is real. Base URL: https://api.rial.io'
  contact:
    name: rial-platform team
    url: https://github.com/Rial-ventures-Inc/rial-platform
  license:
    name: UNLICENSED — proprietary, internal use only
servers:
  - url: https://api.rial.io
    description: Production
security: []
tags:
  - name: Verifications
    description: >-
      Create, fetch, list, and finalize verifications. The core of the API —
      every tenant integration starts here.
  - name: Templates
    description: >-
      Publish, update, revoke and inspect link templates — the reusable capture
      links behind `/l/{token}` (a compact JWT carrying the org and template
      slugs; the legacy `/l/{org}/{slug}` keeps resolving). Callable with a
      secret key; each publish snapshots a versioned capture spec (GET-83).
  - name: Databases
    description: >-
      Create, update, inspect and synchronize tenant-scoped databases used by
      reusable verification templates. Callable with a dashboard session or
      secret API key.
paths:
  /v1/link-templates:
    get:
      tags:
        - Templates
      summary: List templates
      description: >-
        Your templates, newest first, with how many verifications each one has
        started.
      responses:
        '200':
          description: All templates for the tenant.
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/LinkTemplate'
                required:
                  - items
              example:
                items:
                  - slug: warehouse-intake
                    org_slug: acme-logistics
                    public_url: >-
                      https://verify.rial.io/l/eyJhbGciOiJIUzI1NiJ9.eyJvIjoiYWNtZS1sb2dpc3RpY3MiLCJ0Ijoid2FyZWhvdXNlLWludGFrZSJ9.3YjQ4G9Wf0mJ8s2K
                    name: Warehouse intake
                    mode: capture
                    steps:
                      - key: front
                        type: image
                        description: Front of the pallet
                        min: 1
                        max: 1
                    expires_in_seconds: 3600
                    status: active
                    started_total: 0
                    started_today: 0
                    version: 1
                    created_at: '2026-07-30T12:00:00.000Z'
                    updated_at: '2026-07-30T12:00:00.000Z'
        '503':
          description: The template store is unreachable — retry with backoff.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  cause:
                    type: string
                required:
                  - error
              example:
                error: storage_unavailable
      security:
        - bearerApiKey: []
components:
  schemas:
    LinkTemplate:
      type: object
      properties:
        slug:
          type: string
        org_slug:
          type: string
        public_url:
          type: string
          format: uri
        name:
          type: string
        mode:
          type: string
          enum:
            - capture
            - audit
            - hybrid
        steps:
          type: array
          items:
            type: object
            properties:
              key:
                type: string
              type:
                type: string
                enum:
                  - image
                  - upload
                  - text
                  - video
                  - choice
                  - address
            required:
              - key
              - type
            description: One normalized capture-spec step (see `stepsInputSchema`).
        expires_in_seconds:
          type: integer
        metadata:
          type: object
          additionalProperties:
            type: string
        expected_info:
          type: object
          properties: {}
        expected_location:
          type: object
          properties: {}
        expected_object:
          type: object
          properties: {}
        condition_aspects:
          type: array
          items: {}
        brand_slug:
          type: string
        notify_email:
          type: string
          format: email
        notify_subject_template:
          type: string
        notify_body_template:
          type: string
        completion_message:
          type: string
          minLength: 1
          maxLength: 2000
          description: >-
            Full plain-text message shown after submitting content. HTML,
            markdown and variables are not interpreted. Omit on create or send
            null on PATCH to use the default.
        identification:
          type: object
          properties:
            required:
              type: boolean
            label:
              type: string
          required:
            - required
        requires_location:
          type: boolean
        database:
          type: object
          properties:
            database_id:
              type: string
            column_for:
              type: object
              properties:
                identifier:
                  type: string
                location:
                  type: string
                object:
                  type: string
              required:
                - identifier
          required:
            - database_id
            - column_for
        status:
          type: string
          enum:
            - active
            - paused
        daily_cap:
          type: integer
        total_cap:
          type: integer
        started_total:
          type: integer
        started_today:
          type: integer
        version:
          type: integer
          minimum: 1
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
      required:
        - slug
        - name
        - mode
        - steps
        - expires_in_seconds
        - status
        - started_total
        - started_today
        - version
        - created_at
        - updated_at
  securitySchemes:
    bearerApiKey:
      type: http
      scheme: bearer
      bearerFormat: rk_secret_<key>
      description: >-
        Secret API key, created in the dashboard under Settings → API. Send it
        as `Authorization: Bearer rk_secret_…` from your server only.
        Publishable keys (`pk_live_…`) are for the native SDKs and reach the
        capture endpoints alone. An unknown key returns 401.

````