Women's Health data types

The Google Health API provides data types for tracking reproductive health, symptoms, and moods. These types allow you to log menstrual periods, ovulation test results, and associated physical and emotional states.

Supported data types

Table: Google Health API Women's Health data types
Data type
  dataType
  filter parameter
Available
operations
Scope
Menstrual Period
menstrual-period
menstrual_period
Record type: Interval
create, update, batchDelete .reproductive_health.writeonly
Moods
moods
moods
Record type: Sample
create, update, batchDelete .mindfulness.writeonly
Ovulation Test
ovulation-test
ovulation_test
Record type: Sample
create, update, batchDelete .reproductive_health.writeonly
Symptoms
symptoms
symptoms
Record type: Sample
create, update, batchDelete .logged_symptoms.writeonly

Menstrual Period

A Menstrual Period represents a period interval logged by a user. For a complete list of fields and descriptions, see MenstrualPeriod.

Guidelines for logging periods

  • End dates are required: All period records must include an end date or time. End dates should never be null.
  • Handling ongoing periods: If you are unable to provide an end date when the record is created (for example, if the period is ongoing), set the end date to match the start date. Update the record daily, setting the end date to the current date, until the period ends and the final end date is confirmed.
  • Confirmed periods: All period records are treated as confirmed periods.

Create a menstrual period

To create a menstrual period entry, send a POST request to the menstrual-period data points endpoint. The response includes the name field containing the data-point-id, which can be used in a Batch Delete or Update (Patch) request.

Request

POST https://health.googleapis.com/v4/users/me/dataTypes/menstrual-period/dataPoints
Authorization: Bearer access-token
Content-Type: application/json

{
  "menstrualPeriod": {
    "interval": {
      "startTime": "2026-07-01T08:00:00Z",
      "endTime": "2026-07-05T20:00:00Z"
    },
    "notes": "Regular flow reported."
  }
}

Response

{
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.devicesandservices.health.v4.DataPoint",
    "name": "users/user-id/dataTypes/menstrual-period/dataPoints/data-point-id",
    "menstrualPeriod": {
      "interval": {
        "startTime": "2026-07-01T08:00:00Z",
        "startUtcOffset": "0s",
        "endTime": "2026-07-05T20:00:00Z",
        "endUtcOffset": "0s",
        "civilStartTime": {
          "date": { "year": 2026, "month": 7, "day": 1 },
          "time": { "hours": 8 }
        },
        "civilEndTime": {
          "date": { "year": 2026, "month": 7, "day": 5 },
          "time": { "hours": 20 }
        }
      },
      "notes": "Regular flow reported."
    }
  }
}

Ovulation Test

Records an ovulation test observation. For a complete list of fields and descriptions, see OvulationTest.

Create an ovulation test

To log an ovulation test result, send a POST request to the ovulation-test data points endpoint. The response includes the name field containing the data-point-id, which can be used in a Batch Delete or Update (Patch) request.

Request

POST https://health.googleapis.com/v4/users/me/dataTypes/ovulation-test/dataPoints
Authorization: Bearer access-token
Content-Type: application/json

{
  "ovulationTest": {
    "sampleTime": {
      "physicalTime": "2026-07-14T07:30:00Z"
    },
    "result": "LUTEINIZING_HORMONE_SURGE"
  }
}

Response

{
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.devicesandservices.health.v4.DataPoint",
    "name": "users/user-id/dataTypes/ovulation-test/dataPoints/data-point-id",
    "ovulationTest": {
      "sampleTime": {
        "physicalTime": "2026-07-14T07:30:00Z",
        "utcOffset": "0s",
        "civilTime": {
          "date": { "year": 2026, "month": 7, "day": 14 },
          "time": { "hours": 7, "minutes": 30 }
        }
      },
      "result": "LUTEINIZING_HORMONE_SURGE"
    }
  }
}

Symptoms

Records physical symptoms experienced at a given timestamp. For a complete list of fields and descriptions, see Symptoms.

Create a symptom log

To log physical symptoms, send a POST request to the symptoms data points endpoint. The response includes the name field containing the data-point-id, which can be used in a Batch Delete or Update (Patch) request.

Request

POST https://health.googleapis.com/v4/users/me/dataTypes/symptoms/dataPoints
Authorization: Bearer access-token
Content-Type: application/json

{
  "symptoms": {
    "sampleTime": {
      "physicalTime": "2026-07-02T19:00:00Z"
    },
    "symptoms": [ "CRAMPS", "BLOATED", "FATIGUE" ]
  }
}

Response

{
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.devicesandservices.health.v4.DataPoint",
    "name": "users/user-id/dataTypes/symptoms/dataPoints/data-point-id",
    "symptoms": {
      "sampleTime": {
        "physicalTime": "2026-07-02T19:00:00Z",
        "utcOffset": "0s",
        "civilTime": {
          "date": { "year": 2026, "month": 7, "day": 2 },
          "time": { "hours": 19 }
        }
      },
      "symptoms": [ "CRAMPS", "BLOATED", "FATIGUE" ]
    }
  }
}

Moods

Records emotional states and valances at a given timestamp. For a complete list of fields and descriptions, see Moods.

Create a mood log

To log emotional states, send a POST request to the moods data points endpoint. The response includes the name field containing the data-point-id, which can be used in a Batch Delete or Update (Patch) request.

Request

POST https://health.googleapis.com/v4/users/me/dataTypes/moods/dataPoints
Authorization: Bearer access-token
Content-Type: application/json

{
  "moods": {
    "sampleTime": {
      "physicalTime": "2026-07-02T21:00:00Z"
    },
    "moods": [ "CALM", "CONTENT" ],
    "valences": [ "PLEASANT" ]
  }
}

Response

{
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.devicesandservices.health.v4.DataPoint",
    "name": "users/user-id/dataTypes/moods/dataPoints/data-point-id",
    "moods": {
      "sampleTime": {
        "physicalTime": "2026-07-02T21:00:00Z",
        "utcOffset": "0s",
        "civilTime": {
          "date": { "year": 2026, "month": 7, "day": 2 },
          "time": { "hours": 21 }
        }
      },
      "moods": [ "CALM", "CONTENT" ],
      "valences": [ "PLEASANT" ]
    }
  }
}

Batch Delete

To delete one or more data points, send a POST request to the batchDelete endpoint with the resource names of the entries to remove.

POST https://health.googleapis.com/v4/users/me/dataTypes/data-type-name/dataPoints:batchDelete
Authorization: Bearer access-token
Content-Type: application/json

{
  "names": [
    "users/me/dataTypes/data-type/dataPoints/data-point-id"
  ]
}

Example: Deleting multiple data points

To delete multiple data points in a single request, include their resource names in the names array.

POST https://health.googleapis.com/v4/users/me/dataTypes/symptoms/dataPoints:batchDelete
Authorization: Bearer access-token
Content-Type: application/json

{
  "names": [
    "users/user-id/dataTypes/symptoms/dataPoints/symptom-id-1",
    "users/user-id/dataTypes/symptoms/dataPoints/symptom-id-2"
  ]
}