openapi: 3.0.1 info: title: Speak description: Learn how to say anything in another language with Speak, your AI-powered language tutor. version: 'v1' servers: - url: https://api.speak.com paths: /v1/public/openai/translate: post: operationId: translate summary: Translate and explain how to say a specific phrase or word in another language. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/translateRequest' responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/translateResponse' /v1/public/openai/explain-phrase: post: operationId: explainPhrase summary: Explain the meaning and usage of a specific foreign language phrase that the user is asking about. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/explainPhraseRequest' responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/explainPhraseResponse' /v1/public/openai/explain-task: post: operationId: explainTask summary: Explain the best way to say or do something in a specific situation or context with a foreign language. Use this endpoint when the user asks more general or high-level questions. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/explainTaskRequest' responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/explainTaskResponse' components: schemas: translateRequest: type: object required: - phrase_to_translate - learning_language - native_language - additional_context - full_query properties: phrase_to_translate: type: string description: Phrase or concept to translate into the foreign language and explain further. learning_language: type: string description: The foreign language that the user is learning and asking about. Always use the full name of the language (e.g. Spanish, French). native_language: type: string description: The user's native language. Infer this value from the language the user asked their question in. Always use the full name of the language (e.g. Spanish, French). additional_context: type: string description: A description of any additional context in the user's question that could affect the explanation - e.g. setting, scenario, situation, tone, speaking style and formality, usage notes, or any other qualifiers. full_query: type: string description: Full text of the user's question. translateResponse: type: object properties: explanation: type: string description: An explanation of how to say the input phrase in the foreign language. explainPhraseRequest: type: object required: - foreign_phrase - learning_language - native_language - additional_context - full_query properties: foreign_phrase: type: string description: Foreign language phrase or word that the user wants an explanation for. learning_language: type: string description: The language that the user is asking their language question about. The value can be inferred from question - e.g. for "Somebody said no mames to me, what does that mean", the value should be "Spanish" because "no mames" is a Spanish phrase. Always use the full name of the language (e.g. Spanish, French). native_language: type: string description: The user's native language. Infer this value from the language the user asked their question in. Always use the full name of the language (e.g. Spanish, French). additional_context: type: string description: A description of any additional context in the user's question that could affect the explanation - e.g. setting, scenario, situation, tone, speaking style and formality, usage notes, or any other qualifiers. full_query: type: string description: Full text of the user's question. explainPhraseResponse: type: object properties: explanation: type: string description: An explanation of what the foreign language phrase means, and when you might use it. explainTaskRequest: type: object required: - task_description - learning_language - native_language - additional_context - full_query properties: task_description: type: string description: Description of the task that the user wants to accomplish or do. For example, "tell the waiter they messed up my order" or "compliment someone on their shirt" learning_language: type: string description: The foreign language that the user is learning and asking about. The value can be inferred from question - for example, if the user asks "how do i ask a girl out in mexico city", the value should be "Spanish" because of Mexico City. Always use the full name of the language (e.g. Spanish, French). native_language: type: string description: The user's native language. Infer this value from the language the user asked their question in. Always use the full name of the language (e.g. Spanish, French). additional_context: type: string description: A description of any additional context in the user's question that could affect the explanation - e.g. setting, scenario, situation, tone, speaking style and formality, usage notes, or any other qualifiers. full_query: type: string description: Full text of the user's question. explainTaskResponse: type: object properties: explanation: type: string description: An explanation of the best thing to say in the foreign language to accomplish the task described in the user's question.