> ## Documentation Index
> Fetch the complete documentation index at: https://apidocs.cacolombia.com/llms.txt
> Use this file to discover all available pages before exploring further.

# GET /v1/users/:userId/characters/:characterId — Get

> Fetch a single in-game character by ID. Returns all biographical fields, visual asset hashes, idStatus, and wallet data for the character.

Use this endpoint to retrieve a single in-game character by its unique ID. The response includes all biographical fields, visual asset hashes, and the current ID card approval status. You can optionally request the character's avatar signature data by passing `signature=true`.

<Note>
  You can fetch your own characters at any time. Staff members with the appropriate permissions can also fetch characters belonging to other users.
</Note>

## Endpoint

```text theme={null}
GET https://api.cacolombia.com/v1/users/:userId/characters/:characterId
```

## Path Parameters

<ParamField path="userId" type="string" required>
  The Snowflake ID of the user who owns the character.
</ParamField>

<ParamField path="characterId" type="string" required>
  The Snowflake ID of the character to retrieve.
</ParamField>

## Query Parameters

<ParamField query="signature" type="string">
  Pass `true` to include the character's `signatureData` field in the response. Omit or pass any other value to exclude it.
</ParamField>

## Response

<ResponseField name="characterId" type="string">
  The character's unique Snowflake ID.
</ResponseField>

<ResponseField name="userId" type="string">
  The Snowflake ID of the user who owns this character.
</ResponseField>

<ResponseField name="firstNames" type="string">
  The character's first name(s).
</ResponseField>

<ResponseField name="lastNames" type="string">
  The character's last name(s).
</ResponseField>

<ResponseField name="age" type="number">
  The character's age in years.
</ResponseField>

<ResponseField name="height" type="number">
  The character's height in centimetres.
</ResponseField>

<ResponseField name="gender" type="string">
  The character's gender. Either `Masculino` or `Femenino`.
</ResponseField>

<ResponseField name="bloodType" type="string">
  The character's blood type. One of `O+`, `O-`, `A+`, `A-`, `B+`, `B-`, `AB+`, `AB-`.
</ResponseField>

<ResponseField name="nationality" type="object">
  An object describing the character's nationality.

  <Expandable title="nationality fields">
    <ResponseField name="nombre" type="string">
      The full nationality name (e.g. `Colombiano`).
    </ResponseField>

    <ResponseField name="abrev" type="string">
      The abbreviated nationality code (e.g. `COL`).
    </ResponseField>

    <ResponseField name="lugar" type="string">
      The country or region associated with the nationality (e.g. `Colombia`).
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="dob" type="string">
  The character's date of birth in `DD/MM/YYYY` format.
</ResponseField>

<ResponseField name="avatarHash" type="string | null">
  Hash identifier for the character's avatar image, or `null` if not yet uploaded.
</ResponseField>

<ResponseField name="idCardHash" type="string | null">
  Hash identifier for the character's generated ID card image, or `null` if not yet created.
</ResponseField>

<ResponseField name="fullBodyHash" type="string | null">
  Hash identifier for the character's full-body reference image, or `null` if not yet uploaded.
</ResponseField>

<ResponseField name="avatar3dHash" type="string | null">
  Hash identifier for the character's 3D GLB avatar model, or `null` if not yet uploaded.
</ResponseField>

<ResponseField name="avatar3dCamera" type="object | null">
  Camera metadata for the 3D avatar, or `null` if not set.
</ResponseField>

<ResponseField name="avatar3dAABB" type="object | null">
  Axis-aligned bounding box metadata for the 3D avatar, or `null` if not set.
</ResponseField>

<ResponseField name="idStatus" type="string">
  The character's ID card approval status. One of `draft`, `pending_approval`, or `approved`.
</ResponseField>

<ResponseField name="wallet" type="object | null">
  The character's in-game wallet object, or `null` if no wallet exists.
</ResponseField>

<ResponseField name="signatureData" type="string">
  The character's avatar signature data. Only present when `signature=true` is passed.
</ResponseField>

<ResponseField name="createdAt" type="string">
  ISO 8601 timestamp of when the character was created.
</ResponseField>

<ResponseField name="updatedAt" type="string">
  ISO 8601 timestamp of when the character was last updated.
</ResponseField>

## Example Request

```bash theme={null}
curl -X GET "https://api.cacolombia.com/v1/users/112233445566778899/characters/998877665544332211" \
  -H "Authorization: Bearer <your_token>"
```

## Example Response

```json theme={null}
{
  "characterId": "998877665544332211",
  "userId": "112233445566778899",
  "firstNames": "Carlos Alberto",
  "lastNames": "Reyes Gómez",
  "age": 28,
  "height": 175,
  "gender": "Masculino",
  "bloodType": "O+",
  "nationality": {
    "nombre": "Colombiano",
    "abrev": "COL",
    "lugar": "Colombia"
  },
  "dob": "15/04/1996",
  "avatarHash": "abc123def456",
  "idCardHash": "xyz789uvw012",
  "fullBodyHash": null,
  "avatar3dHash": null,
  "avatar3dCamera": null,
  "avatar3dAABB": null,
  "idStatus": "approved",
  "wallet": null,
  "createdAt": "2024-01-10T14:30:00.000Z",
  "updatedAt": "2024-06-01T09:15:00.000Z"
}
```

## Error Responses

| Status | Error               | Description                                                                                         |
| ------ | ------------------- | --------------------------------------------------------------------------------------------------- |
| `401`  | `Unauthorized`      | No valid authentication token was provided.                                                         |
| `403`  | `Unauthorized`      | The authenticated user does not match the `userId` in the path and does not have staff permissions. |
| `404`  | `Unknown User`      | No user was found with the given `userId`.                                                          |
| `404`  | `Unknown Character` | No character was found with the given `characterId` belonging to this user.                         |
