When I do this:

$result = civicrm_api3('Participant', 'get', [
  'sequential' => 1,
  'return' => ["custom_14"],
  'event_id' => 3,

In the results I get the desired custom field, but I also get all the other custom fields. At first I thought it's just the entire custom field set but then I tested it and it returns all the custom fields for participants no matter which field set they belong to.

 "is_error": 0,
    "version": 3,
    "count": 18,
    "values": [
            "contact_id": "181",
            "participant_id": "46",
            "civicrm_value_ew_9_id": "1",
            "custom_14": "dsfa",
            "custom_14_1": "dsfa",
            "custom_15": "d",
            "custom_15_1": "d",
            "custom_16": "AAA",
            "custom_16_1": "AAA",
            "id": "46"

The value I looked for is returned with civicrm_value prefix, but why is the other data displayed as well? Is this a bug or am I missing something? This seems to be the case for the Participant entity only.

I tested this on CiviCRM 5.9.1 and Michael McAndrew docker image with CiviCRM 5.11.alpha1.

  • 1
    Doesn't answer your question specifically, but there are inconsistencies in APIv3 and APIv4 aims to improve that. – Aidan Feb 5 '19 at 15:07

This is almost certainly a bug, but unlikely to be fixed in v3.

As Aidan mentioned - there are non-standard APIs in v3, and the Participant API is one of them, along with Contact and EntityTag.

Your Answer

