A collection of tools to interact with the REDCap API
Project description
redcap-toolbox
Python package of REDCap tools
Background
The goal of redcap-toolbox is to provide researchers with the tools to download and upload data to existing REDCap
builds. One key aspect of this toolbox is that the minimum number of changes needed to the records are calculated prior
to importing data in to REDCap, thereby reducing the API load.
Installing REDCap Toolbox and Supported Versions
redcap-toolbox is available on PyPI:
$ pip install redcap-toolbox
redcap-toolbox officially supports Python 3.10+.
Getting started
redcap-toolbox relies on the environmental variables REDCAP_API_URL and REDCAP_API_TOKEN.
Downloading data
- Download REDCap dataset using
download_redcapand provide an output file name. By default, all forms are exported. - If you want to include survey timestamps, add the optional flag:
--survey-fields - To download specific instrument forms, enter form names to export in a text file, one per line. If in the web UI, the
form name has a space in it, replace the space with an underscore. Then, provide that file using the optional flag:
--forms get_forms.csv
An example call might look like this:
download_redcap --survey-fields --forms get_forms.csv source_data/full_data.csv
which will download the data set with only the forms defined in the get_forms.csv with timestamps
Downloading data incrementally
download_redcap_incremental is useful when you want to keep a local copy up to date without re-downloading the full dataset each time. Exporting the entirety of large datasets (we have one that is upwards of 150M) causes substantial load on the server -- not great when the vast majority of that data is rows that haven't changed since your last export.
On the first run it downloads everything; on subsequent runs it fetches only records changed since the last run and merges them in.
Incremental state is stored in a .incremental/ directory alongside the output file:
.incremental/base.csv - Accumulated full dataset
.incremental/last_download - Timestamp of last successful download
To force a full re-download, delete the .incremental/ directory.
Options:
--overlap=<duration>— overlap window for missed-change protection (default:24h). Accepts60s,5m,24h,3d, or a bare number of seconds.--tz=<tz>— timezone for timestamps, e.g.America/Chicago(default: local time)-v / --verbose— print progress messages
An example call might look like this:
download_redcap_incremental --overlap=1h source_data/full_data.csv
Downloading reports
- Reports can be downloaded using
download_redcap_reportwith either a list of report IDs separated by commas or a file with list of report IDs, one per line. - Use the
--prefixflag, to specify the prefix to be added for the filenames. Default isredcap.
An example call might look like this:
download_redcap_report --file report_ids.csv --prefix StudyName report_data
or
download_redcap_report --id 32001,32004 --prefix StudyName report_data
which will save all the reports for IDs listed in the report_ids.csv file in the report_data directory.
- The output report filenames will look like this:
report_data ├── StudyName__report_32001.csv └── StudyName__report_32004.csv
Splitting REDCap data into event files
-
Use
split_redcap_datato split the data downloaded usingdownload_redcap:- A file for each event
- A file for repeated instruments in events where they happen
-
So, if your data has events 'scr', 'pre', and 'post', and 'pre' and 'post' each have a repeated instrument called 'meds', you can expect the output files to like this:
├── redcap__scr.csv ├── redcap__pre.csv ├── redcap__pre__meds.csv ├── redcap__post.csv ├── redcap__post.csv └── redcap__post__meds.csv -
In addition, if you don't like the whole _arm_1 appended to your event names (who does like that?) or you're using events to denote arms and want all your event's data together, you can use the event_map file for this. That file should be a CSV file and contain the columns 'redcap_event' and 'filename_event'
- Example event maps might look like:
scr__all_arm_1,scr pre__control_arm_1,pre pre__intervention_arm_1,pre
- Example event maps might look like:
An example call might look like this:
split_redcap_data --event-map=event_map.csv --prefix StudyName --no-condense source_data/full_data.csv source_data
where the split event files will be saved in the source_data directory as well with the prefix StudyName added to
them.
source_data
├── full_data.csv
├── StudyName__scr.csv
├── StudyName__pre.csv
├── StudyName__pre_meds.csv
├── StudyName__post.csv
└── StudyName__post_meds.csv
Update records in REDCap
- Update the REDCap database with the minimum changes needed to make the system in sync.
- It is important that the updated data file has the same number of rows and columns as the original data file.
- This functionality is especially useful when updating the record information for Tracking purposes.
An example call might look like this:
update_redcap_diff StudyName__scr.csv StudyName__scr_cache.csv
where the _cache.csv file contains the changes made to the original data file.
Credits
redcap-toolbox was written by Nate Vack njvack@wisc.edu, with features added by Nicholas
Vanhaute nvanhaute@wisc.edu and Stuti Shrivastava sshrivastav6@wisc.edu.
redcap-toolbox is copyright 2023 by the Boards of Regents of the University of Wisconsin System.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file redcap_toolbox-2026.2.27.4.tar.gz.
File metadata
- Download URL: redcap_toolbox-2026.2.27.4.tar.gz
- Upload date:
- Size: 12.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cad8b5617b9ebca98e87cc603d663a197065f7474911b975f1875a6efb7c8abc
|
|
| MD5 |
c2ea7442cf14ca2bf48f47bbf59de971
|
|
| BLAKE2b-256 |
e9efdacf2e5eddc130e9ec867848591d81dda3da54cc756cccdd073cba81638f
|
Provenance
The following attestation bundles were made for redcap_toolbox-2026.2.27.4.tar.gz:
Publisher:
publish.yml on uwmadison-chm/redcap-toolbox
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
redcap_toolbox-2026.2.27.4.tar.gz -
Subject digest:
cad8b5617b9ebca98e87cc603d663a197065f7474911b975f1875a6efb7c8abc - Sigstore transparency entry: 1004387613
- Sigstore integration time:
-
Permalink:
uwmadison-chm/redcap-toolbox@bdf6dc7b4ad807661abe518fee07fa8269b17709 -
Branch / Tag:
refs/tags/2026.02.27.4 - Owner: https://github.com/uwmadison-chm
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@bdf6dc7b4ad807661abe518fee07fa8269b17709 -
Trigger Event:
push
-
Statement type:
File details
Details for the file redcap_toolbox-2026.2.27.4-py3-none-any.whl.
File metadata
- Download URL: redcap_toolbox-2026.2.27.4-py3-none-any.whl
- Upload date:
- Size: 17.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ba1dc6b65dc56fed5f068836dab4ceddd8f2692d07b18956d8e3204562f2ed1e
|
|
| MD5 |
959949143598113e3c5439b59570657e
|
|
| BLAKE2b-256 |
8d6235bcaf7253943a9976e8fad7ae5ea42960e0290bb14ba58b57636a7c8267
|
Provenance
The following attestation bundles were made for redcap_toolbox-2026.2.27.4-py3-none-any.whl:
Publisher:
publish.yml on uwmadison-chm/redcap-toolbox
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
redcap_toolbox-2026.2.27.4-py3-none-any.whl -
Subject digest:
ba1dc6b65dc56fed5f068836dab4ceddd8f2692d07b18956d8e3204562f2ed1e - Sigstore transparency entry: 1004387624
- Sigstore integration time:
-
Permalink:
uwmadison-chm/redcap-toolbox@bdf6dc7b4ad807661abe518fee07fa8269b17709 -
Branch / Tag:
refs/tags/2026.02.27.4 - Owner: https://github.com/uwmadison-chm
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@bdf6dc7b4ad807661abe518fee07fa8269b17709 -
Trigger Event:
push
-
Statement type: