PowerPoint

Merge, split, delete slides, and replace text in PPTX presentations

5 endpoints in this category. All require X-API-Key header.


PPTX Merge

POST /api/PptxMerge 1 token

Combine multiple PPTX presentations into one.

Parameters
NameTypeRequiredDescription
files array required Array of base64-encoded PPTX files
Request Example
JSON
{"files": ["<base64-pptx-1>", "<base64-pptx-2>"]}
Response Example
JSON
{"file": "UEsDBBQAAAA...", "slideCount": 8}
Code Examples
curl -X POST "https://docbutterfly.com/api/PptxMerge" \
  -H "X-API-Key: df_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{"files": ["<base64-pptx-1>", "<base64-pptx-2>"]}'
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("X-API-Key", "df_your_api_key_here");

var json = @"{""files"": [""<base64-pptx-1>"", ""<base64-pptx-2>""]}";
var content = new StringContent(json, System.Text.Encoding.UTF8, "application/json");

var response = await client.PostAsync("https://docbutterfly.com/api/PptxMerge", content);
response.EnsureSuccessStatusCode();

var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
import requests
import json

url = "https://docbutterfly.com/api/PptxMerge"
headers = {
    "X-API-Key": "df_your_api_key_here",
    "Content-Type": "application/json"
}
payload = json.loads('{"files": ["<base64-pptx-1>", "<base64-pptx-2>"]}')

response = requests.post(url, headers=headers, json=payload)
response.raise_for_status()

data = response.json()
print(json.dumps(data, indent=2))
┌─────────────────────────────────────────────┐
│  Power Automate - HTTP Action               │
├─────────────────────────────────────────────┤
│                                             │
│  Method:  POST                              │
│  URI:     https://docbutterfly.com/api/PptxMerge
│                                             │
│  Headers:                                   │
│    X-API-Key:    df_your_api_key_here       │
│    Content-Type: application/json           │
│                                             │
│  Body:                                      │
│    {
│      "files": [
│        "\u003Cbase64-pptx-1\u003E",
│        "\u003Cbase64-pptx-2\u003E"
│      ]
│    }
│                                             │
└─────────────────────────────────────────────┘

Steps:
1. Add an HTTP action to your flow
2. Set Method to "POST"
3. Set URI to "https://docbutterfly.com/api/PptxMerge"
4. Add the headers shown above
5. Paste the Body JSON into the Body field
6. Replace placeholder values with dynamic content as needed
Try in Testbed

PPTX Delete Slides

POST /api/PptxDeleteSlides 1 token

Remove specific slides from a PPTX presentation.

Parameters
NameTypeRequiredDescription
file string required Base64-encoded PPTX file
slides string required Slides to delete: "2,4-6" or array [2,4,5,6]
Request Example
JSON
{"file": "<base64-pptx>", "slides": "2,4"}
Response Example
JSON
{"file": "UEsDBBQAAAA...", "remainingSlides": 3}
Code Examples
curl -X POST "https://docbutterfly.com/api/PptxDeleteSlides" \
  -H "X-API-Key: df_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{"file": "<base64-pptx>", "slides": "2,4"}'
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("X-API-Key", "df_your_api_key_here");

var json = @"{""file"": ""<base64-pptx>"", ""slides"": ""2,4""}";
var content = new StringContent(json, System.Text.Encoding.UTF8, "application/json");

var response = await client.PostAsync("https://docbutterfly.com/api/PptxDeleteSlides", content);
response.EnsureSuccessStatusCode();

var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
import requests
import json

url = "https://docbutterfly.com/api/PptxDeleteSlides"
headers = {
    "X-API-Key": "df_your_api_key_here",
    "Content-Type": "application/json"
}
payload = json.loads('{"file": "<base64-pptx>", "slides": "2,4"}')

response = requests.post(url, headers=headers, json=payload)
response.raise_for_status()

data = response.json()
print(json.dumps(data, indent=2))
┌─────────────────────────────────────────────┐
│  Power Automate - HTTP Action               │
├─────────────────────────────────────────────┤
│                                             │
│  Method:  POST                              │
│  URI:     https://docbutterfly.com/api/PptxDeleteSlides
│                                             │
│  Headers:                                   │
│    X-API-Key:    df_your_api_key_here       │
│    Content-Type: application/json           │
│                                             │
│  Body:                                      │
│    {
│      "file": "\u003Cbase64-pptx\u003E",
│      "slides": "2,4"
│    }
│                                             │
└─────────────────────────────────────────────┘

Steps:
1. Add an HTTP action to your flow
2. Set Method to "POST"
3. Set URI to "https://docbutterfly.com/api/PptxDeleteSlides"
4. Add the headers shown above
5. Paste the Body JSON into the Body field
6. Replace placeholder values with dynamic content as needed
Try in Testbed

PPTX Replace Text

POST /api/PptxReplaceText 1 token

Find and replace text across all slides in a PPTX.

Parameters
NameTypeRequiredDescription
file string required Base64-encoded PPTX file
replacements array required Array of {find, replace} or object {find: replace}
Request Example
JSON
{"file": "<base64-pptx>", "replacements": [{"find": "{{title}}", "replace": "Q1 Report"}]}
Response Example
JSON
{"file": "UEsDBBQAAAA...", "replacementCount": 5}
Code Examples
curl -X POST "https://docbutterfly.com/api/PptxReplaceText" \
  -H "X-API-Key: df_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{"file": "<base64-pptx>", "replacements": [{"find": "{{title}}", "replace": "Q1 Report"}]}'
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("X-API-Key", "df_your_api_key_here");

var json = @"{""file"": ""<base64-pptx>"", ""replacements"": [{""find"": ""{{title}}"", ""replace"": ""Q1 Report""}]}";
var content = new StringContent(json, System.Text.Encoding.UTF8, "application/json");

var response = await client.PostAsync("https://docbutterfly.com/api/PptxReplaceText", content);
response.EnsureSuccessStatusCode();

var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
import requests
import json

url = "https://docbutterfly.com/api/PptxReplaceText"
headers = {
    "X-API-Key": "df_your_api_key_here",
    "Content-Type": "application/json"
}
payload = json.loads('{"file": "<base64-pptx>", "replacements": [{"find": "{{title}}", "replace": "Q1 Report"}]}')

response = requests.post(url, headers=headers, json=payload)
response.raise_for_status()

data = response.json()
print(json.dumps(data, indent=2))
┌─────────────────────────────────────────────┐
│  Power Automate - HTTP Action               │
├─────────────────────────────────────────────┤
│                                             │
│  Method:  POST                              │
│  URI:     https://docbutterfly.com/api/PptxReplaceText
│                                             │
│  Headers:                                   │
│    X-API-Key:    df_your_api_key_here       │
│    Content-Type: application/json           │
│                                             │
│  Body:                                      │
│    {
│      "file": "\u003Cbase64-pptx\u003E",
│      "replacements": [
│        {
│          "find": "{{title}}",
│          "replace": "Q1 Report"
│        }
│      ]
│    }
│                                             │
└─────────────────────────────────────────────┘

Steps:
1. Add an HTTP action to your flow
2. Set Method to "POST"
3. Set URI to "https://docbutterfly.com/api/PptxReplaceText"
4. Add the headers shown above
5. Paste the Body JSON into the Body field
6. Replace placeholder values with dynamic content as needed
Try in Testbed

PPTX Split

POST /api/PptxSplit 1 token

Split a PPTX into individual slide files.

Parameters
NameTypeRequiredDescription
file string required Base64-encoded PPTX file
Request Example
JSON
{"file": "<base64-pptx>"}
Response Example
JSON
{"slides": [{"index": 1, "file": "UEsDBBQ..."}], "count": 5}
Code Examples
curl -X POST "https://docbutterfly.com/api/PptxSplit" \
  -H "X-API-Key: df_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{"file": "<base64-pptx>"}'
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("X-API-Key", "df_your_api_key_here");

var json = @"{""file"": ""<base64-pptx>""}";
var content = new StringContent(json, System.Text.Encoding.UTF8, "application/json");

var response = await client.PostAsync("https://docbutterfly.com/api/PptxSplit", content);
response.EnsureSuccessStatusCode();

var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
import requests
import json

url = "https://docbutterfly.com/api/PptxSplit"
headers = {
    "X-API-Key": "df_your_api_key_here",
    "Content-Type": "application/json"
}
payload = json.loads('{"file": "<base64-pptx>"}')

response = requests.post(url, headers=headers, json=payload)
response.raise_for_status()

data = response.json()
print(json.dumps(data, indent=2))
┌─────────────────────────────────────────────┐
│  Power Automate - HTTP Action               │
├─────────────────────────────────────────────┤
│                                             │
│  Method:  POST                              │
│  URI:     https://docbutterfly.com/api/PptxSplit
│                                             │
│  Headers:                                   │
│    X-API-Key:    df_your_api_key_here       │
│    Content-Type: application/json           │
│                                             │
│  Body:                                      │
│    {
│      "file": "\u003Cbase64-pptx\u003E"
│    }
│                                             │
└─────────────────────────────────────────────┘

Steps:
1. Add an HTTP action to your flow
2. Set Method to "POST"
3. Set URI to "https://docbutterfly.com/api/PptxSplit"
4. Add the headers shown above
5. Paste the Body JSON into the Body field
6. Replace placeholder values with dynamic content as needed
Try in Testbed

PPTX Populate Template

POST /api/PptxPopulateTemplate 1 token

Fill a PPTX template with data, resolving {tokens} even when PowerPoint splits them across text runs.

Parameters
NameTypeRequiredDescription
file string required Base64-encoded PPTX template
data object required Key-value pairs; {key} tokens in the slides are replaced
Request Example
JSON
{"file": "<base64-pptx>", "data": {"name": "Jamie", "status": "Open"}}
Response Example
JSON
{"file": "UEsDBBQAAAA...", "replacementCount": 3, "slidesModified": 1}
Code Examples
curl -X POST "https://docbutterfly.com/api/PptxPopulateTemplate" \
  -H "X-API-Key: df_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{"file": "<base64-pptx>", "data": {"name": "Jamie", "status": "Open"}}'
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("X-API-Key", "df_your_api_key_here");

var json = @"{""file"": ""<base64-pptx>"", ""data"": {""name"": ""Jamie"", ""status"": ""Open""}}";
var content = new StringContent(json, System.Text.Encoding.UTF8, "application/json");

var response = await client.PostAsync("https://docbutterfly.com/api/PptxPopulateTemplate", content);
response.EnsureSuccessStatusCode();

var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
import requests
import json

url = "https://docbutterfly.com/api/PptxPopulateTemplate"
headers = {
    "X-API-Key": "df_your_api_key_here",
    "Content-Type": "application/json"
}
payload = json.loads('{"file": "<base64-pptx>", "data": {"name": "Jamie", "status": "Open"}}')

response = requests.post(url, headers=headers, json=payload)
response.raise_for_status()

data = response.json()
print(json.dumps(data, indent=2))
┌─────────────────────────────────────────────┐
│  Power Automate - HTTP Action               │
├─────────────────────────────────────────────┤
│                                             │
│  Method:  POST                              │
│  URI:     https://docbutterfly.com/api/PptxPopulateTemplate
│                                             │
│  Headers:                                   │
│    X-API-Key:    df_your_api_key_here       │
│    Content-Type: application/json           │
│                                             │
│  Body:                                      │
│    {
│      "file": "\u003Cbase64-pptx\u003E",
│      "data": {
│        "name": "Jamie",
│        "status": "Open"
│      }
│    }
│                                             │
└─────────────────────────────────────────────┘

Steps:
1. Add an HTTP action to your flow
2. Set Method to "POST"
3. Set URI to "https://docbutterfly.com/api/PptxPopulateTemplate"
4. Add the headers shown above
5. Paste the Body JSON into the Body field
6. Replace placeholder values with dynamic content as needed
Try in Testbed