Skip to main content

Create Prompt Template

Sprint 3

Create a new prompt template with parameterization.

Endpoint

POST /api/v1/prompt-templates

Headers

HeaderRequiredDescription
AuthorizationYesBearer <access_token>
Content-TypeYesapplication/json

Request Body

{
"name": "Sales Report Template",
"description": "Template for generating sales reports",
"template_text": "Show me {{metric}} for {{time_period}}",
"parameters": [
{
"name": "metric",
"type": "string",
"required": true,
"description": "Metric to report on"
},
{
"name": "time_period",
"type": "string",
"required": true,
"default": "last_30_days"
}
],
"category": "reports",
"tags": ["sales", "report"],
"icon_url": "https://example.com/icon.png",
"compatible_data_source_ids": [1, 2],
"status": "published",
"is_public": true
}

Parameters

FieldTypeRequiredDescription
namestringYesTemplate name (1-255 characters)
descriptionstringNoTemplate description (max 500 characters)
template_textstringYesTemplate text with placeholders like {{param}} (min length: 1)
parametersarray[object]NoTemplate parameter definitions
categorystringYesTemplate category (1-100 characters)
tagsarray[string]NoTags for categorization
icon_urlstringNoIcon file path or URL (max 512 characters)
compatible_data_source_idsarray[integer]YesList of compatible data source IDs (min length: 1)
statusstringNoTemplate status: "draft" or "published" (default: "draft")
is_publicbooleanNoShareable within organization (default: false)

Parameter Object

FieldTypeRequiredDescription
namestringYesParameter name
typestringYesParameter type
requiredbooleanNoRequired flag (default: true)
defaultanyNoDefault value
descriptionstringNoParameter description

Response

Success (201)

{
"success": true,
"data": {
"id": 1,
"organization_id": 1,
"name": "Sales Report Template",
"description": "Template for generating sales reports",
"template_text": "Show me {{metric}} for {{time_period}}",
"parameters": [...],
"category": "reports",
"tags": ["sales", "report"],
"status": "published",
"compatible_data_source_ids": [1, 2],
"is_system_template": false,
"is_public": true,
"usage_count": 0,
"created_by_user_id": 1,
"created_at": "2024-12-01T08:00:00Z"
},
"message": "Prompt template created successfully"
}

Error Codes

StatusCodeDescription
400BAD_REQUESTInvalid request data
401UNAUTHORIZEDInvalid or missing authentication token
500INTERNAL_SERVER_ERRORInternal server error

Template Syntax

  • Use {{param_name}} for parameter placeholders
  • Parameters are replaced with actual values during execution
  • Example: "Show me {{metric}} for {{time_period}}" becomes "Show me sales for last_30_days"

Features

  • Parameterized templates
  • Category organization
  • Public/private sharing
  • Compatible data source specification
  • Organization-scoped

Example

curl -X POST "https://api.rivergen.com/api/v1/prompt-templates" \
-H "Authorization: Bearer <access_token>" \
-H "Content-Type: application/json" \
-d '{
"name": "Sales Report Template",
"template_text": "Show me {{metric}} for {{time_period}}",
"category": "reports",
"compatible_data_source_ids": [1, 2]
}'