---
title: "Health logs and symptoms"
description: "Create health logs, record observations, and browse symptom choices."
canonical_url: "https://scholarxiv.com/developers/docs/health-api/trackers"
markdown_url: "https://scholarxiv.com/developers/docs/health-api/trackers.md"
---

> For the complete documentation index, see [llms.txt](/llms.txt).

# Health logs and symptoms
URL: /developers/docs/health-api/trackers
LLM index: /llms.txt
Description: Create health logs, record observations, and browse symptom choices.
Related: health-api, health-api/quickstart

# Health logs and symptoms

First save a profile with explicit consent, then create a log:

```bash
curl https://scholarxiv.com/api/v1/health/trackers \
  -H "Authorization: Bearer $SCHOLARXIV_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"title":"Recovery log","kind":"acute"}'
```

The response is `{ id, title, kind, status, startedAt, createdAt, updatedAt, entries }`. Kinds are `acute`, `pregnancy`, and `custom`; titles must contain 1–80 characters. New logs are active. Fetch symptom options with `GET /api/v1/health/symptoms?kind=acute` (the default kind). The response is `{ kind, symptoms: [{ id, label, urgent? }] }`, using the same options as the website. You may also record your own symptom strings.

Use the returned log `id` as `trackerId`:

```bash
curl "https://scholarxiv.com/api/v1/health/trackers/$TRACKER_ID/entries" \
  -H "Authorization: Bearer $SCHOLARXIV_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"severity":4,"symptoms":["cough","fatigue"],"temperature":37.8,"temperatureUnit":"C","activityImpact":"limited","note":"Improving today"}'
```

| Entry field                      | Validation                                                                      |
| -------------------------------- | ------------------------------------------------------------------------------- |
| `severity`                       | Integer from 0 to 10                                                            |
| `symptoms`                       | Up to 16 nonblank strings, each up to 60 characters; duplicates are removed     |
| `temperature`, `temperatureUnit` | Positive number and `C` or `F`; send both together. Stored to one decimal place |
| `activityImpact`                 | `normal`, `limited`, or `unable`                                                |
| `note`                           | Up to 1,200 characters                                                          |

Supply at least one observation. Invalid fields, unknown properties, and empty entries return 400. The response contains the saved fields plus server-generated `id` and `recordedAt`; omitted observation fields are `null` or an empty symptoms array. Each log retains its newest 180 entries.

`GET /api/v1/health/trackers?limit=20` returns `{ consentGiven, trackers, next_cursor }`. Follow `next_cursor` with `?cursor=...&limit=20`; limit is 1–100 and ordering is newest log ID first. Without consent the list is empty. `GET /api/v1/health/trackers/{trackerId}` reads a log; `DELETE` permanently removes it and returns `{ "deleted": true }`. Unknown or another account's IDs return 404. Creating logs, reading individual logs, and adding entries require consent. Deletion remains available without consent.

## Sitemap

See the full [sitemap](/sitemap.md) for all pages.
Docs-scoped sitemap: [/docs/sitemap.md](/docs/sitemap.md).
Well-known sitemap: [/.well-known/sitemap.md](/.well-known/sitemap.md).
