Build a presentation by pasting JSON
Create a whole deck in one step by pasting a JSON document that describes each slide, its words and its look.
Paste a JSON document that describes each slide (what kind it is, what it says and how it looks), and Magpie creates the whole deck, laid out and ready to edit.
There are two ways in:
- On Create presentation, choose Paste JSON as the starting point. The document builds a new deck.
- In the editor of a deck you already have, More → Import JSON replaces every slide in the draft with the document's, when you select Replace the slides. A deck you have already published keeps showing its published version until you publish again.
Select Copy the prompt in either import box to copy this format with instructions, paste it into an AI chat you use, describe the deck you want, and paste its answer back into the box.
You describe slides, not positions. Each slide names a layout and supplies its
words; Magpie places them and sizes the text to fit. The theme sets the look:
a style chooses fonts, colours and the shapes that decorate each kind of slide,
and any colour or font you give replaces the style's. Where the layouts do not
draw what you want, a slide can place its own text, shapes and lines as
elements.
Once the deck exists, every slide is an ordinary slide: move, resize, retype and delete anything on it in the editor, and change its fonts, colours, gradients, opacity and rotation with Edit selected. There, a gradient's start and end colours can be changed; any colours between them stay as imported. Background in the editor replaces a slide's gradient with the colour you choose.
The whole document is checked before anything is saved: if any part of it does not fit the format below, nothing is created or replaced, and the message names the slide and the field that caused it.
The document
{
"title": "Q3 review",
"theme": { "style": "creative", "accent": "#ff5a5f" },
"slides": []
}
| Field | Type | Notes |
|---|---|---|
title |
string, optional | Up to 150 characters. If left out, the title typed on the page is used. |
theme |
object, optional | The deck's look; see The theme. Left out, the deck is in the simple style. |
slides |
array, required | At least one slide, up to 200. |
A colour is a hex colour such as #d04838 or #f60. Wherever a colour can be a
gradient, the field says so; see Gradients.
The theme
Every field of the theme is optional.
| Field | Type | Notes |
|---|---|---|
style |
string | One of the styles below. It decides every field you leave out, and adds the style's shapes and coloured slides. Left out, simple. |
background |
colour or gradient | The background of every slide. |
text |
colour | Body text. |
heading |
colour | Headings. |
accent |
colour | Eyebrows, section headings, numbers, markers, rules and a split slide's panel. |
muted |
colour | Subheadings and attributions. |
surface |
colour | The fill of cards in styles whose cards are not coloured. |
palette |
array of colours | Up to 8. Cards, large numbers, timeline markers and the style's shapes take them in turn. Left out, the style's palette, starting with your accent if you give one. |
headingFont |
string | A font from Fonts, for headings. |
bodyFont |
string | A font from Fonts, for everything else. |
headingWeight |
number | From 100 (thin) to 900 (black); 400 is regular and 700 is bold. |
uppercaseHeadings |
boolean | true sets headings in capitals. |
align |
string | left or center: where title, section, statement and quote slides set their words. |
decorations |
boolean | false leaves out the style's shapes and its coloured title and section slides. |
If you choose a dark background and no text colour, the words are set in a
light colour that can be read on it, and the other way round. A slide with its
own background and no colors is treated the same way, and so is a style's
coloured title or section slide.
Styles
style |
The look |
|---|---|
simple |
Magpie's font on white with a red accent. No shapes. |
corporate |
IBM Plex Sans in navy and blue. A dark band along the foot of the title slide, navy section slides, a rule under each heading and a footer line with the deck's title. |
minimal |
Inter in a light weight on off-white, with one blue accent. A short line above the title and nothing else. |
bold |
Oswald capitals on black, with yellow. Yellow title slides, section slides in the palette's colours, and thick bars. |
creative |
Poppins and DM Sans on warm white, in coral, amber, teal and violet. Large circles off the corners and cards set at slight angles. |
elegant |
Playfair Display and Raleway on cream, with gold. Centred titles in a thin frame, short gold rules and italic quotes. |
playful |
Nunito in bright colours on cream. Blobs and a star on the title slide, rounded tilted cards, and a different shape in the corner of each slide. |
tech |
Space Grotesk and Inter on a dark navy glow, with cyan. Thin rings, short accent rules and labels in JetBrains Mono. |
editorial |
Merriweather and Source Serif 4 on paper white, with red. Heavy rules like a newspaper's and a large quotation mark. |
Fonts
A font is written by its name: Inter, Roboto, Open Sans, Lato, Montserrat, Poppins, DM Sans, Work Sans, Nunito, Space Grotesk, IBM Plex Sans, Source Sans 3, Oswald, Raleway, Playfair Display, Merriweather, Lora, Source Serif 4, IBM Plex Mono, JetBrains Mono, Schibsted Grotesk, Arial, Helvetica, Georgia, Times New Roman or Courier New. The PDF from the mobile app sets text in a standard font of the same kind (serif, sans-serif or monospaced).
Gradients
A slide's or the theme's background, and a shape's fill, can be a gradient
in place of a colour:
{ "type": "linear", "angle": 135, "stops": ["#ff5f6d", "#ffc371"] }
| Field | Type | Notes |
|---|---|---|
type |
string | linear (the default) or radial. |
angle |
number | Linear only, in degrees: 0 runs from the bottom up, 90 from left to right, 180 (the default) from the top down, and 135 from the top left corner to the bottom right. |
position |
string | Radial only: where it starts, spreading out to the farthest corner. center (the default), top, bottom, left, right, top-left, top-right, bottom-left or bottom-right. |
stops |
array, required | From 2 to 5 colours in order. Each is a colour, or { "color": "#ff5f6d", "position": 0.4 } with a position from 0 to 1. Colours without a position are spread evenly. |
Slides
Every slide takes a layout and the fields that layout shows; a slide without a
layout is a text slide. Every layout takes eyebrow, heading and
subheading. A field that belongs to another layout is refused, and so is a
field that is not listed below.
layout |
Use it for | Required | Its own fields |
|---|---|---|---|
title |
The opening slide | heading |
none |
section |
A divider between parts of the deck | heading |
none |
statement |
One sentence set large | heading |
none |
bullets |
A point with its supporting points | bullets |
none |
text |
A point that is a paragraph, not a list | body |
none |
split |
A heading on a coloured panel down one side, with words beside it | heading, and body or bullets |
side |
columns |
Two to four columns side by side, such as before and after | columns |
none |
cards |
Two to six cards, up to three to a row | cards |
none |
stats |
One to four large numbers with what they count | stats |
none |
timeline |
Two to six steps along a line | steps |
none |
agenda |
A numbered list | items |
none |
quote |
Something said by someone | quote |
attribution |
blank |
A slide made of your own elements |
none | none |
| Field | Type | Notes |
|---|---|---|
eyebrow |
string | A short label set above the heading, up to 60 characters. |
heading |
string | Up to 150 characters. |
subheading |
string | A line under the heading, up to 300 characters. |
body |
string | Up to 2,000 characters. Newlines are kept. |
bullets |
array of strings | Up to 12, each up to 300 characters. Written without a bullet character, because Magpie adds it. |
quote |
string | Up to 1,000 characters. Quotation marks are added around it. |
attribution |
string | Up to 150 characters. Written without a dash, because Magpie adds it. |
side |
string | A split slide's panel: left (the default) or right. |
columns |
array | From 2 to 4 columns, each { "heading", "body", "bullets" } with at least one of them: a heading up to 100 characters, a body up to 800, and up to 8 bullets of up to 200 characters. |
cards |
array | From 2 to 6 cards, each { "eyebrow", "heading", "body", "color" }. heading is required, up to 100 characters; eyebrow up to 40; body up to 400. color gives one card its own colour. |
stats |
array | Up to 4, each { "value", "label", "color" }. value is the number as it is shown, such as 48%, £2.1m or 3×, up to 12 characters; label says what it counts, up to 120. Both are required. |
steps |
array | From 2 to 6 steps, each { "label", "heading", "body" }. heading is required, up to 80 characters; label (a date or a number, set above the line) up to 30; body up to 240. |
items |
array of strings | From 2 to 8, each up to 120 characters. Numbered in order. |
notes |
string | Speaker notes, up to 10,000 characters. Never shown to an audience. Any layout can have them. |
hidden |
boolean | true to keep the slide in the deck but skip it when presenting. |
background |
colour or gradient | This slide's background, in place of the theme's. |
colors |
object | This slide's own text, heading, accent, muted and surface colours, each optional. |
align |
string | left or center for this slide's heading and words. |
decorations |
boolean | false leaves out the style's shapes on this slide; true adds them to one slide when the theme leaves them out. |
elements |
array | Text, shapes and lines this slide places itself; see Elements. |
Magpie sets each layout's words at the size that fits: long headings and long lists are set smaller.
Elements
elements places text, shapes and lines where you choose, on top of what the
slide's layout draws, or behind it with "behind": true. A blank slide is made
of elements alone. Use a layout for a slide's words where one fits, because a
layout sizes its words to fit and an element keeps the size you give it.
A slide is 1,600 wide and
900 high. Positions are measured from its top
left corner in the same units, and so are sizes and text sizes. An element may
start off the slide or run past its edge, and the part outside is cut off, which
is how a circle bleeds off a corner. A slide can have up to
60 elements in elements, and up to
100 in all, counting what its layout and
style draw.
Every element takes type (text, shape or line, required), opacity
(from 0, invisible, to 1, solid, the default) and behind. Text and shapes also
take x, y, w and h (required: the top left corner, the width and the
height) and rotation (degrees clockwise about the element's centre).
| Text field | Type | Notes |
|---|---|---|
text |
string | Required, up to 2,000 characters. Newlines are kept. |
fontSize |
number | From 10 to 400; 36 if left out. A layout's headings are about 60 to 100. |
font |
string | A font from Fonts. Left out, the theme's body font. |
weight |
number | From 100 to 900; 400 if left out, 700 is bold. |
italic |
boolean | true for italics. |
uppercase |
boolean | true sets the text in capitals. |
color |
colour | Left out, the slide's text colour. |
align |
string | left (the default), center or right. |
valign |
string | top (the default), middle or bottom: where the text sits in its box. |
letterSpacing |
number | Space between letters, as a share of the text size, from -0.2 to 1. For example 0.12 for spaced capitals. |
lineHeight |
number | The height of each line as a multiple of the text size, from 0.8 to 3. |
| Shape field | Type | Notes |
|---|---|---|
shape |
string | rectangle (the default), rounded, ellipse, triangle, diamond, hexagon, star or arrow (pointing right; turn it with rotation). An ellipse with an equal width and height is a circle. |
fill |
colour, gradient or none |
Left out, the slide's accent. none draws the outline alone. |
stroke |
colour | The outline's colour. |
strokeWidth |
number | The outline's width, from 0 to 40. 2 when a stroke is given without one. |
radius |
number | The corners of a rectangle or rounded shape. Half the height makes a pill. |
A line is drawn from one point to another, so it can run at any angle. It takes
no x, y, w, h or rotation.
| Line field | Type | Notes |
|---|---|---|
x1, y1, x2, y2 |
numbers | Required: where the line starts and ends. |
color |
colour | Left out, the slide's accent. |
strokeWidth |
number | From 1 to 40; 4 if left out. |
arrow |
boolean | true puts an arrowhead at the end. |
dash |
string | solid (the default), dashed or dotted. |
A complete example
{
"title": "Q3 at Ridgeway Cycles",
"theme": {
"style": "creative",
"accent": "#ff5a5f",
"palette": ["#ff5a5f", "#ffb400", "#00a699", "#7b61ff"]
},
"slides": [
{ "layout": "title", "eyebrow": "Quarterly review", "heading": "Q3 at Ridgeway Cycles", "subheading": "Sales, the workshop and what comes next" },
{ "layout": "agenda", "heading": "Today", "items": ["Where we got to", "What shipped", "The plan for Q4"] },
{
"layout": "stats",
"heading": "The quarter in numbers",
"stats": [
{ "value": "£412k", "label": "revenue, up 18% on Q2" },
{ "value": "1,240", "label": "bikes serviced" },
{ "value": "4.8", "label": "average review" }
]
},
{
"layout": "cards",
"heading": "What shipped",
"cards": [
{ "eyebrow": "Workshop", "heading": "Book a repair online", "body": "Bookings now fill the workshop four days a week." },
{ "heading": "Next-day parts", "body": "Two new suppliers deliver the next working day." },
{ "heading": "Gift cards", "body": "Sold online and in the shop since August." }
],
"notes": "Spend the most time on online booking: it is the one they asked about last quarter."
},
{ "layout": "section", "eyebrow": "Part two", "heading": "What comes next" },
{
"layout": "timeline",
"heading": "The plan for Q4",
"steps": [
{ "label": "October", "heading": "Calendar sync" },
{ "label": "November", "heading": "App beta", "body": "Twenty customers test it." },
{ "label": "December", "heading": "Launch" }
]
},
{ "layout": "split", "side": "right", "heading": "What moved to Q4", "bullets": ["The mobile app", "Loyalty points"] },
{ "layout": "quote", "quote": "Booking a service took me a minute.", "attribution": "A customer, September" },
{
"layout": "blank",
"background": { "type": "linear", "angle": 135, "stops": ["#ff5a5f", "#ffb400"] },
"elements": [
{ "type": "shape", "shape": "ellipse", "x": 1050, "y": -200, "w": 700, "h": 700, "fill": "#ffffff", "opacity": 0.2, "behind": true },
{ "type": "text", "x": 130, "y": 320, "w": 1000, "h": 200, "text": "Thank you", "fontSize": 150, "font": "Playfair Display", "weight": 700, "italic": true, "color": "#ffffff" },
{ "type": "line", "x1": 136, "y1": 560, "x2": 700, "y2": 560, "color": "#ffffff", "strokeWidth": 6, "dash": "dotted" }
]
}
]
}
If an import is rejected for a reason you can't work out, Contact support.
Demander à l’assistance Magpie
Envoyez à l’équipe Magpie une question sur tout ce que cet article n’explique pas.