Read artifact files
curl --request POST \
--url https://api.magicpatterns.com/api/v3/designs/{editorId}/artifacts/{artifactId}/files/read \
--header 'Content-Type: application/json' \
--header 'x-mp-api-key: <api-key>' \
--data '
{
"fileNames": [
"App.tsx",
"index.css"
]
}
'import requests
url = "https://api.magicpatterns.com/api/v3/designs/{editorId}/artifacts/{artifactId}/files/read"
payload = { "fileNames": ["App.tsx", "index.css"] }
headers = {
"x-mp-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-mp-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({fileNames: ['App.tsx', 'index.css']})
};
fetch('https://api.magicpatterns.com/api/v3/designs/{editorId}/artifacts/{artifactId}/files/read', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.magicpatterns.com/api/v3/designs/{editorId}/artifacts/{artifactId}/files/read",
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([
'fileNames' => [
'App.tsx',
'index.css'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-mp-api-key: <api-key>"
],
]);
$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 := "https://api.magicpatterns.com/api/v3/designs/{editorId}/artifacts/{artifactId}/files/read"
payload := strings.NewReader("{\n \"fileNames\": [\n \"App.tsx\",\n \"index.css\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-mp-api-key", "<api-key>")
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("https://api.magicpatterns.com/api/v3/designs/{editorId}/artifacts/{artifactId}/files/read")
.header("x-mp-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"fileNames\": [\n \"App.tsx\",\n \"index.css\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.magicpatterns.com/api/v3/designs/{editorId}/artifacts/{artifactId}/files/read")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-mp-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"fileNames\": [\n \"App.tsx\",\n \"index.css\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"files": [
{
"name": "App.tsx",
"content": "<string>"
}
]
}{
"error": "You do not have access to this resource."
}{
"error": "You do not have access to this resource."
}{
"error": "You do not have access to this resource."
}{
"error": "You do not have access to this resource."
}{
"error": "You do not have access to this resource."
}Artifacts
Read artifact files
Returns the contents of one or more files in an artifact. Files that don’t exist in the artifact are simply omitted from the response.
This endpoint uses POST (with a request body) rather than GET (with a
query string) so file names containing /, commas, or other special
characters don’t need URL encoding.
POST
/
v3
/
designs
/
{editorId}
/
artifacts
/
{artifactId}
/
files
/
read
Read artifact files
curl --request POST \
--url https://api.magicpatterns.com/api/v3/designs/{editorId}/artifacts/{artifactId}/files/read \
--header 'Content-Type: application/json' \
--header 'x-mp-api-key: <api-key>' \
--data '
{
"fileNames": [
"App.tsx",
"index.css"
]
}
'import requests
url = "https://api.magicpatterns.com/api/v3/designs/{editorId}/artifacts/{artifactId}/files/read"
payload = { "fileNames": ["App.tsx", "index.css"] }
headers = {
"x-mp-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-mp-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({fileNames: ['App.tsx', 'index.css']})
};
fetch('https://api.magicpatterns.com/api/v3/designs/{editorId}/artifacts/{artifactId}/files/read', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.magicpatterns.com/api/v3/designs/{editorId}/artifacts/{artifactId}/files/read",
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([
'fileNames' => [
'App.tsx',
'index.css'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-mp-api-key: <api-key>"
],
]);
$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 := "https://api.magicpatterns.com/api/v3/designs/{editorId}/artifacts/{artifactId}/files/read"
payload := strings.NewReader("{\n \"fileNames\": [\n \"App.tsx\",\n \"index.css\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-mp-api-key", "<api-key>")
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("https://api.magicpatterns.com/api/v3/designs/{editorId}/artifacts/{artifactId}/files/read")
.header("x-mp-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"fileNames\": [\n \"App.tsx\",\n \"index.css\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.magicpatterns.com/api/v3/designs/{editorId}/artifacts/{artifactId}/files/read")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-mp-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"fileNames\": [\n \"App.tsx\",\n \"index.css\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"files": [
{
"name": "App.tsx",
"content": "<string>"
}
]
}{
"error": "You do not have access to this resource."
}{
"error": "You do not have access to this resource."
}{
"error": "You do not have access to this resource."
}{
"error": "You do not have access to this resource."
}{
"error": "You do not have access to this resource."
}Authorizations
Magic Patterns API key. The same key authenticates v3 REST and the MCP server. Create one at https://www.magicpatterns.com/settings/api-keys.
Path Parameters
The design's editor ID.
Example:
"abc123"
The artifact ID.
Body
application/json
The file names to read.
Example:
["App.tsx", "index.css"]Response
Requested files.
Show child attributes
Show child attributes
Was this page helpful?
⌘I