# Get an X account's "About this account" details

`GET /v1/x/users/{user}/about`

Returns what X shows under "About this account": the country X attributes the account to, how it connects to X, how many times its username has changed, and identity verification. Useful for judging whether an account is what it claims to be. 404 when the account does not exist, or is protected: a protected account's posts and connections are visible only to accounts it approved. Billed as one profile, plus one more when `{user}` is a numeric id.

**Price:** 1 credit per call, plus 2 credits per X profile returned. Failed and refused calls cost nothing.

**Rate limit:** Counts as 1 request against your per-minute rate limit.

**MCP tool:** `get_x_user_about`, on every [MCP](/mcp) connection.

Requires an API key, sent as `Authorization: Bearer <key>`.

## Request

```bash
curl --request GET \
  --url https://api.weirapp.io/v1/x/users/USER/about \
  --header "Authorization: Bearer $WEIR_API_KEY"
```

### Path parameters

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `user` | string | yes | A username, with or without the `@`, or a numeric account id. An all-digit value is read as an id. · matches `^@?[A-Za-z0-9_]{1,50}$` |

## Response

The account's about details.

### `200`

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `data` | object | yes |  |
| `data.id` | string | yes |  |
| `data.username` | string | yes | Handle without the `@` prefix. |
| `data.name` | string | yes | Display name. |
| `data.createdAt` | string (date-time) | yes |  |
| `data.profileImageUrl` | string or null | yes |  |
| `data.profileImageShape` | string or null | yes | `Circle` for people, `Square` for organisations, `Hexagon` for some others. |
| `data.verified` | boolean | yes |  |
| `data.protected` | boolean or null | yes |  |
| `data.aboutProfile` | object or null | yes |  |
| `data.aboutProfile.accountBasedIn` | string or null | yes | The country X attributes the account to. |
| `data.aboutProfile.locationAccurate` | boolean or null | yes | Whether X considers `accountBasedIn` accurate. |
| `data.aboutProfile.createdCountryAccurate` | boolean or null | yes |  |
| `data.aboutProfile.source` | string or null | yes | How the account connects to X, in X's own words, such as an app store. |
| `data.aboutProfile.usernameChanges` | object | yes |  |
| `data.aboutProfile.usernameChanges.count` | integer or null | yes | min 0 |
| `data.aboutProfile.usernameChanges.lastChangedAt` | string or null | yes |  |
| `data.verificationInfo` | object or null | yes |  |
| `data.verificationInfo.isIdentityVerified` | boolean or null | yes |  |
| `data.verificationInfo.verifiedSince` | string or null | yes |  |
| `meta` | object | yes |  |
| `meta.requestId` | string | yes |  |
| `meta.nextCursor` | string or null | no |  |

## Errors

| Status | Meaning | What to do |
| --- | --- | --- |
| `400` | The request failed validation. | The request was malformed. The `details` object names the field. |
| `401` | The API key is missing, malformed, expired, or revoked. | The key is missing, malformed, revoked, or expired. |
| `402` | The account is out of credit. Not retryable: this cannot clear until the billing period resets or the plan changes. | Out of credits. **Never retry.** Only a person can clear it, by adding credits at https://weirapp.io/dashboard/billing. Retrying never will. |
| `403` | The API key does not carry the scope this route requires. | The key is valid but lacks the scope this operation needs. |
| `404` | The requested resource does not exist. | No such resource, or it is not public. |
| `429` | The per-minute rate limit is exhausted. Retryable: wait for Retry-After and try again. | Rate limited. Retryable: wait for `Retry-After`, then try again. |
| `500` | An unexpected error occurred. | Something failed on our side. Retryable with backoff. |
| `503` | The source is temporarily unavailable. The request is safe to retry. | A source was unreachable. Retryable with backoff. |
