Beta environment - not production
You are viewing the DocButterfly beta at beta.docbutterfly.com. Endpoints, data and templates here are for evaluation only, and may be reset or changed without notice. The documentation shows https://docbutterfly.com as the base URL - point your calls at the beta host while you are testing here. Do not use production data or production API keys.
Email & Web
Send emails, parse EML files, and capture web pages
4 endpoints in this category. All require X-API-Key header.
Send Email
POST
/api/SendEmail
1 token
Send HTML email via Microsoft Graph API.
Requires GRAPH_TENANT_ID, GRAPH_CLIENT_ID, GRAPH_CLIENT_SECRET, GRAPH_SENDER_EMAIL.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
to |
array | required | Recipient(s) |
subject |
string | required | Subject line |
body |
string | required | HTML body |
cc |
array | optional | CC recipients |
bcc |
array | optional | BCC recipients |
attachments |
array | optional | Array of {name, contentType, content} |
importance |
string | optional | normal, high, low |
Request Example
JSON
{"to": ["recipient@example.com"], "subject": "Test from DocFlow", "body": "<h1>Hello</h1><p>Sent via DocFlow API.</p>"}
Response Example
JSON
{"sent": true, "messageId": "AAMkADQ..."}
Code Examples
curl -X POST "https://docbutterfly.com/api/SendEmail" \
-H "X-API-Key: df_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"to": ["recipient@example.com"], "subject": "Test from DocFlow", "body": "<h1>Hello</h1><p>Sent via DocFlow API.</p>"}'using var client = new HttpClient();
client.DefaultRequestHeaders.Add("X-API-Key", "df_your_api_key_here");
var json = @"{""to"": [""recipient@example.com""], ""subject"": ""Test from DocFlow"", ""body"": ""<h1>Hello</h1><p>Sent via DocFlow API.</p>""}";
var content = new StringContent(json, System.Text.Encoding.UTF8, "application/json");
var response = await client.PostAsync("https://docbutterfly.com/api/SendEmail", content);
response.EnsureSuccessStatusCode();
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);import requests
import json
url = "https://docbutterfly.com/api/SendEmail"
headers = {
"X-API-Key": "df_your_api_key_here",
"Content-Type": "application/json"
}
payload = json.loads('{"to": ["recipient@example.com"], "subject": "Test from DocFlow", "body": "<h1>Hello</h1><p>Sent via DocFlow API.</p>"}')
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/SendEmail
│ │
│ Headers: │
│ X-API-Key: df_your_api_key_here │
│ Content-Type: application/json │
│ │
│ Body: │
│ {
│ "to": [
│ "recipient@example.com"
│ ],
│ "subject": "Test from DocFlow",
│ "body": "\u003Ch1\u003EHello\u003C/h1\u003E\u003Cp\u003ESent via DocFlow API.\u003C/p\u003E"
│ }
│ │
└─────────────────────────────────────────────┘
Steps:
1. Add an HTTP action to your flow
2. Set Method to "POST"
3. Set URI to "https://docbutterfly.com/api/SendEmail"
4. Add the headers shown above
5. Paste the Body JSON into the Body field
6. Replace placeholder values with dynamic content as neededParse Email
POST
/api/ParseEmail
1 token
Parse EML/MIME email metadata.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
email |
string | required | Base64 EML or raw MIME |
Request Example
JSON
{"email": "<base64-eml>"}
Response Example
JSON
{"from": "sender@test.com", "to": ["recipient@test.com"], "subject": "Test", "hasAttachments": true}
Code Examples
curl -X POST "https://docbutterfly.com/api/ParseEmail" \
-H "X-API-Key: df_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"email": "<base64-eml>"}'using var client = new HttpClient();
client.DefaultRequestHeaders.Add("X-API-Key", "df_your_api_key_here");
var json = @"{""email"": ""<base64-eml>""}";
var content = new StringContent(json, System.Text.Encoding.UTF8, "application/json");
var response = await client.PostAsync("https://docbutterfly.com/api/ParseEmail", content);
response.EnsureSuccessStatusCode();
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);import requests
import json
url = "https://docbutterfly.com/api/ParseEmail"
headers = {
"X-API-Key": "df_your_api_key_here",
"Content-Type": "application/json"
}
payload = json.loads('{"email": "<base64-eml>"}')
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/ParseEmail
│ │
│ Headers: │
│ X-API-Key: df_your_api_key_here │
│ Content-Type: application/json │
│ │
│ Body: │
│ {
│ "email": "\u003Cbase64-eml\u003E"
│ }
│ │
└─────────────────────────────────────────────┘
Steps:
1. Add an HTTP action to your flow
2. Set Method to "POST"
3. Set URI to "https://docbutterfly.com/api/ParseEmail"
4. Add the headers shown above
5. Paste the Body JSON into the Body field
6. Replace placeholder values with dynamic content as neededExtract Email Attachments
POST
/api/ExtractEmailAttachments
1 token
Extract attachments from EML file.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
email |
string | required | Base64 EML or raw MIME |
Request Example
JSON
{"email": "<base64-eml>"}
Response Example
JSON
{"attachments": [{"name": "report.pdf", "contentType": "application/pdf", "size": 12345}]}
Code Examples
curl -X POST "https://docbutterfly.com/api/ExtractEmailAttachments" \
-H "X-API-Key: df_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"email": "<base64-eml>"}'using var client = new HttpClient();
client.DefaultRequestHeaders.Add("X-API-Key", "df_your_api_key_here");
var json = @"{""email"": ""<base64-eml>""}";
var content = new StringContent(json, System.Text.Encoding.UTF8, "application/json");
var response = await client.PostAsync("https://docbutterfly.com/api/ExtractEmailAttachments", content);
response.EnsureSuccessStatusCode();
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);import requests
import json
url = "https://docbutterfly.com/api/ExtractEmailAttachments"
headers = {
"X-API-Key": "df_your_api_key_here",
"Content-Type": "application/json"
}
payload = json.loads('{"email": "<base64-eml>"}')
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/ExtractEmailAttachments
│ │
│ Headers: │
│ X-API-Key: df_your_api_key_here │
│ Content-Type: application/json │
│ │
│ Body: │
│ {
│ "email": "\u003Cbase64-eml\u003E"
│ }
│ │
└─────────────────────────────────────────────┘
Steps:
1. Add an HTTP action to your flow
2. Set Method to "POST"
3. Set URI to "https://docbutterfly.com/api/ExtractEmailAttachments"
4. Add the headers shown above
5. Paste the Body JSON into the Body field
6. Replace placeholder values with dynamic content as neededCapture Web Page
POST
/api/CaptureWebPage
2 tokens
Capture a URL as PDF or screenshot.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
url |
string | required | URL to capture |
output |
string | optional |
pdf or screenshot
(default: pdf)
|
options.captureMode |
string | optional |
screen (full visual fidelity), print (traditional), fast (minimal wait)
(default: screen)
|
options.format |
string | optional | A4, Letter |
options.fullPage |
boolean | optional | Full page capture |
options.viewport |
object | optional | {width, height} in pixels |
options.timeout |
number | optional |
Navigation timeout in ms (max 60000)
(default: 30000)
|
returnBase64 |
boolean | optional |
Return base64
(default: true)
|
Request Example
JSON
{"url": "https://example.com", "output": "pdf", "options": {"format": "A4"}, "returnBase64": true}
Code Examples
curl -X POST "https://docbutterfly.com/api/CaptureWebPage" \
-H "X-API-Key: df_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com", "output": "pdf", "options": {"format": "A4"}, "returnBase64": true}'using var client = new HttpClient();
client.DefaultRequestHeaders.Add("X-API-Key", "df_your_api_key_here");
var json = @"{""url"": ""https://example.com"", ""output"": ""pdf"", ""options"": {""format"": ""A4""}, ""returnBase64"": true}";
var content = new StringContent(json, System.Text.Encoding.UTF8, "application/json");
var response = await client.PostAsync("https://docbutterfly.com/api/CaptureWebPage", content);
response.EnsureSuccessStatusCode();
// The response contains a base64-encoded file in the JSON body
var result = await response.Content.ReadAsStringAsync();
using var doc = System.Text.Json.JsonDocument.Parse(result);
var base64 = doc.RootElement.GetProperty("pdf").GetString();
var bytes = Convert.FromBase64String(base64!);
await File.WriteAllBytesAsync("output.pdf", bytes);import requests
import json
import base64
url = "https://docbutterfly.com/api/CaptureWebPage"
headers = {
"X-API-Key": "df_your_api_key_here",
"Content-Type": "application/json"
}
payload = json.loads('{"url": "https://example.com", "output": "pdf", "options": {"format": "A4"}, "returnBase64": true}')
response = requests.post(url, headers=headers, json=payload)
response.raise_for_status()
# Decode the base64 PDF and save to file
data = response.json()
pdf_bytes = base64.b64decode(data["pdf"])
with open("output.pdf", "wb") as f:
f.write(pdf_bytes)
print("Saved to output.pdf")┌─────────────────────────────────────────────┐
│ Power Automate - HTTP Action │
├─────────────────────────────────────────────┤
│ │
│ Method: POST │
│ URI: https://docbutterfly.com/api/CaptureWebPage
│ │
│ Headers: │
│ X-API-Key: df_your_api_key_here │
│ Content-Type: application/json │
│ │
│ Body: │
│ {
│ "url": "https://example.com",
│ "output": "pdf",
│ "options": {
│ "format": "A4"
│ },
│ "returnBase64": true
│ }
│ │
└─────────────────────────────────────────────┘
Steps:
1. Add an HTTP action to your flow
2. Set Method to "POST"
3. Set URI to "https://docbutterfly.com/api/CaptureWebPage"
4. Add the headers shown above
5. Paste the Body JSON into the Body field
6. Replace placeholder values with dynamic content as needed
To save the output file:
7. Add a "Parse JSON" action on the HTTP response body
8. Use base64ToBinary(body('Parse_JSON')?['pdf']) to convert
9. Pass the result to a "Create file" action (SharePoint, OneDrive, etc.)