We’ve launched our most advanced model yet: Pangram 4! Read about it here.

Product Updates

Pangram 4 Migration Guide

Aug 6, 2026

Pangram 4 Migration Guide

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.


What's New in 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:

  • Request Pangram 4 explicitly using model: "pangram-4"
  • Update to version 1.0.0 of the Python SDK
  • Support the new Pangram 4 window labels
  • Optionally use the new humanization fields
  • Account for the updated API billing meter

Pangram 4 also returns:

{
  "version": "4.0"
}

Should I Migrate?

YES if you:

  • Want to begin using Pangram 4 before it becomes the default
  • Use window labels in your application or production workflows
  • Want access to the new humanization fields
  • Need time to test your integration before September 30
  • Want to evaluate the updated billing model using your normal request sizes

NOT YET if you:

  • Need additional time to validate Pangram 4 in a staging environment
  • Depend on exact Pangram 3.3.2 label strings and have not updated your integration
  • Need to review how per-100-word billing will affect your usage

Pangram 3.3.2 is still the default and will remain live until September 30, 2026.


Timeline

DateEvent
July 29, 2026Pangram 4 released through the API
Through September 30, 2026Pangram 3.3.2 remains live and continues to be the default model
September 30, 2026End 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.


REST API Migration

For those who use the REST API, send a POST request to:

https://text.external-api.pangram.com/task

The 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.

Example Request

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"
  }'

Python SDK Migration

For those who use the Python SDK, update to v1.0:

pip install --upgrade pangram-sdk==1.0.0

Then 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.


Response Schema Changes

The overall response structure remains familiar, with two additions to every Pangram 4 windows[] item:

FieldTypeDescription
is_humanizedBooleanIndicates whether the window was identified as humanized
humanizer_scoreNumber from 0–1Humanization score for the window

Pangram 4 also returns:

{
  "version": "4.0"
}

Window Label Migration

The only potentially breaking change is that Pangram 4 window labels are now:

  • AI-Generated
  • AI-Assisted
  • Human Written

AI-Assisted replaces the previous Lightly AI-Assisted and Moderately AI-Assisted labels.

Previous Pangram 3.3.2 LabelPangram 4 Label
Lightly AI-AssistedAI-Assisted
Moderately AI-AssistedAI-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.


Field Migration Guide

Most Pangram 3.3.2 response fields do not require changes when moving to Pangram 4.

Pangram 3.3.2 FieldPangram 4 FieldStatus
windows[].labelwindows[].labelValues changed
windows[].confidencewindows[].confidenceRemains familiar
windows[].ai_assistance_scorewindows[].ai_assistance_scoreRemains familiar
windows[].is_humanizedNew
windows[].humanizer_scoreNew
versionReturns "4.0"

The primary compatibility concern is windows[].label. The two previous AI-assisted categories have been consolidated into a single AI-Assisted label.


Billing Changes

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.


1. Update Your Client

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.0

2. Request Pangram 4 Explicitly

Add the model parameter to every request:

{
  "model": "pangram-4"
}

3. Update Exact Label Comparisons

Replace checks for:

Lightly AI-Assisted
Moderately AI-Assisted

With:

AI-Assisted

Also verify that your integration supports the exact Pangram 4 labels:

AI-Generated
AI-Assisted
Human Written

4. Support the New Fields

Update response types, validation schemas, database models, and analytics pipelines to support:

windows[].is_humanized
windows[].humanizer_score
version

The new window fields can be treated as optional initially if your application does not yet use humanization analysis.

5. Review Billing Assumptions

Requests will now be charged per 100 words rather than per 1,000 words.

Test the effect using representative production traffic.


Migration Checklist

  • Update the Python SDK to pangram-sdk==1.0.0, if applicable
  • Add model: "pangram-4" to API requests
  • Remove dependencies on Lightly AI-Assisted
  • Remove dependencies on Moderately AI-Assisted
  • Support AI-Assisted
  • Add support for windows[].is_humanized
  • Add support for windows[].humanizer_score
  • Confirm that the response version is "4.0"
  • Review the new per-100-word billing meter
  • Test the migration before September 30, 2026

Questions?

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
Elyas MasrourFounding Engineer

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.

More from Elyas Masrour
    Pangram 4 Migration Guide | Pangram