cURL
curl \
-X POST 'MEILISEARCH_URL/render-template' \
-H 'Content-Type: application/json' \
--data-binary '{
"template": {
"kind": "inlineDocumentTemplate",
"inline": "A document template rendered on {{doc.id}}"
},
"input": {
"kind": "inlineDocument",
"inline": { "id": "this document" }
}
}'import requests
url = "http://localhost:7700/render-template"
payload = {
"template": {
"indexUid": "movies",
"embedder": "<string>",
"fragment": "<string>",
"inline": "<unknown>",
"documentTemplateMaxBytes": 1
},
"input": {
"indexUid": "movies",
"id": "<string>",
"inline": "<unknown>"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
template: {
indexUid: 'movies',
embedder: '<string>',
fragment: '<string>',
inline: '<unknown>',
documentTemplateMaxBytes: 1
},
input: {indexUid: 'movies', id: '<string>', inline: '<unknown>'}
})
};
fetch('http://localhost:7700/render-template', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "7700",
CURLOPT_URL => "http://localhost:7700/render-template",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'template' => [
'indexUid' => 'movies',
'embedder' => '<string>',
'fragment' => '<string>',
'inline' => '<unknown>',
'documentTemplateMaxBytes' => 1
],
'input' => [
'indexUid' => 'movies',
'id' => '<string>',
'inline' => '<unknown>'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "http://localhost:7700/render-template"
payload := strings.NewReader("{\n \"template\": {\n \"indexUid\": \"movies\",\n \"embedder\": \"<string>\",\n \"fragment\": \"<string>\",\n \"inline\": \"<unknown>\",\n \"documentTemplateMaxBytes\": 1\n },\n \"input\": {\n \"indexUid\": \"movies\",\n \"id\": \"<string>\",\n \"inline\": \"<unknown>\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("http://localhost:7700/render-template")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"template\": {\n \"indexUid\": \"movies\",\n \"embedder\": \"<string>\",\n \"fragment\": \"<string>\",\n \"inline\": \"<unknown>\",\n \"documentTemplateMaxBytes\": 1\n },\n \"input\": {\n \"indexUid\": \"movies\",\n \"id\": \"<string>\",\n \"inline\": \"<unknown>\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:7700/render-template")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"template\": {\n \"indexUid\": \"movies\",\n \"embedder\": \"<string>\",\n \"fragment\": \"<string>\",\n \"inline\": \"<unknown>\",\n \"documentTemplateMaxBytes\": 1\n },\n \"input\": {\n \"indexUid\": \"movies\",\n \"id\": \"<string>\",\n \"inline\": \"<unknown>\"\n }\n}"
response = http.request(request)
puts response.read_body{
"template": "{{ doc.breed }} called {{ doc.name }}",
"rendered": "A Jack Russell called Iko"
}{
"message": "cannot find embedder `default` in index `movies`",
"code": "invalid_render_template",
"type": "invalid_request",
"link": "https://docs.meilisearch.com/errors#invalid_render_template_id"
}{
"message": "The Authorization header is missing. It must use the bearer authorization method.",
"code": "missing_authorization_header",
"type": "auth",
"link": "https://docs.meilisearch.com/errors#missing_authorization_header"
}{
"message": "Document with ID `9999` not found in index `movies`.",
"code": "render_document_not_found",
"type": "invalid_request",
"link": "https://docs.meilisearch.com/errors#render_document_not_found"
}Template
Render documents with POST
POST
/
render-template
cURL
curl \
-X POST 'MEILISEARCH_URL/render-template' \
-H 'Content-Type: application/json' \
--data-binary '{
"template": {
"kind": "inlineDocumentTemplate",
"inline": "A document template rendered on {{doc.id}}"
},
"input": {
"kind": "inlineDocument",
"inline": { "id": "this document" }
}
}'import requests
url = "http://localhost:7700/render-template"
payload = {
"template": {
"indexUid": "movies",
"embedder": "<string>",
"fragment": "<string>",
"inline": "<unknown>",
"documentTemplateMaxBytes": 1
},
"input": {
"indexUid": "movies",
"id": "<string>",
"inline": "<unknown>"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
template: {
indexUid: 'movies',
embedder: '<string>',
fragment: '<string>',
inline: '<unknown>',
documentTemplateMaxBytes: 1
},
input: {indexUid: 'movies', id: '<string>', inline: '<unknown>'}
})
};
fetch('http://localhost:7700/render-template', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "7700",
CURLOPT_URL => "http://localhost:7700/render-template",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'template' => [
'indexUid' => 'movies',
'embedder' => '<string>',
'fragment' => '<string>',
'inline' => '<unknown>',
'documentTemplateMaxBytes' => 1
],
'input' => [
'indexUid' => 'movies',
'id' => '<string>',
'inline' => '<unknown>'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "http://localhost:7700/render-template"
payload := strings.NewReader("{\n \"template\": {\n \"indexUid\": \"movies\",\n \"embedder\": \"<string>\",\n \"fragment\": \"<string>\",\n \"inline\": \"<unknown>\",\n \"documentTemplateMaxBytes\": 1\n },\n \"input\": {\n \"indexUid\": \"movies\",\n \"id\": \"<string>\",\n \"inline\": \"<unknown>\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("http://localhost:7700/render-template")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"template\": {\n \"indexUid\": \"movies\",\n \"embedder\": \"<string>\",\n \"fragment\": \"<string>\",\n \"inline\": \"<unknown>\",\n \"documentTemplateMaxBytes\": 1\n },\n \"input\": {\n \"indexUid\": \"movies\",\n \"id\": \"<string>\",\n \"inline\": \"<unknown>\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:7700/render-template")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"template\": {\n \"indexUid\": \"movies\",\n \"embedder\": \"<string>\",\n \"fragment\": \"<string>\",\n \"inline\": \"<unknown>\",\n \"documentTemplateMaxBytes\": 1\n },\n \"input\": {\n \"indexUid\": \"movies\",\n \"id\": \"<string>\",\n \"inline\": \"<unknown>\"\n }\n}"
response = http.request(request)
puts response.read_body{
"template": "{{ doc.breed }} called {{ doc.name }}",
"rendered": "A Jack Russell called Iko"
}{
"message": "cannot find embedder `default` in index `movies`",
"code": "invalid_render_template",
"type": "invalid_request",
"link": "https://docs.meilisearch.com/errors#invalid_render_template_id"
}{
"message": "The Authorization header is missing. It must use the bearer authorization method.",
"code": "missing_authorization_header",
"type": "auth",
"link": "https://docs.meilisearch.com/errors#missing_authorization_header"
}{
"message": "Document with ID `9999` not found in index `movies`.",
"code": "render_document_not_found",
"type": "invalid_request",
"link": "https://docs.meilisearch.com/errors#render_document_not_found"
}Authorizations
An API key is a token that you provide when making API calls. Read more about how to secure your project.
Include the API key to the Authorization header, for instance:
-H 'Authorization: Bearer 6436fc5237b0d6e0d64253fbaac21d135012ecf1'
If you use a SDK, ensure you instantiate the client with the API key, for instance with JS SDK:
const client = new MeiliSearch({
host: 'MEILISEARCH_URL',
apiKey: '6436fc5237b0d6e0d64253fbaac21d135012ecf1'
});
Body
application/json
Template/fragment to fetch for rendering.
Use its kind parameter to determine the type of template or fragment to fetch.
Show child attributes
Show child attributes
Input for the template to fetch.
Input is injected in the template to render the final string/JSON object.
If null or missing, the template will not be rendered.
Use its kind parameter to determine the type of document to fetch.
Show child attributes
Show child attributes
Response
The rendered result is returned along with the template
Was this page helpful?
⌘I