We’ve launched our most advanced model yet: Pangram 4! Read about it here.
Pangram 4 is now live in our API.
Due to some billing updates, Pangram 3.3.2 is still the default and will remain live until September 30, 2026.
This guide covers everything you need to know about migrating to Pangram 4.
Pangram 4 introduces a more accurate detection model, per-segment humanizer detection, and a simplified set of classification labels. See the Pangram 4 Model card for more information!
The overall response structure remains familiar, so most integrations should require only a few changes:
model: "pangram-4"1.0.0 of the Python SDKPangram 4 also returns:
{
"version": "4.0"
}YES if you:
NOT YET if you:
Pangram 3.3.2 is still the default and will remain live until September 30, 2026.
| Date | Event |
|---|---|
| July 29, 2026 | Pangram 4 released through the API |
| Through September 30, 2026 | Pangram 3.3.2 remains live and continues to be the default model |
| September 30, 2026 | End of the announced Pangram 3.3.2 transition period |
We recommend testing Pangram 4 before September 30, particularly if your integration branches on exact window-label strings.
For those who use the REST API, send a POST request to:
https://text.external-api.pangram.com/taskThe request body should now include:
{
"text": "...",
"model": "pangram-4"
}Because Pangram 3.3.2 is still the default during the transition period, you must request Pangram 4 explicitly.
curl --request POST \
--url https://text.external-api.pangram.com/task \
--header "Content-Type: application/json" \
--header "x-api-key: YOUR_API_KEY" \
--data '{
"text": "Your text goes here.",
"model": "pangram-4"
}'For those who use the Python SDK, update to v1.0:
pip install --upgrade pangram-sdk==1.0.0Then request Pangram 4 explicitly:
from pangram import Pangram
client = Pangram()
result = client.predict(
text,
model="pangram-4",
)As with the REST API, Pangram 4 must be selected explicitly during the transition period.
The overall response structure remains familiar, with two additions to every Pangram 4 windows[] item:
| Field | Type | Description |
|---|---|---|
is_humanized | Boolean | Indicates whether the window was identified as humanized |
humanizer_score | Number from 0–1 | Humanization score for the window |
Pangram 4 also returns:
{
"version": "4.0"
}The only potentially breaking change is that Pangram 4 window labels are now:
AI-GeneratedAI-AssistedHuman WrittenAI-Assisted replaces the previous Lightly AI-Assisted and Moderately AI-Assisted labels.
| Previous Pangram 3.3.2 Label | Pangram 4 Label |
|---|---|
Lightly AI-Assisted | AI-Assisted |
Moderately AI-Assisted | AI-Assisted |
If your integration branches on exact label strings, update it before migrating.
For example, code that previously handled the two AI-assisted labels separately:
if window["label"] in {
"Lightly AI-Assisted",
"Moderately AI-Assisted",
}:
handle_ai_assisted(window)Should be updated to:
if window["label"] == "AI-Assisted":
handle_ai_assisted(window)A complete Pangram 4 label handler could look like this:
label = window["label"]
if label == "AI-Generated":
handle_ai_generated(window)
elif label == "AI-Assisted":
handle_ai_assisted(window)
elif label == "Human Written":
handle_human_written(window)
else:
handle_unknown_label(window)We recommend retaining an unknown-label fallback rather than assuming the API will always return one of the currently documented strings.
Most Pangram 3.3.2 response fields do not require changes when moving to Pangram 4.
| Pangram 3.3.2 Field | Pangram 4 Field | Status |
|---|---|---|
windows[].label | windows[].label | Values changed |
windows[].confidence | windows[].confidence | Remains familiar |
windows[].ai_assistance_score | windows[].ai_assistance_score | Remains familiar |
| — | windows[].is_humanized | New |
| — | windows[].humanizer_score | New |
| — | version | Returns "4.0" |
The primary compatibility concern is windows[].label. The two previous AI-assisted categories have been consolidated into a single AI-Assisted label.
One final callout: We’re updating the way we bill our API.
We’re improving the granularity of our usage meter. Requests will now be charged per 100 words rather than per 1,000 words. This will be advantageous for many of you.
But fair warning, Pangram 4 is a bigger and more capable model, and as such, we’ve had to increase our pricing.
Please see pricing page for latest pricing info!
Before moving all production traffic to Pangram 4, review the updated billing model against your application’s typical request length and volume.
REST API users can continue using the existing task endpoint.
Python SDK users should install version 1.0.0:
pip install --upgrade pangram-sdk==1.0.0Add the model parameter to every request:
{
"model": "pangram-4"
}Replace checks for:
Lightly AI-Assisted
Moderately AI-AssistedWith:
AI-AssistedAlso verify that your integration supports the exact Pangram 4 labels:
AI-Generated
AI-Assisted
Human WrittenUpdate response types, validation schemas, database models, and analytics pipelines to support:
windows[].is_humanized
windows[].humanizer_score
versionThe new window fields can be treated as optional initially if your application does not yet use humanization analysis.
Requests will now be charged per 100 words rather than per 1,000 words.
Test the effect using representative production traffic.
pangram-sdk==1.0.0, if applicablemodel: "pangram-4" to API requestsLightly AI-AssistedModerately AI-AssistedAI-Assistedwindows[].is_humanizedwindows[].humanizer_score"4.0"Excited to get y’all using Pangram 4. Please reach out if you have any issues. We’ll be extra responsive in the coming days!
For migration support, contact support@pangram.com.

Elyas Masrour is a founding engineer at Pangram. Since joining Pangram as it's second employee straight out of the University of Maryland, he has built out critical infrastructure such as the model serving API, role-based access controls, and supporting evidence pipelines. Elyas also works closely with the research team on projects like adversarial robustness, model interpretability, and heterogenous mixed content detection. Outside of work, Elyas enjoys a wide range of human creativity and expression, including filmmaking, reading, and exploring the city.






