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

# List prompt templates

> System-prompt and conversational-flow templates visible to this workspace: platform templates (respecting global vs root visibility) plus workspace/reseller templates. Use an item's `id` as `template_id` when creating an assistant for server-side resolution. `blueprint` describes the use-case outcome, supported surfaces, setup requirements and presentation. `compatibility` summarizes the validated flow graph. `avatar_url` is only the catalog portrait; avatar-ready blueprint presentation means the assistant is designed for a separately configured virtual speaking avatar. **Required scope:** `assistants:read`.



## OpenAPI

````yaml /api-reference/openapi.json get /prompt-templates
openapi: 3.1.0
info:
  title: OurAiCalling API
  version: 1.0.0
  description: >-
    REST API for OurAiCalling. Authenticate with an API key (`fam_...`, created
    under **Settings → API Keys**) or an OAuth 2.0 access token (`fam_at_...`)
    as a Bearer token.


    Every response uses a consistent envelope: `{ "data": ... , "meta": { ... }
    }` on success and `{ "error": { "code", "message" } }` on failure. List
    endpoints paginate with `?limit=` (default 50, max 200) and `?offset=`;
    `meta.pagination.total` carries the total match count.


    Everything documented here is also exposed as MCP tools at
    `https://app.famulor.io/mcp` (Model Context Protocol, streamable HTTP) using
    the same credentials and permission model.
servers:
  - url: https://app.famulor.io/api/v1
    description: Hosted platform.
  - url: https://{domain}/api/v1
    description: White-label tenant domain — same paths, tenant branding.
    variables:
      domain:
        default: app.famulor.io
        description: Your white-label tenant domain.
security:
  - bearerAuth: []
tags:
  - name: Account
    description: Self-inspection of the calling credential.
  - name: Migrations
    description: Preview and import data from supported legacy platforms.
  - name: Assistants
    description: Create and manage voice assistants.
  - name: Tools
    description: >-
      Reusable tools (HTTP APIs and external MCP servers) assistants can call
      mid-conversation.
  - name: Voices
    description: Browse the text-to-speech voice library.
  - name: Calls
    description: Start outbound calls and read call history, transcripts and recordings.
  - name: History
    description: Unified conversation history across calls, messaging and assistant emails.
  - name: Campaigns
    description: Outbound calling campaigns with a compliant power dialer.
  - name: Leads
    description: Manage Audience contacts across campaigns, channels and Call QA metrics.
  - name: Segments
    description: >-
      Saved, dynamic lead filters — reusable audience definitions used for
      Audience search and campaign lead assignment.
  - name: Suppression
    description: Cross-channel marketing opt-outs and active workspace suppression records.
  - name: Callbacks
    description: >-
      Scheduled callbacks booked by the Schedule callback tool across voice,
      chat, and email.
  - name: Phone Numbers
    description: Marketplace numbers and customer-provided numbers.
  - name: Famulor Loop
    description: >-
      Personal business-phone access, directory, presence, devices, and Loop
      call recents.
  - name: SIP Trunks
    description: Bring your own SIP provider and numbers.
  - name: Carrier Connections
    description: Connect a supported carrier account and import its existing phone numbers.
  - name: Knowledge Bases
    description: RAG knowledge bases and documents for assistants.
  - name: Settings
    description: Workspace-level settings such as caller-memory defaults.
  - name: Billing
    description: Balance and minutes ledger of the key owner.
  - name: Automations
    description: >-
      Native workspace automations — list, create, update, trigger. Plan gate:
      automation_platform.
  - name: Milian Missions
    description: Recurring jobs that Milian runs unattended on schedule.
  - name: Integrations
    description: >-
      Calendar integrations (Cal.com, Calendly, Acuity Scheduling, Google
      Calendar, Outlook, native booking engine). Assign them to assistants to
      provide availability and booking tools, plus provider-supported
      appointment lookup, cancellation, and rescheduling.
  - name: Bookings
    description: >-
      Native booking engine — event types with weekly availability, public
      booking pages at /book/{workspace}/{slug}, and the bookings they produce.
  - name: Dashboards
    description: >-
      Custom analytics dashboards, reusable widgets, and tenant-scoped
      performance analytics. Requires the custom_dashboards plan feature.
  - name: Catalog
    description: >-
      Read-only platform catalogs — available models, supported assistant
      languages, and prompt templates.
  - name: Simulations
    description: Assistant simulation tests (plan-gated).
  - name: Versions
    description: Assistant configuration version history.
  - name: Caller IDs
    description: Outbound caller ID verification.
  - name: Widgets
    description: Web widget connectors.
  - name: Messaging
    description: >-
      Telegram, Slack, and Messenger text bots linked to assistants (Chat SDK).
      Includes conversation delay, inactivity end, and conversation-ended
      webhooks.
  - name: QA
    description: Cohort AI Quality Assurance runs over call transcripts.
  - name: White Label
    description: >-
      Manage the customers of your white-label workspace on their behalf — list,
      register, mint access tokens, log in, log out, and transfer credits.
      Available to reseller workspaces with white-label access, and to platform
      admins (scoped to direct platform customers). Requires `platform:read` /
      `platform:write`.
  - name: API Keys
    description: >-
      Self-service API keys for the calling workspace or a same-brand workspace
      where the credential's user is owner/admin. A key can only mint further
      keys with a scope subset of its own.
  - name: Workspaces
    description: >-
      List visible workspaces, create an additional workspace for the key owner,
      and mint a dedicated credential for a selected owner/admin workspace.
  - name: SMS
    description: Outbound SMS from workspace phone numbers.
paths:
  /prompt-templates:
    get:
      tags:
        - Catalog
      summary: List prompt templates
      description: >-
        System-prompt and conversational-flow templates visible to this
        workspace: platform templates (respecting global vs root visibility)
        plus workspace/reseller templates. Use an item's `id` as `template_id`
        when creating an assistant for server-side resolution. `blueprint`
        describes the use-case outcome, supported surfaces, setup requirements
        and presentation. `compatibility` summarizes the validated flow graph.
        `avatar_url` is only the catalog portrait; avatar-ready blueprint
        presentation means the assistant is designed for a separately configured
        virtual speaking avatar. **Required scope:** `assistants:read`.
      operationId: listPromptTemplates
      parameters:
        - name: language
          in: query
          required: false
          schema:
            type: string
          description: ISO-639-1 language filter (e.g. `de`).
        - name: theme
          in: query
          required: false
          schema:
            type: string
          description: >-
            Use-case theme: receptionist, lead_qualifier, appointment, support,
            screener, survey, sales, personal_assistant, callback_intake,
            property_lead, service_intake, feedback_survey, guest_concierge,
            avatar_concierge.
        - name: branch
          in: query
          required: false
          schema:
            type: string
          description: >-
            Industry branch: general, healthcare, dental, real_estate,
            home_services, saas, hospitality, legal, automotive, ecommerce,
            education.
        - name: q
          in: query
          required: false
          schema:
            type: string
          description: Search name, description, and content.
        - name: has_flow
          in: query
          required: false
          schema:
            type: boolean
          description: >-
            When `true`, only templates with a Flow JSON graph. When `false`,
            only Single-prompt templates (`flow_json` null).
      responses:
        '200':
          description: Visible prompt templates.
          content:
            application/json:
              schema:
                type: object
                required:
                  - data
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/PromptTemplate'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
components:
  schemas:
    PromptTemplate:
      type: object
      required:
        - id
        - name
        - content
        - languages
        - themes
        - branches
        - blueprint
        - compatibility
        - source
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        description:
          type:
            - string
            - 'null'
        content:
          type: string
          description: System prompt body to copy into an assistant.
        first_message:
          type:
            - string
            - 'null'
          description: Optional greeting to copy into first_message.
        flow_json:
          type:
            - object
            - 'null'
          description: >-
            Optional Flow JSON v1 graph. When set, apply as Conversational flow
            (`assistants.flow_json`); when null, template is Single prompt only.
          additionalProperties: true
        blueprint:
          anyOf:
            - $ref: '#/components/schemas/AssistantTemplateBlueprint'
            - type: 'null'
          description: >-
            Versioned use-case delivery contract. Null for legacy templates
            without setup metadata.
        compatibility:
          $ref: '#/components/schemas/AssistantTemplateCompatibility'
        category:
          type:
            - string
            - 'null'
        languages:
          type: array
          items:
            type: string
          description: >-
            ISO-639-1 codes the prompt is written for (any valid 2-letter code,
            e.g. de, ja).
        themes:
          type: array
          items:
            type: string
          description: >-
            Use-case slugs (snake_case). Presets include receptionist,
            lead_qualifier, …; custom values are allowed.
        branches:
          type: array
          items:
            type: string
          description: >-
            Industry slugs (snake_case). Presets include general, healthcare, …;
            custom values are allowed.
        source:
          type: string
          enum:
            - platform
            - workspace
        sort_order:
          type: integer
        avatar_url:
          type:
            - string
            - 'null'
          format: uri
          description: >-
            Public URL of the template catalog portrait (template-avatars
            bucket). Null when unset — UIs fall back to the default mesh orb.
            Copied onto a new assistant when creating from this template.
        updated_at:
          type: string
          format: date-time
    AssistantTemplateBlueprint:
      type: object
      required:
        - schema_version
        - use_case
        - outcome
        - complexity
        - surfaces
        - requirements
        - setup_steps
      properties:
        schema_version:
          type: integer
          const: 1
        use_case:
          type: string
        outcome:
          type: string
        complexity:
          type: string
          enum:
            - starter
            - guided
            - advanced
        surfaces:
          type: array
          items:
            type: string
            enum:
              - phone_inbound
              - phone_outbound
              - web_voice
              - web_avatar
        requirements:
          type: array
          items:
            $ref: '#/components/schemas/AssistantTemplateRequirement'
        setup_steps:
          type: array
          items:
            $ref: '#/components/schemas/AssistantTemplateSetupStep'
        presentation:
          type: object
          properties:
            mode:
              type: string
              enum:
                - visualizer
                - avatar
            avatar_layout:
              type: string
              enum:
                - avatar
                - avatar_chat
        suggested_keyterms:
          type: array
          maxItems: 100
          items:
            type: string
          description: >-
            Optional proper names or domain terms to review for the
            speech-recognition glossary when the selected engine supports it.
    AssistantTemplateCompatibility:
      type: object
      required:
        - valid
        - node_count
        - branch_count
        - collected_fields
        - surfaces
        - avatar_ready
        - setup_required
      properties:
        valid:
          type: boolean
        node_count:
          type: integer
          minimum: 0
        branch_count:
          type: integer
          minimum: 0
        collected_fields:
          type: array
          items:
            type: string
        surfaces:
          type: array
          items:
            type: string
            enum:
              - phone_inbound
              - phone_outbound
              - web_voice
              - web_avatar
        avatar_ready:
          type: boolean
        setup_required:
          type: integer
          minimum: 0
    ErrorEnvelope:
      type: object
      description: Error envelope returned by every /api/v1 endpoint on failure.
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - message
          properties:
            code:
              type: string
              enum:
                - unauthorized
                - forbidden
                - not_found
                - invalid_request
                - rate_limited
                - conflict
                - telephony_configuration_error
                - telephony_unavailable
                - destination_forbidden
                - internal_error
              description: Stable, machine-readable error code.
            message:
              type: string
              description: Human-readable description of the error.
    AssistantTemplateRequirement:
      type: object
      required:
        - kind
        - label
        - required
      properties:
        kind:
          type: string
          enum:
            - plan
            - knowledgebase
            - calendar
            - tool
            - transfer_destination
            - recognition_glossary
        capability:
          type: string
          description: Optional capability identifier used to evaluate setup readiness.
        label:
          type: string
        required:
          type: boolean
    AssistantTemplateSetupStep:
      type: object
      required:
        - id
        - label
        - required
      properties:
        id:
          type: string
        label:
          type: string
        required:
          type: boolean
        href:
          type: string
          description: Optional relative product path for completing this step.
  responses:
    Unauthorized:
      description: Missing, invalid, expired or revoked API key / access token.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
          example:
            error:
              code: unauthorized
              message: Invalid API key.
    Forbidden:
      description: >-
        The API key lacks the required scope, or the plan does not allow this
        action.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
          example:
            error:
              code: forbidden
              message: This API key is missing the required scope "assistants:write".
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API key
      description: >-
        API key (`fam_...`, created under **Settings → API Keys**) or an OAuth
        2.0 access token (`fam_at_...`). Keys can be restricted to scopes such
        as `assistants:read`, `calls:write`, `campaigns:write`,
        `automations:read`, `dashboards:read`, `dashboards:write`,
        `leads:write`, `segments:write`, `loop:read`, `loop:write`,
        `phone_numbers:write`, `sip_trunks:write`, `knowledge:write`,
        `voices:read`, `billing:read`, `settings:write`, `platform:read`,
        `platform:write`; a `*:write` scope implies the matching `*:read`.
        Automation and dashboard endpoints also accept the legacy `calls:*`
        scope. Keys without scope restrictions have full access.

````