---
title: "Create Prompt Template With Version"
method: POST
path: "/projects/{project_id}/templates"
tags: ["prompts"]
---

# Create Prompt Template With Version

`POST /projects/{project_id}/templates`

For a given project, create a prompt template.

We first create a prompt template version, and then create a prompt template that
points to that version as the selected version.

Parameters
----------
project_id : UUID4
    Project ID.
create_request : CreatePromptTemplateWithVersionRequestBody, optional
    Request body, by default Body( ...,
        examples=
        [BasePromptTemplateVersion.test_data() | BasePromptTemplate.test_data()],
    )

Returns
-------
CreatePromptTemplateResponse
    Details about the created prompt template.

## Path parameters

- `project_id` string, uuid4, required

## Request body

- CreatePromptTemplateWithVersionRequestBody — Body to create a new prompt template with version. This is only used for parsing the body from the request.
  - `template` union, required
    - string
    - GalileoCoreSchemasSharedMessageMessage[]
      - `content` union, required
        - string
        - union[]
          - union
            - TextContentPart — A text segment within a message.
              - …
            - FileContentPart — Reference to a file associated with this message. The file_id can be resolved via the ``files`` dict returned on trace/span detail responses, which contains metadata such as modality, MIME type, and a presigned download URL.
              - …
      - `role` union, required
        - string
        - 'agent' | 'assistant' | 'function' | 'system' | 'tool' | 'user'
  - `raw` boolean
  - `version` integer, nullable
  - `settings` PromptRunSettingsInput — Prompt run settings.
    - `logprobs` boolean
    - `top_logprobs` integer
    - `echo` boolean
    - `n` integer
    - `reasoning_effort` string
    - `verbosity` string
    - `deployment_name` string, nullable
    - `model_alias` string
    - `temperature` number, nullable
    - `max_tokens` integer
    - `stop_sequences` string[], nullable
    - `top_p` number
    - `top_k` integer
    - `frequency_penalty` number
    - `presence_penalty` number
    - `tools` object[], nullable
    - `tool_choice` union
      - string
      - OpenAIToolChoice
        - `type` string
        - `function` OpenAIFunction, required
          - `name` string, required
    - `response_format` object, nullable
    - `known_models` Model[]
      - `name` string, required
      - `alias` string, required
      - `integration` 'anthropic' | 'aws_bedrock' | 'aws_sagemaker' | 'azure' | 'custom' | 'databricks' | 'mistral' | 'nvidia' | 'openai' | 'vegas_gateway' | 'vertex_ai' | 'writer'
      - `lifecycle_state` 'active' | 'deprecated' | 'retired'
      - `replacement_alias` string, nullable
      - `deprecation_date` string, date, nullable
      - `retirement_date` string, date, nullable
      - `user_role` string, nullable
      - `assistant_role` string, nullable
      - `system_supported` boolean
      - `input_modalities` ContentModality[] — Input modalities that the model can accept.
      - `alternative_names` string[] — Alternative names for the model, used for matching with various current, versioned or legacy names.
      - `input_token_limit` integer, nullable
      - `output_token_limit` integer, nullable
      - `token_limit` integer, nullable
      - `cost_by` 'tokens' | 'characters'
      - `is_chat` boolean
      - `provides_log_probs` boolean
      - `formatting_tokens` integer
      - `response_prefix_tokens` integer
      - `api_version` string, nullable
      - `legacy_mistral_prompt_format` boolean
      - `requires_max_tokens` boolean
      - `max_top_p` number, nullable
      - `params_map` RunParamsMap — Maps the internal settings parameters (left) to the serialized parameters (right) we want to send in the API requests.
        - `model` string, nullable
        - `temperature` string, nullable
        - `max_tokens` string, nullable
        - `stop_sequences` string, nullable
        - `top_p` string, nullable
        - `top_k` string, nullable
        - `frequency_penalty` string, nullable
        - `presence_penalty` string, nullable
        - `echo` string, nullable
        - `logprobs` string, nullable
        - `top_logprobs` string, nullable
        - `n` string, nullable
        - `api_version` string, nullable
        - `tools` string, nullable
        - `tool_choice` string, nullable
        - `response_format` string, nullable
        - `reasoning_effort` string, nullable
        - `verbosity` string, nullable
        - `deployment_name` string, nullable
      - `output_map` OutputMap
        - `response` string, required
        - `token_count` string, nullable
        - `input_token_count` string, nullable
        - `output_token_count` string, nullable
        - `completion_reason` string, nullable
      - `input_map` InputMap
        - `prompt` string, required
        - `prefix` string
        - `suffix` string
  - `output_type` string, nullable
  - `name` union, required
    - string
    - Name — Global name class for handling unique naming across the application.
      - `value` string, required
      - `append_suffix_if_duplicate` boolean
  - `hidden` boolean

## Response `200`

Successful Response

- BasePromptTemplateResponse — Response from API to get a prompt template version.
  - `id` string, uuid4, required
  - `permissions` Permission[]
    - `action` union, required
      - 'update' | 'delete' | 'read_api_keys' | 'change_role_to_admin' | 'change_role_to_manager' | 'change_role_to_user' | 'change_role_to_read_only'
      - 'update' | 'list_members' | 'join' | 'request_to_join'
      - 'update_role' | 'delete'
      - 'update' | 'delete' | 'rename' | 'share' | 'create_run' | 'delete_run' | 'rename_run' | 'move_run' | 'export_data' | 'configure_human_feedback' | 'record_human_feedback' | 'log_data' | 'toggle_metric' | 'edit_alert' | 'create_stage' | 'edit_stage' | 'configure_crown_logic' | 'delete_data' | 'set_metric' | 'edit_run_tags' | 'dismiss_alert' | 'edit_slice' | 'edit_edit' | 'update_control_bindings' | 'use_control_runtime'
      - 'update' | 'delete' | 'share' | 'export' | 'autotune_apply'
      - 'update' | 'delete'
      - 'update' | 'delete'
      - 'update' | 'delete'
      - 'update' | 'delete'
      - 'update' | 'delete' | 'share' | 'export' | 'rename'
      - 'update' | 'delete' | 'share' | 'read_secrets'
      - 'rename' | 'delete' | 'delete_log_data' | 'read_settings' | 'update_settings' | 'read_cost_settings' | 'read_ai_usage'
      - 'update' | 'delete' | 'share' | 'record_annotation'
      - 'create' | 'read' | 'update' | 'delete' — Actions on Agent Control's org-scoped ``control`` resource.
    - `allowed` boolean, required
    - `message` string, nullable
  - `name` union, required
    - string
    - Name — Global name class for handling unique naming across the application.
      - `value` string, required
      - `append_suffix_if_duplicate` boolean
  - `template` string, required
  - `selected_version` BasePromptTemplateVersionResponse, required — Base response from API for a prompt template version.
    - `template` union, required
      - string
      - GalileoCoreSchemasSharedMessageMessage[]
        - `content` union, required
          - string
          - union[]
            - union
              - …
        - `role` union, required
          - string
          - 'agent' | 'assistant' | 'function' | 'system' | 'tool' | 'user'
    - `raw` boolean
    - `version` integer, required
    - `settings` PromptRunSettingsOutput, required — Prompt run settings.
      - `logprobs` boolean
      - `top_logprobs` integer
      - `echo` boolean
      - `n` integer
      - `reasoning_effort` string
      - `verbosity` string
      - `deployment_name` string, nullable
      - `model_alias` string
      - `temperature` number, nullable
      - `max_tokens` integer
      - `stop_sequences` string[], nullable
      - `top_p` number
      - `top_k` integer
      - `frequency_penalty` number
      - `presence_penalty` number
      - `tools` string
      - `tool_choice` union
        - string
        - OpenAIToolChoice
          - `type` string
          - `function` OpenAIFunction, required
            - `name` string, required
      - `response_format` object, nullable
    - `output_type` string, nullable
    - `id` string, uuid4, required
    - `model_changed` boolean, required
    - `lines_added` integer
    - `lines_edited` integer
    - `lines_removed` integer
    - `settings_changed` boolean, required
    - `content_changed` boolean, required
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
    - `created_by_user` UserInfo, required — A user's basic information, used for display purposes.
      - `id` string, uuid4, required
      - `email` string, required
      - `first_name` string, nullable
      - `last_name` string, nullable
  - `selected_version_id` string, uuid4, required
  - `all_versions` BasePromptTemplateVersionResponse[]
    - `template` union, required
      - string
      - GalileoCoreSchemasSharedMessageMessage[]
        - `content` union, required
          - string
          - union[]
            - union
              - …
        - `role` union, required
          - string
          - 'agent' | 'assistant' | 'function' | 'system' | 'tool' | 'user'
    - `raw` boolean
    - `version` integer, required
    - `settings` PromptRunSettingsOutput, required — Prompt run settings.
      - `logprobs` boolean
      - `top_logprobs` integer
      - `echo` boolean
      - `n` integer
      - `reasoning_effort` string
      - `verbosity` string
      - `deployment_name` string, nullable
      - `model_alias` string
      - `temperature` number, nullable
      - `max_tokens` integer
      - `stop_sequences` string[], nullable
      - `top_p` number
      - `top_k` integer
      - `frequency_penalty` number
      - `presence_penalty` number
      - `tools` string
      - `tool_choice` union
        - string
        - OpenAIToolChoice
          - `type` string
          - `function` OpenAIFunction, required
            - `name` string, required
      - `response_format` object, nullable
    - `output_type` string, nullable
    - `id` string, uuid4, required
    - `model_changed` boolean, required
    - `lines_added` integer
    - `lines_edited` integer
    - `lines_removed` integer
    - `settings_changed` boolean, required
    - `content_changed` boolean, required
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
    - `created_by_user` UserInfo, required — A user's basic information, used for display purposes.
      - `id` string, uuid4, required
      - `email` string, required
      - `first_name` string, nullable
      - `last_name` string, nullable
  - `all_available_versions` integer[], required
  - `total_versions` integer, required
  - `max_version` integer, required
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required
  - `created_by_user` UserInfo, required — A user's basic information, used for display purposes.
    - `id` string, uuid4, required
    - `email` string, required
    - `first_name` string, nullable
    - `last_name` string, nullable

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/galileo/apis/galileo-api-server.md) · [All operations](https://skmtc.net/galileo/apis/galileo-api-server/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/galileo/galileo-api-server/versions/933e8c8e6366/schema)
