> For the complete documentation index, see [llms.txt](https://docs.thewalletcrew.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.thewalletcrew.io/api-reference/advanced/email-templates.md).

# Email Templates

## List email templates for the tenant

> Returns every template id found under \`server/stripo/\` along with the cultures it has design\
> content for.

```json
{"openapi":"3.1.1","info":{"title":"Neostore internal API","version":"v1"},"tags":[{"name":"EmailTemplates"}],"servers":[{"url":"https://app.neostore.cloud","description":"Production Server"},{"url":"https://app-qa.neostore.cloud","description":"Staging Server"}],"security":[{"admin-bearer":["tenant.configuration.emailTemplate:read"]},{"apiKey":[]}],"components":{"securitySchemes":{"admin-bearer":{"type":"oauth2","flows":{"implicit":{"authorizationUrl":"https://auth.neostore.cloud/authorize?audience=https://app.neostore.cloud/api/","scopes":{}}}},"apiKey":{"type":"apiKey","name":"X-API-KEY","in":"header"}},"schemas":{"EmailTemplateListItem":{"required":["cultures","id"],"type":"object","properties":{"id":{"type":"string","description":"Template identifier."},"cultures":{"type":"array","items":{"type":"string"},"description":"Cultures for which this template has design content."}},"additionalProperties":false,"description":"Email template returned by the list endpoint."}}},"paths":{"/api/{tenantId}/admin/emailTemplates":{"get":{"tags":["EmailTemplates"],"summary":"List email templates for the tenant","description":"Returns every template id found under `server/stripo/` along with the cultures it has design\ncontent for.","parameters":[{"name":"tenantId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Email templates returned.","content":{"text/plain":{"schema":{"type":"array","items":{"description":"Email template returned by the list endpoint.","$ref":"#/components/schemas/EmailTemplateListItem"}}},"application/json":{"schema":{"type":"array","items":{"description":"Email template returned by the list endpoint.","$ref":"#/components/schemas/EmailTemplateListItem"}}},"text/json":{"schema":{"type":"array","items":{"description":"Email template returned by the list endpoint.","$ref":"#/components/schemas/EmailTemplateListItem"}}}}}}}}}}
```

## Create a new email template

> Creates the design source (and, if provided, the compiled subject/body) for one or more cultures of a\
> new template. To duplicate an existing template, \`GET\` its content first and \`POST\` it back\
> under a new id (or a new culture) here — there is no dedicated duplicate endpoint.

```json
{"openapi":"3.1.1","info":{"title":"Neostore internal API","version":"v1"},"tags":[{"name":"EmailTemplates"}],"servers":[{"url":"https://app.neostore.cloud","description":"Production Server"},{"url":"https://app-qa.neostore.cloud","description":"Staging Server"}],"security":[{"admin-bearer":["tenant.configuration.emailTemplate:write"]},{"apiKey":[]}],"components":{"securitySchemes":{"admin-bearer":{"type":"oauth2","flows":{"implicit":{"authorizationUrl":"https://auth.neostore.cloud/authorize?audience=https://app.neostore.cloud/api/","scopes":{}}}},"apiKey":{"type":"apiKey","name":"X-API-KEY","in":"header"}},"schemas":{"CreateEmailTemplateRequest":{"required":["cultures","id"],"type":"object","properties":{"id":{"minLength":1,"type":"string","description":"Template identifier. Only alphanumeric characters, hyphens, underscores, dots and spaces are\nallowed, up to 50 characters."},"cultures":{"type":"object","additionalProperties":{"description":"Design source and compiled content of a single template culture.","$ref":"#/components/schemas/EmailTemplateCultureContent"},"description":"Content for one or more cultures, keyed by culture code."}},"additionalProperties":false,"description":"Request body to create a new email template."},"EmailTemplateCultureContent":{"required":["css","html"],"type":"object","properties":{"html":{"type":"string","description":"Stripo-designed HTML source."},"css":{"type":"string","description":"Stripo-designed CSS source."},"subject":{"type":["null","string"],"description":"Compiled email subject actually used to send mail. Null when the template has never been\nsaved from the Stripo editor for this culture (design source exists but is not yet compiled)."},"body":{"type":["null","string"],"description":"Compiled email body (HTML, with DotLiquid placeholders) actually used to send mail. Null when the\ntemplate has never been saved from the Stripo editor for this culture."}},"additionalProperties":false,"description":"Design source and compiled content of a single template culture."},"EmailTemplateDefinition":{"required":["cultures","id"],"type":"object","properties":{"id":{"type":"string","description":"Template identifier."},"cultures":{"type":"object","additionalProperties":{"description":"Design source and compiled content of a single template culture.","$ref":"#/components/schemas/EmailTemplateCultureContent"},"description":"Content for every culture this template has, keyed by culture code."}},"additionalProperties":false,"description":"Full definition of an email template, returned by get/create/save endpoints."},"ProblemDetails":{"type":"object","properties":{"type":{"type":["null","string"]},"title":{"type":["null","string"]},"status":{"type":["null","integer"],"format":"int32"},"detail":{"type":["null","string"]},"instance":{"type":["null","string"]}},"additionalProperties":{}},"HttpValidationProblemDetails":{"type":"object","allOf":[{"$ref":"#/components/schemas/ProblemDetails"}],"properties":{"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}},"additionalProperties":{}}}},"paths":{"/api/{tenantId}/admin/emailTemplates":{"post":{"tags":["EmailTemplates"],"summary":"Create a new email template","description":"Creates the design source (and, if provided, the compiled subject/body) for one or more cultures of a\nnew template. To duplicate an existing template, `GET` its content first and `POST` it back\nunder a new id (or a new culture) here — there is no dedicated duplicate endpoint.","parameters":[{"name":"tenantId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"description":"Request body to create a new email template.","$ref":"#/components/schemas/CreateEmailTemplateRequest"}},"text/json":{"schema":{"description":"Request body to create a new email template.","$ref":"#/components/schemas/CreateEmailTemplateRequest"}},"application/*+json":{"schema":{"description":"Request body to create a new email template.","$ref":"#/components/schemas/CreateEmailTemplateRequest"}}},"required":true},"responses":{"201":{"description":"Email template created.","content":{"text/plain":{"schema":{"description":"Full definition of an email template, returned by get/create/save endpoints.","$ref":"#/components/schemas/EmailTemplateDefinition"}},"application/json":{"schema":{"description":"Full definition of an email template, returned by get/create/save endpoints.","$ref":"#/components/schemas/EmailTemplateDefinition"}},"text/json":{"schema":{"description":"Full definition of an email template, returned by get/create/save endpoints.","$ref":"#/components/schemas/EmailTemplateDefinition"}}}},"400":{"description":"Id or culture is invalid, or no culture was provided.","content":{"text/plain":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"text/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}},"409":{"description":"A template with this id already exists.","content":{"text/plain":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"text/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}}}}}}}
```

## Get an email template

> Returns the design source (HTML/CSS) and, when available, the compiled subject/body for every culture\
> of the template identified by id.

```json
{"openapi":"3.1.1","info":{"title":"Neostore internal API","version":"v1"},"tags":[{"name":"EmailTemplates"}],"servers":[{"url":"https://app.neostore.cloud","description":"Production Server"},{"url":"https://app-qa.neostore.cloud","description":"Staging Server"}],"security":[{"admin-bearer":["tenant.configuration.emailTemplate:read"]},{"apiKey":[]}],"components":{"securitySchemes":{"admin-bearer":{"type":"oauth2","flows":{"implicit":{"authorizationUrl":"https://auth.neostore.cloud/authorize?audience=https://app.neostore.cloud/api/","scopes":{}}}},"apiKey":{"type":"apiKey","name":"X-API-KEY","in":"header"}},"schemas":{"EmailTemplateDefinition":{"required":["cultures","id"],"type":"object","properties":{"id":{"type":"string","description":"Template identifier."},"cultures":{"type":"object","additionalProperties":{"description":"Design source and compiled content of a single template culture.","$ref":"#/components/schemas/EmailTemplateCultureContent"},"description":"Content for every culture this template has, keyed by culture code."}},"additionalProperties":false,"description":"Full definition of an email template, returned by get/create/save endpoints."},"EmailTemplateCultureContent":{"required":["css","html"],"type":"object","properties":{"html":{"type":"string","description":"Stripo-designed HTML source."},"css":{"type":"string","description":"Stripo-designed CSS source."},"subject":{"type":["null","string"],"description":"Compiled email subject actually used to send mail. Null when the template has never been\nsaved from the Stripo editor for this culture (design source exists but is not yet compiled)."},"body":{"type":["null","string"],"description":"Compiled email body (HTML, with DotLiquid placeholders) actually used to send mail. Null when the\ntemplate has never been saved from the Stripo editor for this culture."}},"additionalProperties":false,"description":"Design source and compiled content of a single template culture."},"ProblemDetails":{"type":"object","properties":{"type":{"type":["null","string"]},"title":{"type":["null","string"]},"status":{"type":["null","integer"],"format":"int32"},"detail":{"type":["null","string"]},"instance":{"type":["null","string"]}},"additionalProperties":{}},"HttpValidationProblemDetails":{"type":"object","allOf":[{"$ref":"#/components/schemas/ProblemDetails"}],"properties":{"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}},"additionalProperties":{}}}},"paths":{"/api/{tenantId}/admin/emailTemplates/{id}":{"get":{"tags":["EmailTemplates"],"summary":"Get an email template","description":"Returns the design source (HTML/CSS) and, when available, the compiled subject/body for every culture\nof the template identified by id.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"tenantId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Email template returned.","content":{"text/plain":{"schema":{"description":"Full definition of an email template, returned by get/create/save endpoints.","$ref":"#/components/schemas/EmailTemplateDefinition"}},"application/json":{"schema":{"description":"Full definition of an email template, returned by get/create/save endpoints.","$ref":"#/components/schemas/EmailTemplateDefinition"}},"text/json":{"schema":{"description":"Full definition of an email template, returned by get/create/save endpoints.","$ref":"#/components/schemas/EmailTemplateDefinition"}}}},"404":{"description":"Email template not found.","content":{"text/plain":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"text/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}}}}}}}
```

## Save an email template

> Upserts the design source (and, if provided, the compiled subject/body) for one or more cultures of an\
> existing template. Cultures not present in the request body are left untouched.

```json
{"openapi":"3.1.1","info":{"title":"Neostore internal API","version":"v1"},"tags":[{"name":"EmailTemplates"}],"servers":[{"url":"https://app.neostore.cloud","description":"Production Server"},{"url":"https://app-qa.neostore.cloud","description":"Staging Server"}],"security":[{"admin-bearer":["tenant.configuration.emailTemplate:write"]},{"apiKey":[]}],"components":{"securitySchemes":{"admin-bearer":{"type":"oauth2","flows":{"implicit":{"authorizationUrl":"https://auth.neostore.cloud/authorize?audience=https://app.neostore.cloud/api/","scopes":{}}}},"apiKey":{"type":"apiKey","name":"X-API-KEY","in":"header"}},"schemas":{"SaveEmailTemplateRequest":{"required":["cultures"],"type":"object","properties":{"cultures":{"type":"object","additionalProperties":{"description":"Design source and compiled content of a single template culture.","$ref":"#/components/schemas/EmailTemplateCultureContent"},"description":"Content to upsert, keyed by culture code. Cultures not present in this map are left untouched."}},"additionalProperties":false,"description":"Request body to save (create or update) culture content on an existing email template."},"EmailTemplateCultureContent":{"required":["css","html"],"type":"object","properties":{"html":{"type":"string","description":"Stripo-designed HTML source."},"css":{"type":"string","description":"Stripo-designed CSS source."},"subject":{"type":["null","string"],"description":"Compiled email subject actually used to send mail. Null when the template has never been\nsaved from the Stripo editor for this culture (design source exists but is not yet compiled)."},"body":{"type":["null","string"],"description":"Compiled email body (HTML, with DotLiquid placeholders) actually used to send mail. Null when the\ntemplate has never been saved from the Stripo editor for this culture."}},"additionalProperties":false,"description":"Design source and compiled content of a single template culture."},"EmailTemplateDefinition":{"required":["cultures","id"],"type":"object","properties":{"id":{"type":"string","description":"Template identifier."},"cultures":{"type":"object","additionalProperties":{"description":"Design source and compiled content of a single template culture.","$ref":"#/components/schemas/EmailTemplateCultureContent"},"description":"Content for every culture this template has, keyed by culture code."}},"additionalProperties":false,"description":"Full definition of an email template, returned by get/create/save endpoints."},"ProblemDetails":{"type":"object","properties":{"type":{"type":["null","string"]},"title":{"type":["null","string"]},"status":{"type":["null","integer"],"format":"int32"},"detail":{"type":["null","string"]},"instance":{"type":["null","string"]}},"additionalProperties":{}},"HttpValidationProblemDetails":{"type":"object","allOf":[{"$ref":"#/components/schemas/ProblemDetails"}],"properties":{"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}},"additionalProperties":{}}}},"paths":{"/api/{tenantId}/admin/emailTemplates/{id}":{"put":{"tags":["EmailTemplates"],"summary":"Save an email template","description":"Upserts the design source (and, if provided, the compiled subject/body) for one or more cultures of an\nexisting template. Cultures not present in the request body are left untouched.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"tenantId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"description":"Request body to save (create or update) culture content on an existing email template.","$ref":"#/components/schemas/SaveEmailTemplateRequest"}},"text/json":{"schema":{"description":"Request body to save (create or update) culture content on an existing email template.","$ref":"#/components/schemas/SaveEmailTemplateRequest"}},"application/*+json":{"schema":{"description":"Request body to save (create or update) culture content on an existing email template.","$ref":"#/components/schemas/SaveEmailTemplateRequest"}}},"required":true},"responses":{"200":{"description":"Email template saved.","content":{"text/plain":{"schema":{"description":"Full definition of an email template, returned by get/create/save endpoints.","$ref":"#/components/schemas/EmailTemplateDefinition"}},"application/json":{"schema":{"description":"Full definition of an email template, returned by get/create/save endpoints.","$ref":"#/components/schemas/EmailTemplateDefinition"}},"text/json":{"schema":{"description":"Full definition of an email template, returned by get/create/save endpoints.","$ref":"#/components/schemas/EmailTemplateDefinition"}}}},"400":{"description":"A culture is invalid, or no culture was provided.","content":{"text/plain":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"text/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}},"404":{"description":"Email template not found.","content":{"text/plain":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"text/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}}}}}}}
```

## Delete an email template

> Deletes the design source and compiled subject/body for the specified culture. When\
> culture is omitted, deletes every culture of the template.

```json
{"openapi":"3.1.1","info":{"title":"Neostore internal API","version":"v1"},"tags":[{"name":"EmailTemplates"}],"servers":[{"url":"https://app.neostore.cloud","description":"Production Server"},{"url":"https://app-qa.neostore.cloud","description":"Staging Server"}],"security":[{"admin-bearer":["tenant.configuration.emailTemplate:write"]},{"apiKey":[]}],"components":{"securitySchemes":{"admin-bearer":{"type":"oauth2","flows":{"implicit":{"authorizationUrl":"https://auth.neostore.cloud/authorize?audience=https://app.neostore.cloud/api/","scopes":{}}}},"apiKey":{"type":"apiKey","name":"X-API-KEY","in":"header"}},"schemas":{"ProblemDetails":{"type":"object","properties":{"type":{"type":["null","string"]},"title":{"type":["null","string"]},"status":{"type":["null","integer"],"format":"int32"},"detail":{"type":["null","string"]},"instance":{"type":["null","string"]}},"additionalProperties":{}},"HttpValidationProblemDetails":{"type":"object","allOf":[{"$ref":"#/components/schemas/ProblemDetails"}],"properties":{"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}},"additionalProperties":{}}}},"paths":{"/api/{tenantId}/admin/emailTemplates/{id}":{"delete":{"tags":["EmailTemplates"],"summary":"Delete an email template","description":"Deletes the design source and compiled subject/body for the specified culture. When\nculture is omitted, deletes every culture of the template.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"culture","in":"query","schema":{"type":"string"}},{"name":"tenantId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Email template (or culture) deleted."},"400":{"description":"Culture is invalid.","content":{"text/plain":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"text/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}},"404":{"description":"Email template (or culture) not found.","content":{"text/plain":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}},"text/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetails"},{"$ref":"#/components/schemas/HttpValidationProblemDetails"}]}}}}}}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.thewalletcrew.io/api-reference/advanced/email-templates.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
