{"openapi":"3.1.0","info":{"title":"Interactly API","description":"API for building interactly.ai services","version":"1.1.0","contact":{"name":"Interactly","url":"https://interactly.ai","email":"developers@interactly.ai"}},"servers":[{"url":"https://api-qa.interactly.ai","description":"API Server"}],"paths":{"/prompts/v1/prompts":{"post":{"tags":["Prompts"],"summary":"Create Prompt","description":"Endpoint to create a new prompt.","operationId":"prompt_service_create_prompt_v1_prompts_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptsModel-Input"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"bearer":[]}]},"get":{"tags":["Prompts"],"summary":"List Prompts","description":"Endpoint to retrieve prompts for a specific team with optional\npagination and search.","operationId":"prompt_service_list_prompts_v1_prompts_get","parameters":[{"name":"size","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Number of items per page","default":300,"title":"Size"},"description":"Number of items per page"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search keywords","title":"Search"},"description":"Search keywords"},{"name":"start","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Filter by start time (ISO 8601 format)","title":"Start"},"description":"Filter by start time (ISO 8601 format)"},{"name":"end","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Filter by end time (ISO 8601 format)","title":"End"},"description":"Filter by end time (ISO 8601 format)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptsListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"bearer":[]}]}},"/prompts/v1/prompts/{prompt_id}":{"get":{"tags":["Prompts"],"summary":"Get Prompt By Id","description":"Endpoint to retrieve a specific prompt by ID.","operationId":"prompt_service_get_prompt_by_id_v1_prompts__prompt_id__get","parameters":[{"name":"prompt_id","in":"path","required":true,"schema":{"type":"string","minLength":24,"maxLength":24,"pattern":"^[0-9a-f]{24}$","example":"5eb7cf5a86d9755df3a6c593","title":"Prompt Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"bearer":[]}]},"put":{"tags":["Prompts"],"summary":"Update Prompt","description":"Endpoint to update a specific prompt.","operationId":"prompt_service_update_prompt_v1_prompts__prompt_id__put","parameters":[{"name":"prompt_id","in":"path","required":true,"schema":{"type":"string","minLength":24,"maxLength":24,"pattern":"^[0-9a-f]{24}$","example":"5eb7cf5a86d9755df3a6c593","title":"Prompt Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"bearer":[]}]},"delete":{"tags":["Prompts"],"summary":"Delete Prompt By Id","description":"Endpoint to delete a specific prompt.","operationId":"prompt_service_delete_prompt_by_id_v1_prompts__prompt_id__delete","parameters":[{"name":"prompt_id","in":"path","required":true,"schema":{"type":"string","minLength":24,"maxLength":24,"pattern":"^[0-9a-f]{24}$","example":"5eb7cf5a86d9755df3a6c593","title":"Prompt Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"bearer":[]}]}},"/prompts/v1/generate":{"post":{"tags":["Prompts"],"summary":"Generate Prompt","description":"Endpoint to geterate a new prompt prompt given context.","operationId":"prompt_service_generate_prompt_v1_generate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptGeneration"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"bearer":[]}]}},"/prompts/v1/voice-persona":{"post":{"tags":["Prompts"],"summary":"Generate Voice Persona","description":"Write the short voice persona for an assistant, from its own system prompt.\n\nA speech-to-speech model that delegates reads two prompts: the full system prompt goes to the\nmodel doing the thinking, and is consulted only on the turns handed to it. The voice model\nanswers the rest itself — about four turns in five on real calls — and reads this instead.\nWithout it those turns come out as a generic chatbot.\n\nWritten by default with the model the voice session delegates to, so the persona is written by\nthe same model that will be answering beside it.","operationId":"prompt_service_generate_voice_persona_v1_voice_persona_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoicePersonaGeneration"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"bearer":[]}]}}},"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"Bearer","type":"http","description":"Retrieve your API Key from [Dashboard API Keys Section](https://dashboard-qa.interactly.ai/api-keys)."}},"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"PromptGeneration":{"properties":{"context":{"type":"string","title":"Context","description":"The context to generate the prompt from"}},"type":"object","required":["context"],"title":"PromptGeneration"},"PromptsListResponse":{"properties":{"message":{"type":"string","title":"Message","description":"A message indicating the response type.","default":"List of prompts data"},"data":{"items":{"$ref":"#/components/schemas/PromptsModel-Output"},"type":"array","title":"Data"},"total":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total","description":"Total number of prompts available without pagination."}},"type":"object","required":["data"],"title":"PromptsListResponse","description":"Response model for a list of prompts data.\nContains a list of PromptsDataModel objects."},"PromptsModel-Input":{"properties":{"teamId":{"anyOf":[{"type":"string","maxLength":24,"minLength":24,"pattern":"^[0-9a-f]{24}$","example":"5eb7cf5a86d9755df3a6c593"},{"type":"null"}],"title":"Teamid","description":"ID of the team that owns this record"},"createdBy":{"anyOf":[{"type":"string","maxLength":24,"minLength":24,"pattern":"^[0-9a-f]{24}$","example":"5eb7cf5a86d9755df3a6c593"},{"type":"null"}],"title":"Createdby","description":"ID of the user who created this record"},"updatedBy":{"anyOf":[{"type":"string","maxLength":24,"minLength":24,"pattern":"^[0-9a-f]{24}$","example":"5eb7cf5a86d9755df3a6c593"},{"type":"null"}],"title":"Updatedby","description":"ID of the user who last updated this record"},"createdAt":{"type":"string","format":"date-time","title":"Createdat"},"updatedAt":{"type":"string","format":"date-time","title":"Updatedat"},"_id":{"anyOf":[{"type":"string","maxLength":24,"minLength":24,"pattern":"^[0-9a-f]{24}$","example":"5eb7cf5a86d9755df3a6c593"},{"type":"null"}],"title":"Id","description":"MongoDB document ObjectID"},"title":{"type":"string","title":"Title","description":"The title of the prompt."},"prompt":{"type":"string","title":"Prompt","description":"The text/content of the prompt. Can be very long."},"dynamicVariables":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Dynamicvariables","description":"A dictionary of dynamic variables used in the prompt."},"variablesValidations":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Variablesvalidations","description":"Variable Validations for dynamic variables in the prompt."}},"type":"object","required":["title","prompt"],"title":"PromptsModel","description":"Model representing a prompt configuration with dynamic variables."},"PromptsModel-Output":{"properties":{"teamId":{"anyOf":[{"type":"string","example":"5eb7cf5a86d9755df3a6c593"},{"type":"null"}],"title":"Teamid","description":"ID of the team that owns this record"},"createdBy":{"anyOf":[{"type":"string","example":"5eb7cf5a86d9755df3a6c593"},{"type":"null"}],"title":"Createdby","description":"ID of the user who created this record"},"updatedBy":{"anyOf":[{"type":"string","example":"5eb7cf5a86d9755df3a6c593"},{"type":"null"}],"title":"Updatedby","description":"ID of the user who last updated this record"},"createdAt":{"type":"string","format":"date-time","title":"Createdat"},"updatedAt":{"type":"string","format":"date-time","title":"Updatedat"},"_id":{"anyOf":[{"type":"string","example":"5eb7cf5a86d9755df3a6c593"},{"type":"null"}],"title":"Id","description":"MongoDB document ObjectID"},"title":{"type":"string","title":"Title","description":"The title of the prompt."},"prompt":{"type":"string","title":"Prompt","description":"The text/content of the prompt. Can be very long."},"dynamicVariables":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Dynamicvariables","description":"A dictionary of dynamic variables used in the prompt."},"variablesValidations":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Variablesvalidations","description":"Variable Validations for dynamic variables in the prompt."}},"type":"object","required":["title","prompt"],"title":"PromptsModel","description":"Model representing a prompt configuration with dynamic variables."},"PromptsResponse":{"properties":{"data":{"$ref":"#/components/schemas/PromptsModel-Output"},"message":{"type":"string","title":"Message","description":"A message indicating the response type.","default":"Prompt data retrieved successfully"}},"type":"object","required":["data"],"title":"PromptsResponse","description":"Response model for a single prompt data.\nContains a PromptsDataModel object."},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VoicePersonaGeneration":{"properties":{"systemPrompt":{"type":"string","title":"Systemprompt","description":"The assistant's full system prompt, to derive the voice persona from"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"Model to write the persona with. Defaults to the model a GPT-Live session delegates its thinking to, so the persona is written by the same model that will answer beside it."}},"type":"object","required":["systemPrompt"],"title":"VoicePersonaGeneration"}}}}