# Get a member's needs-analysis comments

`GET /api/members/prospects/{memberId}/needs-analysis`

- **Success:** `200 OK`
- **Products:** not restricted by product
- **Features:** Prospecting (`PROSPECTS`)

HTML version: [Get a member's needs-analysis comments](https://support.gladstonesoftware.cloud/reference/members/get-a-members-needs-analysis-comments)

## Overview

Retrieves the free-text needs-analysis note held against a member. A *needs analysis* is the conversation a member of staff has with a prospect about their goals and requirements; the note is what the staff member wrote down. It is a single block of text, not a questionnaire, and a member has at most one — saving again overwrites it rather than adding a second.

Note the URL says `prospects`, but the id is an ordinary member id — the same id you use everywhere else in the Members API, and the one the platform validates against the member records when the note is saved.

Read the status code before the body. A member who has never had a needs analysis recorded returns **`204 No Content` with an empty body**, not `200` with nulls and not `404`. A client that assumes a JSON body on any 2xx will fail on the most common case.

The note itself is written with `PUT` to the same URL; the user and date fields below are stamped by the platform at that point and cannot be set by you.

## Endpoint

`GET {base_url}/api/members/prospects/{memberId}/needs-analysis`

`{base_url}` is the environment URL issued to your integration. See [Authenticating with Gladstone APIs](../../guides/authenticating-with-gladstone-apis.md).

## Path parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `memberId` | integer (int32) | Yes | The member whose needs-analysis note you want. Must be greater than `0` — `0` and negative values are rejected with `400` before any lookup. A member id that does not exist is not distinguished from one that exists but has no note: both give `204`. |

## Sample request

```bash title="cURL"
curl -X GET '{base_url}/api/members/prospects/{memberId}/needs-analysis' \
  -H 'Authorization: Bearer {accessToken}' \
  -H 'X-Use-SSO: true'
```

## Response fields

| Field | Type | Description |
|-------|------|-------------|
| `id` | integer (int32) | The id of the needs-analysis record itself. You do not need it for anything — the note is always addressed by member id, and there is no endpoint that takes this value. |
| `memberId` | integer (int32) | The member the note belongs to. Always equal to the `memberId` you asked for. |
| `comments` | string | The note itself, as typed by staff. Up to 4000 characters; longer text is refused when saving. It is never `null` on a saved note — clearing the note saves an empty string, so `""` means "the note was deliberately emptied" while a `204` means "there has never been a note". |
| `raisedByUserId` | string | The staff user id that first created the note, captured from the logged-in user at the time. `null` when the note was created by a caller with no user in context, such as a server-to-server integration token. Not a member id. |
| `raisedDate` | string (date-time) | When the note was first created, in UTC. Fixed at creation and not touched by later edits, so use it to tell how long the member has been engaged with. |
| `lastActionUserId` | string | The staff user id that last edited the note. Equal to `raisedByUserId` until someone else edits it, and `null` under the same conditions. |
| `lastActionDate` | string (date-time) | When the note was last saved, in UTC. Equal to `raisedDate` on a note that has never been edited. Compare the two to tell a fresh note from a maintained one. |

## Sample response

```json title="200 OK"
{
  "id": 12345,
  "memberId": 12345,
  "comments": "string",
  "raisedByUserId": "string",
  "raisedDate": "2026-08-14T19:00:00Z",
  "lastActionUserId": "string",
  "lastActionDate": "2026-08-14T19:00:00Z"
}
```

## Errors

| Status | Meaning | When |
|--------|---------|------|
| `400` | Bad request | `memberId` is `0` or negative. The body is `A valid memberId is required.` |
| `500` | Internal server error | An unexpected server-side failure while reading the note. In particular, if more than one needs-analysis note somehow exists for the member, the read fails here rather than returning one of them. |
