> ## Content Index
> Fetch the complete content index at: https://community.mozilladatacollective.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# Updates to MDC REST API and Python Library
- URL: https://community.mozilladatacollective.com/updates-to-mdc-rest-api-and-python-library/
- Published: 2026-01-15T17:43:41.000Z
- Updated: 2026-01-15T17:43:41.000Z
- Description: Tl;dr: Update to newest version of the MDC Python library (0.2.0 or newer) to continue downloading datasets
- Author: Mozilla Data Collective
- Tags: News

Since we launched in November 2025, our [Python library](http://github.com/Mozilla-Data-Collective/datacollective-python?ref=community.mozilladatacollective.com) and [REST API](https://datacollective.mozillafoundation.org/api-reference/docs?ref=community.mozilladatacollective.com) have seen incredible usage. We're shipping over 65 terabytes and ever increasing worth of data a month to downloaders across the globe, with much of it occurring programmatically through the REST API. But with that growth, we spotted some friction.

Namely, the initial download approach was overly complex and slow. Our application servers were streaming datasets to users, which slowed download speeds and bottlenecked traffic. It also increased our costs without adding value for downloaders. So we made it simpler.

### **What's Changed**

We've deprecated the `/datasets/{datasetId}/download/{token}` endpoint, it now returns a 410 HTTP status code. While the `/datasets/{datasetId}/download` response remains the same schema-wise, but now includes a *direct* download URL to our storage layer through the `downloadUrl` key. No more token management required.

Instead of the two-step process where you'd:

1. POST to get a **token**
2. GET with that **token** to stream the file through our servers

You now simply:

1. POST to get a direct, time-limited download URL
2. Download directly from our storage layer

This means faster downloads, better reliability, and simpler code. The POST response still includes an `expiresAt` timestamp so you know exactly how long it's valid.

### **What You Need to Do**

**If you're using the Python library:** Update to version 0.2.0 or newer. The changes are handled automatically under the hood, no code changes required from you!

**If you’re calling the API directly:** Review if the changes above impact on your implementation.