choicery.ai
Export formats
Deutsch | English

Export Formats and Data Structures (Register under Article 26 Data Act)

Version: 1.0 Effective from: 2026-10-09 Provider: Paul Bengart, Keplerstraße 4A, 39104 Magdeburg, Germany

1 Purpose and Scope

(1) This register describes the formats, files and data structures in which Choicery makes the Customer's data available for export. It serves as information under Article 26(b) of Regulation (EU) 2023/2854 (Data Act), supplements the Data Act Exit and Switching Policy and does not form part of the contract.

(2) The register describes the current export formats and is updated on an ongoing basis. File names, the order and number of technical additional columns and other details may change as the application is developed further; the respective export is authoritative.

(3) The Customer retrieves every export named in this register directly through the application. The exports are available in all plans; excepted are the replication packages (Section 8.5), which are included only in the plans that include them according to the plan overview. Through the programming interface under Section 11, the project list, the project export ZIP, the raw JSON and the wide-format response data are available in all plans free of charge.

(4) File names in this register denote files inside the exports. Where a file name contains the project name, the task name or an identifier, this is described in words.

2 Overview of Export Paths

Data category Path in the application Formats Standard
Response data in wide format (one row per respondent) Data > Export Data > Survey Responses CSV, Excel (XLSX), SPSS (SAV) RFC 4180, ECMA-376, SPSS System File
Response data with utilities (Preference Scores) Data > Export Data > CBC/MaxDiff Preference Scores CSV, Excel (XLSX), SPSS (SAV) RFC 4180, ECMA-376, SPSS System File
Response data in long format for estimation Data > Export Data (long format per conjoint task); Analysis > Downloads > Preference Analysis Data (CSV) CSV RFC 4180
Raw response data Data > Export Data > Raw Responses (JSON) JSON RFC 8259
Analysis and re-import archive Data > Export Data > Analysis & Re-import Archive (ZIP) ZIP with CSV and XLSX ZIP, RFC 4180, ECMA-376
Full project backup Data > Export Data > Full Project Backup (ZIP) ZIP with JSON, CSV, XLSX and media files ZIP, RFC 8259, RFC 4180
Study definition (no response data) Data > Export Data > Study Definition Package ZIP with JSON, CSV, XLSX, TXT ZIP, RFC 8259, RFC 4180, ECMA-376
Project activity log Data > Export Data > Activity Log TXT, CSV RFC 4180
Design files (choice tasks) Design page of the respective conjoint task (Download CSV); project packages under Section 6 CSV, JSON (MaxDiff) RFC 4180, RFC 8259
Codebook Data > Codebook XLSX ECMA-376
HB results (CBC, CBC Shop, DR-CBC, BW-CBC) Analysis > Downloads > CBC Results (Excel), Parameter Diagnostics (CSV), JSON XLSX, CSV, JSON ECMA-376, RFC 4180, RFC 8259
HB results (MaxDiff, Anchored MaxDiff) Analysis > Downloads > MaxDiff Results (Excel), JSON XLSX, JSON ECMA-376, RFC 8259
HB replication package (plan-bound, Section 1(3)) Analysis > Downloads > Julia Replication Package (.zip) ZIP with Julia script, CSV, JSON, TOML, TXT, MD ZIP
Latent Class, TasteNet, Interaction Search Analysis > Advanced Analytics (downloads of the respective method) XLSX, ZIP with CSV, JSON, replication package (ZIP, plan-bound) ECMA-376, RFC 4180, RFC 8259, ZIP
PDF reports of the estimation methods (HB, Latent Class, TasteNet, Interaction Search) Analysis > results view of the respective method (PDF report) PDF ISO 32000
Market simulator Analysis > Market Simulator XLSX, CSV, TXT, PDF ECMA-376, RFC 4180, ISO 32000
Further downloads (result tables of the survey analysis, study documentation, paper version of the survey) respective page in the application CSV, XLSX, DOCX, RTF, PDF RFC 4180, ECMA-376, ISO 32000
Account data Profile > Personal data > Download account data (.zip) ZIP with CSV and TXT ZIP, RFC 4180
Programming interface for switching HTTP interface /api/v1 with a personal token (Section 11); tokens under Profile > API access JSON, ZIP, CSV HTTP, RFC 8259, ZIP, RFC 4180

3 Response Data in Wide Format

3.1 File format

(1) The CSV file is encoded as UTF-8 with a byte order mark (BOM), comma-separated, with one header row. Values containing commas, quotation marks or line breaks are enclosed in double quotation marks. The file name consists of the sanitised project name and the suffix _wide.csv; for an export with utilities the suffix is _with_utilities.csv.

(2) The Excel file contains the sheet Data with the same columns as the CSV file and the sheet Labels with the columns Variable, Values, Label (value labels from the codebook).

(3) The SPSS file (.sav) contains the same columns. Variable names are shortened to at most 64 characters, start with a letter and are unique. Variables whose codebook codes are purely numeric are written as numeric variables with value labels; all others as strings. The question text is stored as the variable label (at most 256 characters). Missing values are empty cells.

(4) In CSV files, text cells that begin with a formula-triggering character (for example equals sign, plus, minus, at sign) are prefixed with a single quotation mark so that spreadsheet programs do not execute them as formulas. In Excel files the value remains unchanged.

(5) Before exporting, the Customer can restrict the data by response status and participant filters and select columns. Optionally three metadata columns are prepended: export_timestamp_utc, export_project_id, export_project_name.

3.2 Column order

The columns are arranged from left to right in five groups:

  1. Identifiers and status: participant_id, unique_id, panel_id and panel_id_duplicate (only when at least one response carries a panel ID), status, experimental_condition, total_page_time, started_at, completed_at.
  2. Survey variables in survey flow order. Each variable carries the variable name assigned by the Customer; unnamed items receive a name derived from the question text.
  3. Columns created by the Customer in the Data Editor and columns of removed items, in natural sort order.
  4. System metadata, including the provenance columns _choicery_design_source (values published, draft, legacy) and _choicery_release_id, and panel_id_parameter (name of the URL parameter the panel ID came in). Panel IDs collected through personalized panel links are always output, also after panel linkage has been switched off in the project. panel_id_duplicate is 1 when more than one completed response carries the same panel ID, otherwise 0. Device, browser, screen, language, time zone, referrer and IP-related fields are not exported.
  5. Page times page_time_1, page_time_2 and so on, at the far right.

3.3 Coding rules

Item type Columns Coding
Single choice (select, radio) one column Index of the originally configured option, starting at 1. An "Other" option receives the index after the last configured option; the free text is stored in the column with suffix _other_text. Specify fields of individual options are stored in columns with suffix _o1_specify, _o2_specify and so on.
Multiple choice (checkboxes) one column per option with suffix _ao1, _ao2 and so on 1 = selected, 0 = not selected, empty = option not shown. Specify and "Other" fields as for single choice.
Likert one column per statement with suffix _i1, _i2 and so on Scale value between the configured minimum and maximum. For grid questions with checkbox or numeric cells, one column per cell with suffix _i1_c1 (row, column).
Semantic differential one column per pair with suffix _i1_p1 (item, pair) Scale value from 1 to the configured number of points
Ranking one column per element with suffix _i1, _i2 and so on Rank of the element, starting at 1
Text, number one column Input unchanged

3.4 Conjoint columns

(1) The column stem of a conjoint task consists of the type key and the task name, joined by an underscore. Type keys are conjoint (CBC), cbc_shop (CBC Shop), drcbc (DR-CBC), bwcbc (BW-CBC), maxdiff (MaxDiff) and anchored_maxdiff (Anchored MaxDiff).

(2) Each choice task is followed by a suffix _t1, _t2 and so on in task order. Fixed tasks (holdouts) carry the suffix _FIXED_t1, _FIXED_t2 and so on according to their position.

(3) Coding per type:

Type Columns per task Values
CBC, CBC Shop stem plus _t1 Number of the chosen alternative, starting at 1
DR-CBC stem plus _t1 and _t1_none Chosen alternative starting at 1; purchase intent: 1 = would buy, 2 = would not buy
BW-CBC stem plus _t1_best, _t1_worst, optionally _t1_none Best and worst alternative starting at 1; purchase intent as for DR-CBC
MaxDiff, Anchored MaxDiff stem plus _t1_best, _t1_worst Best and worst item of the set
Anchored MaxDiff (calibration) stem plus _cal_1, _cal_2 and so on Calibration answer per item

(4) Each conjoint task additionally receives the column stem plus _design_version with the identifier of the design version the respondent saw.

3.5 Status, time fields, missing values

(1) status has the values complete, incomplete and manual (row created in the Data Editor).

(2) started_at and completed_at are timestamps in UTC. In the export via Data > Export Data they are written as ISO 8601 with second precision and the time zone designator +00:00. In the file survey_responses.csv of the archives (Section 6) they are written in the format YYYY-MM-DD HH:MM:SS in UTC.

(3) total_page_time and the columns page_time_N contain seconds with three decimal places.

(4) Missing values are empty cells. Every column configured in the survey flow is present in the export even if no respondent supplied a value.

4 Response Data in Long Format for Estimation

(1) The long format contains one row per respondent, task and alternative. The export is generated per conjoint task as CSV (UTF-8 with BOM, comma-separated). The file name consists of the project name, the task name and the suffix _long.csv. Attribute values are written as level labels.

(2) Columns per type:

Type Columns
CBC, CBC Shop resp.id, ques, alt, choice, one column per attribute, NoneOpt when the none option is enabled
DR-CBC resp.id, ques, alt, choice, none_response, one column per attribute, NoneOpt
BW-CBC resp.id, ques, alt, best, worst, none_response (where collected), one column per attribute
MaxDiff resp.id, ques, alt, best, worst, Item
Anchored MaxDiff as MaxDiff, plus calibration_response (yes, no) and calibration_yes (1, 0)

(3) resp.id is the participant ID, the same identifier as participant_id in the wide format (Section 3); long and wide format can be joined directly on it. ques numbers the tasks consecutively from 1, alt the alternatives from 1. choice is 1 for the chosen alternative and otherwise 0; when the none option is enabled, the none alternative is the last alternative of a task and NoneOpt is 1 there.

(4) The download "Preference Analysis Data (CSV)" under Analysis > Downloads delivers the same CBC structure with a file name made of the project identifier and _choicemodel_data.csv, encoded as UTF-8 without BOM. This file is the input of the estimation: there resp.id is a consecutive respondent number starting at 1; the mapping to participant_id is held in the respondent mapping files of the project backup (Section 6).

5 Raw Data JSON

(1) The export "Raw Responses (JSON)" is a JSON object whose keys are the participant_id. Each entry contains:

Field Content
survey_data object with all stored answers under their storage keys
status complete, incomplete or manual
experimental_condition assigned condition or empty
started_at, completed_at ISO 8601 in UTC with +00:00, otherwise null
page_times object with page times in seconds per page
panel_id, panel_id_parameter panel ID and name of the URL parameter; only for responses that came through a personalized panel link

Optionally the export contains the key _metadata with exported_at, project_id and project_name. The file name consists of the project name and _responses.json.

(2) Storage keys in survey_data are the internal item identifiers, not the variable names; this keeps data stable when items are renamed. The suffixes correspond to Section 3.3 (_ao1, _i1, _i1_c1, _i1_p1, _other_text). Conjoint answers are stored as a list under the key made of type key and item identifier; each list entry describes one task with task_id (from 0), for CBC, CBC Shop and DR-CBC selected_alternative (from 0), for DR-CBC and BW-CBC none_response (1 or 2), for BW-CBC best_choice and worst_choice (from 0), for MaxDiff best_item and worst_item. For DR-CBC and BW-CBC with a separate second block each entry additionally carries block (1 or 2). The key _choicery_design_context contains the provenance (source), the release identifier (release_id) and the design version seen per task.

(3) Alternatives and tasks are counted from 0 in the raw data; the wide exports (Section 3) write the same values counted from 1.

(4) The file raw_responses.json inside the project backup (Section 6) has the same structure as the JSON export; the entries additionally contain saved_at (time of the last save), where assigned unique_id, and for responses with a panel ID response_metadata with panel_id and panel_id_parameter.

6 Project Export ZIP

6.1 Analysis & Re-import Archive (ZIP)

(1) The file name consists of the project name and _project_archive.zip. The archive always contains:

File Purpose
README.txt description of the contents, project name, project identifier, generation time (UTC), published version, number of respondents
survey_responses.csv response data in wide format (Section 3), UTF-8 with BOM
codebook.xlsx codebook with the sheets Codebook, Study Metadata, Item Configuration, Choice Designs
codebook_import.csv machine-readable codebook for re-import with the columns item_id, item_type, item_type_label, variable, code, value_label, question, required, documented_configuration, project_name, project_id, generated_timestamp_utc, documented_source, published_version, published_revision_id, active_design_ids, draft_differs_from_published

(2) If the project contains conjoint tasks, the following are added: one folder per task with a running number, type key and task name (for example 01_CBC_Taskname); inside it, for CBC, CBC Shop, DR-CBC and BW-CBC the files design.csv, responses.csv, labels.csv, for MaxDiff and Anchored MaxDiff data.csv and attributes.csv. At the top level are covariates.csv (column sys_RespNum plus the Data Editor columns) and codebook.csv. The columns of these files are described in Section 7.

6.2 Full Project Backup (ZIP)

(1) The file name consists of the project name, _backup_ and a timestamp. The archive contains the complete project folder with configuration, designs, responses, analysis runs, media files and the published versions (folder _releases). Excluded are lock files, temporary files, automatic safety copies, caches, unsaved design drafts and the personal runtime files of the market simulator.

(2) Important files and their keys:

File Content
project.json project metadata: id, name, description, user_id, created_at, modified_at, counters (design_count, total_responses, total_participants, completed_participants, manual_participants, incomplete_participants, total_questions), task_name, survey_question, settings
project_settings.json project settings (survey behaviour, conditions, display)
survey_flow.json JSON list of the survey items in flow order; each item has id, type, position, variable_name, name, config and, depending on type, required, page_count, task_name
responses/raw_responses.json raw response data (Section 5)
responses/survey_responses.csv most recently generated wide table
designs, cbc_shop_designs, drcbc_designs, bwcbc_designs one folder per task with choice_tasks.csv, attribute_config.json and design_stats.json (Section 7)
maxdiff_designs, anchored_maxdiff_designs one JSON file per design (Section 7)
analysis/hb_runs one folder per HB run with hb_results.json, the CSV result files and the Excel file (Section 8)
analysis/respondent_mapping.json and task-specific mapping files mapping of the consecutive resp.id of the estimation (Section 4(4)) to the participant_id
_releases published versions with survey_flow.json and designs as of publication

6.3 Study Definition Package

(1) The package is bound to a published version and contains no response data. The file name consists of the project name, _study_definition_ and the release identifier. Contents:

File Content
survey_flow.json, page_names.json, page_timers.json, randomization_blocks.json, maxdiff_config.json, anchored_maxdiff_config.json, no_choice_config.json, item_name_tombstones.json configuration files of the published version, where present
design folders (designs, drcbc_designs, bwcbc_designs, cbc_shop_designs, maxdiff_designs, anchored_maxdiff_designs) design files of the published version
project_settings_excerpt.json excerpt of the study settings (experimental_conditions, condition_assignment, condition_weights, randomize_condition_assignment, progress_bar_style)
documentation/codebook.xlsx codebook
documentation/study_documentation.txt study documentation as text
release_manifest.json release_id, generated_at, version number, timestamp, content hash, changelog
README.txt description
package_manifest.json inventory of all files with size and SHA-256 checksum, package_format_version, package_type, contains_respondent_data (always false)

7 Design Files

7.1 CBC, CBC Shop, DR-CBC, BW-CBC

(1) The design is stored per task as choice_tasks.csv (UTF-8 with BOM, comma-separated). Columns: participant_id (design version, from 0), task_id (from 0), alternative_id (from 0), is_fixed_task (True for fixed tasks, otherwise False) and one column per attribute with the level label. Depending on the generator, further technical columns follow (fixed_task_position, obsID, profile_id, num_alts). The download from the design page carries a file name made of choice_tasks_, the project identifier and the design identifier.

(2) attribute_config.json contains the levels of each attribute in the order defined by the Customer; design_stats.json contains the design statistics.

(3) In the exchange format of the archives (Section 6.1), design.csv has the columns Version (0 = Fixed Task), Task, Concept and one column per attribute with the level code from 1; Version, Task and Concept count from 1, fixed tasks have Version 0. responses.csv has the columns sys_RespNum, Version and one column per task made of the task name and _Fixed1, _Random1 and so on; DR-CBC adds one column per task with suffix _none (1 = would buy, 2 = would not buy), BW-CBC uses per task the suffixes _b (best) and _w (worst alternative) and optionally _none. labels.csv has the columns attribute, level, label.

7.2 MaxDiff, Anchored MaxDiff

(1) Designs are stored as one JSON file per design. They contain name, design_type, items (list of items), items_per_task, tasks_per_respondent, total_items, created_at and, depending on the generator, either tasks (one task set for all respondents) or num_versions, respondent_designs, generator_algorithm, generator_details and balance_statistics.

(2) Response data in the exchange format: data.csv with ID, Set, Position, Item, Response (1 = best item, -1 = worst item, 0 = otherwise); attributes.csv with Label, Item Number; for Anchored MaxDiff calibration.csv with ID, Item, Anchor (1 = yes, 0 = no). The download "MaxDiff Responses (Long Format)" under Analysis > Downloads delivers the same files as a ZIP with file names made of the task name and the design identifier.

8 HB Results

8.1 hb_results.json (CBC, CBC Shop, DR-CBC, BW-CBC, TasteNet)

(1) Every HB run stores hb_results.json in a uniform schema (schema_version 1). Required fields:

Field Content
attributes list of attribute names without the none option
attribute_info per attribute level_names, is_linear, type (categorical or linear)
attr_types attribute name to categorical or linear
beta_individual per parameter a list of the individual utilities in the order of the consecutive resp.id of the estimation (Section 4(4))
beta_mean means in the order of zc_column_names; the form parameter name to mean is stored in beta_mean_dict
n_respondents number of respondents
analysis_type cbc, cbc_shop, drcbc, bwcbc, tastenet or tastenet_neural_hb
engine julia
schema_version 1

Further fields include estimation_date, zc_column_names, zc_betas_individual, zc_mean, importance_individual, attribute_importance, summary_utilities, rlh_individual, flagged_respondents, none_option_enabled, none_opt_utility, iterations, burn_in, n_chains, config, warnings, task_id, task_type.

(2) Parameter names in beta_individual follow a fixed convention: categorical level Attribute_Level (for example Color_Black), linear attribute the attribute name only (for example Price), none option NoneOpt or ASC_none.

(3) MaxDiff and Anchored MaxDiff store their own schema with analysis_type (maxdiff or anchored_maxdiff), item_labels, n_items, n_respondents, engine, schema_version and, per scale, an object mapping item label to the list of individual values.

8.2 CSV result files per run

(1) CBC family (UTF-8 with BOM): Individual_Utilities_Raw.csv and Individual_Utilities_ZC_Diffs.csv (columns Respondent, RLH, with convergence diagnostics Rhat_Max and Rhat_Mean, then one column per parameter), Individual_Importances.csv (Respondent and one column per attribute), Summary_Utilities.csv, Diagnostics.csv, Flagged_Respondents.csv, Config.csv, Attribute_Labels.csv; depending on settings Respondent_Holdout_Predictions.csv, Parameter_Diagnostics.csv and, with covariates, Covariate_Alpha_Draws.csv, Covariate_Effects_Columns.csv, Covariate_Effects_Summary.csv, Covariate_Effects_ZC_Diffs_Summary.csv, Covariate_Importances_Summary.csv, Covariate_Explained_Share_Summary.csv.

(2) MaxDiff family: Probability_Scale.csv, Softmax_Preference_Share.csv, Zero_Anchored_Interval_Scale.csv, Zero_Centered_Raw_Scores.csv, Summary.csv, Diagnostics.csv, Parameter_Diagnostics.csv, Flagged_Respondents.csv, Settings.csv.

(3) Under Analysis > Downloads, Parameter_Diagnostics.csv and Diagnostics.csv can be downloaded individually; the Advanced Analytics methods deliver all CSV files of a run as a ZIP.

8.3 Excel reports

(1) CBC family: file name made of the task name, the design identifier and _HB_Results.xlsx; sheets Summary, Settings & Diagnostics, Raw Part-Worths, ZC-Diffs Part-Worths, Importances.

(2) MaxDiff family: maxdiff_hb_results.xlsx in the run folder, downloaded as MaxDiff_HB_Results.xlsx with the design identifier; sheets Summary, Settings Summary, Probability Scale, Preference Index, Worst-Zero Interval Scale, Zero-Centered Raw Scores, Parameter Diagnostics; for Anchored MaxDiff additionally Anchor Summary, Purchase Probability, Anchored Utilities, Consideration Sets.

8.4 Utilities in the wide export

For an export with utilities (Section 2, Preference Scores), columns are appended to the wide table for each selected run. The column name starts with the sanitised run name (or the run identifier when no run name exists), followed by _raw_utilities_ plus parameter name, _ZC_utilities_ plus parameter name or _importance_ plus attribute name; the none option receives the suffix _none_option.

8.5 Replication packages

(1) The Julia replication package for HB is named after the project name, _Julia_HB_Package_ and the run name. Contents of the package folder:

File Content
hb_analysis.jl executable Julia script for the estimation
data/choicemodel_data.csv long-format data (Section 4)
data/level_names.json attribute and level labels
data/package_config.json, data/input_manifest.json, data/choicery_source_manifest.json estimation settings, checksums of the input files, provenance (project, run)
julia_env/Project.toml, julia_env/Manifest.toml Julia environment with open-source dependencies
README.txt, README.md, PARAMETER_GUIDE.txt, _docs/PARAMETER_GUIDE.md, _docs/OUTPUT_GUIDE.md instructions, parameter description, description of the outputs
MANIFEST.json package format version, project, run, generation time, fingerprints, expected result files
run.bat, run.ps1, run.sh, resolve_env.jl launch scripts
_legal/DISCLAIMER.txt, _legal/REPLICATION_PACKAGE_TERMS.txt, _legal/THIRD_PARTY_DEPENDENCIES.txt executable code notice, package terms, third-party dependency notice

The script writes its results to the folder results and produces a file ending in _IMPORT_INTO_CHOICERY.zip that can be imported into Choicery; Population_Covariance_Draws.csv remains local only.

(2) The replication packages for Latent Class, Interaction Search and TasteNet are Python packages with README.md, MANIFEST.json, requirements.txt, the runner script, the folder data with input data, the folder _docs with parameter and output descriptions and the same folder _legal.

9 Further Exports

(1) Excel reports: the wide export as Excel contains the sheets Data and Labels (Section 3.1); the HB reports are described in Section 8.3.

(2) SPSS: the .sav file (Section 3.1) carries the project name, with the suffix _with_utilities when utilities are included.

(3) Codebook: codebook.xlsx (file name made of the project name and _codebook.xlsx) contains the sheet Codebook with the columns Variable, Page, Question / Description, Type, Value range, Coding / Response options and the sheets Study Metadata, Item Configuration and Choice Designs.

(4) Market simulator: the Excel export of a simulation contains the sheets Summary, Individual Choices, Individual Probabilities and Product Definitions; the export of a willingness-to-pay analysis the sheets Summary, Segment WTP, Segment Coding and Methodology; the export of a share-of-preference iteration the sheets Summary, Scenarios and Focal Profile. Results of share-of-preference iterations are also available as CSV, calculation logs (for example for the simulation and willingness to pay) as text files (TXT) and simulation reports as PDF.

(5) Activity log: as CSV with the columns Timestamp (with the time zone stated), User, Action, Item, Item Type, Details, or as a text file with the columns Timestamp, User, Action, Item, Details in fixed width.

(6) Latent Class, TasteNet and Interaction Search (Advanced Analytics) deliver per run an Excel report, all CSV files as a ZIP, the results as JSON and a replication package (Section 8.5, plan-bound).

(7) PDF reports: for HB, Latent Class, TasteNet and Interaction Search as well as for the market simulator, the results view can be downloaded as a PDF report. The reports serve presentation purposes; the results themselves are available in structured form in the Excel, CSV and JSON exports.

(8) Further downloads (result tables of the survey analysis as CSV, XLSX, DOCX or RTF, study documentation and paper version of the survey as PDF or DOCX) are presentations derived from the data in the structured exports of this register and have no fixed data structure.

10 Account Export

(1) Under Profile > Personal data the Customer downloads the file choicery-personal-data.zip. It contains account-level data only; project content, responses, designs and analysis results are provided through the project exports (Sections 3 to 9).

(2) Contents:

File Columns or fields
README.txt description of the archive
account_profile.csv columns field, value with account_id, email, name, customer_type, organization_name, account_status, created_at, email_verified_at, signup_channel, last_login_at, password_changed_at, terms_version_accepted, dpa_version_accepted, privacy_version_acknowledged, legal_terms_accepted_at
account_deletion.csv columns field, value with the status of a deletion request, requested_at, scheduled_purge_at, reason, immediate_delete_requested, paused_project_count, paused_project_ids, client_ip_at_request, user_agent_at_request; without a deletion request a note
owned_projects.csv id, name, is_active, is_archived, status, created_at, updated_at, workspace_id
account_activity.csv up to 500 most recent account events with time, label, category, action, outcome, ip_address, user_agent, request_method, request_path, project_id
usage_events.csv all events of the usage statistics of the application for the Customer's own account from the last 90 days, without a cap on the number of rows, with occurred_at, source, event_name, dim1, dim2, endpoint, duration_ms; empty if the user has objected or nothing has been recorded yet

(3) Timestamps are ISO 8601; boolean values are true or false; lists are separated by semicolons.

11 Programming Interface for Switching (Article 30(2) Data Act)

(1) Purpose. The interface makes the data required for switching to another provider or to the Customer's own environment available for automated retrieval. It is read-only and is available in all plans free of charge. Project access rights are the same as in the user interface.

(2) Authentication. Every call carries a personal access token in the HTTP header Authorization: Bearer <token>. The Customer manages tokens under Profile > API access: they assign a name, see the token once and can revoke it at any time. At present, at most five active tokens per account are possible. A token starts with chc_; the Provider stores only its SHA-256 hash and the first twelve characters for display. The interface does not evaluate sessions or cookies of the user interface.

(3) Endpoints. The base is https://app.choicery.ai/api/v1; <project_id> is the identifier from the project list. All endpoints are called with HTTP GET.

Endpoint Content Format
/api/v1/projects Object with projects and count. Per project: id, name, conjoint_type (type of the first conjoint task: CBC, CBCShop, DRCBC, BWCBC, MaxDiff, AnchoredMaxDiff or null), conjoint_types (all types in questionnaire order), created_at, updated_at (ISO 8601), export_allowed JSON (RFC 8259)
/api/v1/projects/<project_id>/export.zip Full project backup, identical in content to Full Project Backup (Section 6.2) ZIP
/api/v1/projects/<project_id>/responses.json Raw data of the respondents, identical in content to Raw Responses (JSON) without _metadata (Section 5); without parameters all respondents JSON (RFC 8259)
/api/v1/projects/<project_id>/responses.csv Response data in wide format, identical in content to Survey Responses without utilities (Section 3), UTF-8 with BOM; without parameters all respondents with the stored codes CSV (RFC 4180)
/api/v1/projects/<project_id>/codebook.csv Codebook of the current configuration: one row per column of responses.csv, in the same order and under the same names, with variable, question, item (text of the grid row, ranked item, scale pair or option for questions with several columns), type and values (every code with its label, for example 1 = strongly disagree; 2; 3; 4; 5; 6 = strongly agree), UTF-8 with BOM; without response data it lists the documented variables CSV (RFC 4180)
/api/v1/projects/<project_id>/value_labels.csv Value labels of the current configuration: one row per labelled code with variable, code and label, UTF-8 with BOM CSV (RFC 4180)

File responses carry Content-Disposition: attachment. Response files and project backups use the respective UI download name; the API codebook uses <project_name>_codebook.csv and the value labels <project_name>_value_labels.csv, each with a sanitized project name. Variable names are those of the response columns, also for questions without a name of their own (name derived from the question text) and for conflicting names (suffix). Added Data Editor columns have no codebook description. Join the value labels on both variable and code, retaining unmatched answers.

Parameters of responses.csv and responses.json (each at most once, never empty; an invalid value returns 400):

Parameter Values Effect
status all (default), complete, incomplete completed or not completed responses only
since, until day YYYY-MM-DD or ISO 8601 timestamp with Z or an offset, e.g. 2026-10-15T08:00:00Z time window since <= response time < until; the response time is the completion time, for responses not completed the start time
labels codes (default), text text replaces codes by answer texts in CSV only; responses.json accepts labels=codes and rejects labels=text with 400

Time windows: a day means the calendar day in Europe/Berlin; since starts at midnight, until includes the named day. A timestamp without a time zone is rejected; a + in the offset must be written as %2B in the URL. Bounds given as timestamps are half-open, so consecutive windows contain a response exactly once. Responses without a usable time are left out when a time window is set. A window without matches returns a CSV file with the header row only or an empty JSON object. A response not completed moves from its start time to its completion time when it is completed; for incremental retrieval status=complete is therefore recommended. A time window does not capture later changes in the Data Editor or deletions of older responses; a retrieval without a time window returns the complete state.

Answer texts (labels=text): columns of single choice, Likert scale and single-choice product evaluation are converted only when every code of the value range has an unambiguous label. Rankings, partly labelled scales, semantic differentials, multiple choice (0/1), numbers, free text, conjoint and system columns keep their stored values. If a nonblank answer cannot be mapped, for example a deleted option, the entire column stays unchanged for that download. Imported codes such as 01, fractional codes and text identifiers are not converted. Missing cells remain missing. Other selections can become Other; their separate free-text fields retain their input. CSV formula protection also applies to the inserted labels and codebook question text. For calculations and sorting, use codes together with the codebook. It describes the current configuration, not historical option definitions.

(4) Example calls with curl (insert token):

curl -H "Authorization: Bearer chc_..." https://app.choicery.ai/api/v1/projects

curl -H "Authorization: Bearer chc_..." -o project.zip https://app.choicery.ai/api/v1/projects/<project_id>/export.zip

curl -H "Authorization: Bearer chc_..." -o responses.csv https://app.choicery.ai/api/v1/projects/<project_id>/responses.csv

curl -H "Authorization: Bearer chc_..." -o new.csv "https://app.choicery.ai/api/v1/projects/<project_id>/responses.csv?labels=text&status=complete&since=2026-10-15T08:00:00Z"

For Power BI and Excel (Power Query), Data > Export on Pro plans shows the project's addresses and a ready-made query under "Load in Power BI or Excel". Paste it into the Advanced Editor in Power Query, replace only <YOUR_TOKEN> there, retain the Bearer prefix and choose "Anonymous" as sign-in. The Choicery export page never displays or accepts the token. A URL alone does not supply the required Authorization header.

For Google Sheets, Data > Export on Pro plans offers a connection of its own that needs no access token of the interface. After signing in to Google with a Google account of one's choice and confirming the account shown, Choicery creates a new spreadsheet in that account's Google Drive and updates it about every hour. Two variants are available: answer texts in the sheet "Answers", or codes in the sheet "Answers" together with the codebook in the sheet "Codebook" (the same content as the API codebook.csv: one row per column of "Answers"). The content is the same as the wide response export (Section 3), with all responses including incomplete ones. The sheets "Answers" and "Codebook" belong to Choicery and are replaced completely on each update; own analyses belong in other sheets, which remain unchanged. Choicery refuses very large exports with a hint to Power BI or Excel instead of truncating them: at present, an update may transfer at most 10 MB in one write request, and the spreadsheet may have at most 10 million cells. Choicery does not delete the spreadsheet; after "Stop updating" or disconnecting in the profile, it stays in the Google Drive.

For Power BI incremental refresh, create the date/time parameters RangeStart and RangeEnd, explicitly interpret them as UTC, and replace the template's Query record with:

Query = [
    labels = "codes",
    status = "complete",
    since = DateTime.ToText(RangeStart, [Format="yyyy-MM-dd'T'HH:mm:ss.ffffff'Z'", Culture="en-US"]),
    until = DateTime.ToText(RangeEnd, [Format="yyyy-MM-dd'T'HH:mm:ss.ffffff'Z'", Culture="en-US"])
]

Keep the fixed base URL, RelativePath and Authorization header. Configure the refresh policy separately and verify the query in Desktop and the Power BI Service. Use timestamp bounds, not inclusive end-day values. A full reconciliation requires a request without status or time filters and replacement of the previous local data, including deleted rows. These endpoints are not a change feed.

(5) Limits. At present, 60 calls per minute are permitted per token and endpoint. The response headers X-RateLimit-Limit and X-RateLimit-Remaining, and Retry-After when the limit is exceeded, report the current state. Wait for Retry-After before retrying a 429 response. Responses carry Cache-Control: no-store, Pragma: no-cache and Referrer-Policy: no-referrer. Requests that reach successful token authentication emit api_token.used with endpoint and outcome in the account log (Section 10, file account_activity.csv). A project identifier is attached only after successful access validation. Rejections before token authentication, including an early rate limit, do not emit this event.

(6) Errors. Error responses are JSON objects with the field error (text) and, where applicable, error_code:

HTTP status error_code Meaning
401 auth_required, invalid_token token missing, unknown or revoked
403 export_forbidden project is visible but the account holder has no export right
404 project_not_found project does not exist or is not visible to the account holder
400 invalid_parameter parameter invalid, empty or repeated (paragraph 3)
404 no_response_data project without response data (only responses.csv)
422 codebook_unavailable, labels_unavailable codebook cannot be built because imported codes have no unambiguous mapping to answer texts
429 rate_limited limit under paragraph 5 exceeded
500 server_error export failed; retry recommended

12 Standards and Interoperability

Format Standard Implementation at Choicery
CSV RFC 4180 comma as separator, double quotation marks where needed, one header row, UTF-8 with BOM (exception in Section 4(4))
JSON RFC 8259 UTF-8, non-ASCII characters unchanged, two-space indentation
XLSX ECMA-376 (Office Open XML) sheets as described in Sections 3, 8 and 9
SAV SPSS System File value labels and variable labels from the codebook
ZIP ZIP file format with Deflate compression archives of Sections 6, 8, 10 and 11
TOML TOML Julia environment files in the replication package
PDF PDF (ISO 32000) reports under Section 9(7) and (8)

The character set of all text exports is UTF-8. Timestamps of response data are in UTC; the activity log states the time zone used in its header row. The participant_id is the same identifier in all response exports; in the long format via Data > Export Data it is held in resp.id (Section 4(3)). In the input data of the estimation (Section 4(4)) and in the HB results (Section 8, column Respondent), by contrast, the respondent identifier is a consecutive number of the respective run; the mapping to the participant_id is held in the mapping files of the project backup (Section 6.2). These identifiers allow wide format, long format, raw data and HB results to be joined.

Back to Choicery .Terms .Privacy .Contact .Legal Notice (Impressum) .Legal .Verträge hier kündigen (Cancel contracts here) .Vertrag widerrufen (Withdraw from contract) .info@choicery.ai