curl --request POST \
--url https://api.parallellabs.app/api/v0/content/humanize \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"companyId": "<string>",
"text": "<string>",
"instructions": "<string>"
}
'import requests
url = "https://api.parallellabs.app/api/v0/content/humanize"
payload = {
"companyId": "<string>",
"text": "<string>",
"instructions": "<string>"
}
headers = {
"X-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-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({companyId: '<string>', text: '<string>', instructions: '<string>'})
};
fetch('https://api.parallellabs.app/api/v0/content/humanize', 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.parallellabs.app/api/v0/content/humanize",
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([
'companyId' => '<string>',
'text' => '<string>',
'instructions' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-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.parallellabs.app/api/v0/content/humanize"
payload := strings.NewReader("{\n \"companyId\": \"<string>\",\n \"text\": \"<string>\",\n \"instructions\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-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.parallellabs.app/api/v0/content/humanize")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"companyId\": \"<string>\",\n \"text\": \"<string>\",\n \"instructions\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.parallellabs.app/api/v0/content/humanize")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"companyId\": \"<string>\",\n \"text\": \"<string>\",\n \"instructions\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"humanizedText": "<string>",
"rewritten": true,
"initialIssues": 123,
"remainingIssues": 123,
"invisibleRemoved": 123
}{
"error": "<string>"
}{
"error": "<string>"
}Humanize AI-generated text so it reads naturally human-written.
Strips invisible/homoglyph characters, then runs the text through the content engine’s AI-tell checks (AI-typical phrases, uniform sentence length, em dashes, readability) and rewrites it against the returned guidance, preserving meaning, facts, formatting, and approximate length. Optional instructions (e.g. “keep it casual”) take precedence over the default rules. Billed against the content-engine model quota.
curl --request POST \
--url https://api.parallellabs.app/api/v0/content/humanize \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"companyId": "<string>",
"text": "<string>",
"instructions": "<string>"
}
'import requests
url = "https://api.parallellabs.app/api/v0/content/humanize"
payload = {
"companyId": "<string>",
"text": "<string>",
"instructions": "<string>"
}
headers = {
"X-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-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({companyId: '<string>', text: '<string>', instructions: '<string>'})
};
fetch('https://api.parallellabs.app/api/v0/content/humanize', 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.parallellabs.app/api/v0/content/humanize",
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([
'companyId' => '<string>',
'text' => '<string>',
'instructions' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-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.parallellabs.app/api/v0/content/humanize"
payload := strings.NewReader("{\n \"companyId\": \"<string>\",\n \"text\": \"<string>\",\n \"instructions\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-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.parallellabs.app/api/v0/content/humanize")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"companyId\": \"<string>\",\n \"text\": \"<string>\",\n \"instructions\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.parallellabs.app/api/v0/content/humanize")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"companyId\": \"<string>\",\n \"text\": \"<string>\",\n \"instructions\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"humanizedText": "<string>",
"rewritten": true,
"initialIssues": 123,
"remainingIssues": 123,
"invisibleRemoved": 123
}{
"error": "<string>"
}{
"error": "<string>"
}Authorizations
Company API key - scoped to a specific company. Generate from the Integrations page in your dashboard.
Body
Text to humanize
Request body for humanizing text
Response
Humanized text with a summary of what changed
Humanized text and a summary of what changed
The rewritten text (or the original, unchanged, if the rewrite failed)
True if the text was rewritten; false if the rewrite failed and the original was returned
Number of AI-tell issues the automated checks found before rewriting
Number of issues left after rewriting
Count of invisible/homoglyph characters stripped from the input

