Skip to content

Import Project Info

Import Project Info API

Article ID RC-API-35 — Import Project Info API
Domain API
Applies To All REDCap projects
Prerequisite RC-API-01 — REDCap API
Version 1.1
Last Updated 2026
Author See KB-SOURCE-ATTESTATION.md
Source REDCap API v16.1.3 official documentation examples
Related Topics RC-API-01 — REDCap API; RC-API-34 — Export Project Info API; RC-API-37 — Import Project (Create Project) API(Create Project)

1. Overview

The Import Project Info API allows you to update project-level settings programmatically, such as project title, longitudinal configuration, survey enablement, PI information, and more. This method is useful for bulk modifications across multiple projects or automated project setup workflows.

Permissions required: You must have both API Import/Update privileges and Project Setup/Design privileges in the project to use this method.


2. Key Concepts & Definitions

API Import/Update Privilege

A permission that allows the API user to modify project data, metadata, and configuration via the API. This privilege alone is not sufficient for this method — Project Setup/Design privilege is also required.

Project Setup/Design Privilege

A permission that allows the user to modify project structure and settings. This privilege is required in addition to API Import/Update to use this method.

Updatable Fields

The subset of project metadata that can be modified via the API, such as title, purpose, PI information, survey/scheduling flags, and missing data codes. Some read-only fields (creation_time, production_time) cannot be changed.

Configuration Flag

A binary setting that controls project behavior (e.g., is_longitudinal, surveys_enabled, randomization_enabled) represented as 0 (false/disabled) or 1 (true/enabled).

Partial Update

The ability to modify only specific project fields in a single API call. Fields omitted from the request are left unchanged.


3. Parameters

Parameter Required Description
token Required Your unique API token string
content Required Always 'project_settings'
format Required Data format: 'csv', 'json', or 'xml'
data Required Project settings to update, in the format specified

Updatable fields:

Field Type Description
project_title String Project name
project_language String Language used in the project interface
purpose Integer Project purpose code
purpose_other String Free-text description when purpose is "Other"
project_notes String Notes about the project
custom_record_label String Custom label for the record ID field
secondary_unique_field String Field name designated as a secondary unique field
is_longitudinal Integer 0 (classic) or 1 (longitudinal)
surveys_enabled Integer 0 (disabled) or 1 (enabled)
scheduling_enabled Integer 0 (disabled) or 1 (enabled)
record_autonumbering_enabled Integer 0 (disabled) or 1 (enabled)
randomization_enabled Integer 0 (disabled) or 1 (enabled)
project_irb_number String IRB approval number
project_grant_number String Grant number associated with the project
project_pi_firstname String Principal investigator first name
project_pi_lastname String Principal investigator last name
project_pi_email String Principal investigator email address
display_today_now_button Integer 0 (hidden) or 1 (shown)
bypass_branching_erase_field_prompt Integer 0 (show prompt) or 1 (bypass prompt)

Boolean-type fields use 0 (false/no) or 1 (true/yes).


4. Request Examples

4.1 PHP

<?php

include 'config.php';

$data = array(
    'project_title' => 'New Project Title via API',
    'is_longitudinal' => 0,
    'surveys_enabled' => 1
);

$params = array(
    'token' => $GLOBALS['api_token'],
    'content' => 'project_settings',
    'format' => 'json',
    'data' => json_encode($data)
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $GLOBALS['api_url']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_VERBOSE, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params, '', '&'));
$output = curl_exec($ch);
print $output;

Note: In PHP examples, CURLOPT_SSL_VERIFYPEER is false for compatibility. Set to true in production. See RC-API-01 — REDCap API Section 3.5.


5. Response

On success, the API returns the number of values accepted for update (including fields whose values did not change). For example, if you submitted 3 fields, you will receive 3.

On error, you receive an error message with details about what failed.


6. Common Questions

Q: Can I update only some project settings, or do I need to include all fields? A: You only need to include the fields you want to change. Fields omitted from the data payload are left untouched.

Q: What does the return value mean? A: The API returns a count of how many field values were accepted — including fields that already had the submitted value. A return of 3 means 3 fields were processed, not necessarily that 3 things changed.

Q: Do I need special permissions to use this method? A: Yes. You need both API Import/Update privileges and Project Setup/Design privileges. Having only one of these is not sufficient.

Q: Can I update surveys_enabled after the project is in production? A: Yes. You can enable or disable surveys on a project at any time, even after data collection has begun.


7. Common Mistakes & Gotchas

Incomplete field list: The API supports 19 updatable fields, including PI information, IRB/grant numbers, scheduling, randomization, and record autonumbering. Don't assume only title, longitudinal mode, and surveys are available.

Misreading the response: The return value is an integer count, not a success/error JSON object. A numeric response indicates success; an error message string indicates failure.

Missing permissions: Both API Import/Update privileges and Project Setup/Design privileges are required. If you receive a permissions error, check that both are granted — not just one.

JSON encoding requirement: The data parameter must be properly encoded in the format you specified. Test your serialization carefully, especially for special characters in free-text fields like project_title or project_notes.