Anthropic Prompt Templatization API

APIs for converting prompts into reusable templates with variables

OpenAPI Specification

anthropic-prompt-templatization-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Anthropic Admin Agents Prompt Templatization API
  description: Manage administrative functions for Anthropic organizations, workspaces, users, invites, and API keys.
  version: 1.0.0
  contact:
    name: Anthropic
    url: https://www.anthropic.com
    email: support@anthropic.com
  license:
    name: Anthropic API License
    url: https://www.anthropic.com/terms
servers:
- url: https://api.anthropic.com/v1
  description: Production Server
security:
- AdminApiKeyAuth: []
tags:
- name: Prompt Templatization
  description: APIs for converting prompts into reusable templates with variables
paths:
  /v1/experimental/templatize_prompt:
    post:
      summary: Anthropic Templatize A Prompt
      description: 'Templatize a prompt by identifying and extracting variables. This API

        analyzes a prompt and converts specific values into reusable template

        variables with placeholders.


        **Requirements:**

        - Must have joined the closed research preview for prompt tools APIs

        - Must use the API directly (not available in SDK)

        - Must include the beta header `prompt-tools-2025-04-02`

        - Messages must contain only text-only content blocks

        - No tool calls, images, or prompt caching blocks allowed

        - Only contiguous user messages with text content are permitted

        '
      operationId: templatizePrompt
      tags:
      - Prompt Templatization
      x-microcks-operation:
        dispatcher: FALLBACK
        dispatcherRules: ''
        delay: 100
      parameters:
      - $ref: '#/components/parameters/AnthropicBetaHeader'
      - $ref: '#/components/parameters/ApiKeyHeader'
      - $ref: '#/components/parameters/ContentTypeHeader'
      - $ref: '#/components/parameters/BrowserAccessHeader'
      - $ref: '#/components/parameters/AnthropicVersionHeader'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TemplatizePromptRequest'
            examples:
              DefaultExample:
                $ref: '#/components/examples/TemplatizePromptRequestDefaultExample'
              TranslationWithSystemExample:
                $ref: '#/components/examples/TemplatizePromptRequestTranslationExample'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TemplatizePromptResponse'
              examples:
                TemplatizedTranslationResponse:
                  $ref: '#/components/examples/TemplatizePromptResponseExample'
        '400':
          description: Bad Request - Invalid input parameters or unsupported content types
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                BadRequestExample:
                  $ref: '#/components/examples/ErrorBadRequestExample'
        '401':
          description: Unauthorized - Invalid or missing API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                UnauthorizedExample:
                  $ref: '#/components/examples/ErrorUnauthorizedExample'
        '403':
          description: Forbidden - Access denied or not in closed research preview
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                ForbiddenExample:
                  $ref: '#/components/examples/ErrorForbiddenExample'
        '429':
          description: Too Many Requests - Rate limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                RateLimitExample:
                  $ref: '#/components/examples/ErrorRateLimitExample'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                ServerErrorExample:
                  $ref: '#/components/examples/ErrorServerExample'
components:
  schemas:
    TextContentBlock:
      type: object
      required:
      - type
      - text
      properties:
        type:
          type: string
          enum:
          - text
          description: The type of content block
        text:
          type: string
          description: The text content
    TemplatizePromptResponse:
      type: object
      required:
      - messages
      - system
      - usage
      - variable_values
      properties:
        messages:
          type: array
          description: 'The templatized prompt with variable placeholders.

            The response includes the input messages with specific

            values replaced by variable placeholders. These messages

            maintain the original message structure but contain

            uppercase variable names in place of concrete values.

            '
          items:
            $ref: '#/components/schemas/PromptMessage'
        system:
          type: string
          description: 'The input system prompt with variables identified and replaced.

            If no system prompt was provided in the original request,

            this field will be an empty string.

            '
        usage:
          $ref: '#/components/schemas/UsageInfo'
        variable_values:
          type: object
          description: 'A mapping of template variable names to their original

            values, as extracted from the input prompt during

            templatization. Each key represents a variable name

            identified in the templatized prompt, and each value

            contains the corresponding content from the original

            prompt that was replaced by that variable.

            '
          additionalProperties:
            type: string
    UsageInfo:
      type: object
      description: Usage information
      required:
      - input_tokens
      - output_tokens
      properties:
        input_tokens:
          type: integer
          description: Number of input tokens used
          minimum: 0
        output_tokens:
          type: integer
          description: Number of output tokens generated
          minimum: 0
    ErrorResponse:
      type: object
      required:
      - type
      - message
      properties:
        type:
          type: string
          description: The type of error
        message:
          type: string
          description: A human-readable error message
    PromptMessage:
      type: object
      required:
      - role
      - content
      properties:
        role:
          type: string
          enum:
          - user
          - assistant
          description: The role of the message sender
        content:
          type: array
          description: The content of the message
          items:
            $ref: '#/components/schemas/TextContentBlock'
    TemplatizePromptRequest:
      type: object
      required:
      - messages
      properties:
        messages:
          type: array
          description: 'The prompt to templatize, structured as a list of message objects.

            Each message must contain only text-only content blocks and

            not include tool calls, images, or prompt caching blocks.

            Only contiguous user messages with text content are allowed.

            Assistant prefill is permitted.

            '
          items:
            $ref: '#/components/schemas/PromptMessage'
        system:
          type: string
          nullable: true
          description: 'The existing system prompt to templatize.

            Note that this differs from the Messages API; it is strictly

            a string.

            If provided, variables will be identified and replaced in

            the system prompt as well.

            '
  examples:
    ErrorServerExample:
      summary: Server error
      value:
        type: api_error
        message: An internal server error occurred
    ErrorRateLimitExample:
      summary: Rate limit error
      value:
        type: rate_limit_error
        message: Rate limit exceeded. Please retry after some time.
    TemplatizePromptResponseExample:
      summary: Templatized translation prompt
      value:
        messages:
        - role: user
          content:
          - type: text
            text: Translate {{WORD_TO_TRANSLATE}} to {{TARGET_LANGUAGE}}
        system: You are a professional English to {{TARGET_LANGUAGE}} translator
        usage:
          input_tokens: 15
          output_tokens: 25
        variable_values:
          WORD_TO_TRANSLATE: hello
          TARGET_LANGUAGE: German
    ErrorBadRequestExample:
      summary: Bad request error
      value:
        type: invalid_request_error
        message: Invalid request format
    TemplatizePromptRequestTranslationExample:
      summary: Translation with system prompt
      value:
        messages:
        - role: user
          content:
          - type: text
            text: Translate hello to German
        system: You are a professional English to German translator
    ErrorUnauthorizedExample:
      summary: Unauthorized error
      value:
        type: authentication_error
        message: Invalid or missing API key
    ErrorForbiddenExample:
      summary: Forbidden error
      value:
        type: permission_error
        message: Access denied or not in closed research preview
    TemplatizePromptRequestDefaultExample:
      summary: Simple translation prompt
      value:
        messages:
        - role: user
          content:
          - type: text
            text: Translate hello to German
  parameters:
    AnthropicVersionHeader:
      name: anthropic-version
      in: header
      required: true
      description: Which version of the Anthropic API to use.
      schema:
        type: string
        default: '2023-06-01'
    BrowserAccessHeader:
      name: anthropic-dangerous-direct-browser-access
      in: header
      required: false
      description: Enable CORS.
      schema:
        type: string
        default: 'true'
    ContentTypeHeader:
      name: Content-Type
      in: header
      required: true
      description: The content type.
      schema:
        type: string
        default: application/json
    AnthropicBetaHeader:
      name: anthropic-beta
      in: header
      description: 'Optional header to specify the beta version(s) you want to use.

        To use multiple betas, use a comma separated list like `beta1,beta2`

        or specify the header multiple times for each beta.

        '
      required: false
      schema:
        type: array
        items:
          type: string
        example:
        - prompt-tools-2025-04-02
      style: simple
      explode: false
    ApiKeyHeader:
      name: x-api-key
      in: header
      required: true
      description: A valid API token.
      schema:
        type: string
  securitySchemes:
    AdminApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: Your Admin API key for authentication (starts with sk-ant-admin...).