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

# Get All Spam Scores

> Retrieve carrier spam scores for all monitored phone numbers

Retrieve carrier spam scores for all phone numbers being monitored by your account.

<Note>
  The `X-Total-Count` response header contains the total number of phone numbers in your account.
</Note>

## Request

### Headers

<ParamField header="loginId" type="string" required>
  Your API Key (LoginId from your DNCScrub account)
</ParamField>

### Query Parameters

<ParamField query="maxRecords" type="integer" default="15000">
  Maximum number of records to return. Defaults to 15,000.
</ParamField>

## Example Request

<CodeGroup>
  ```bash cURL theme={null}
  curl --location --request GET \
    'https://dataapi.dncscrub.com/v1.5/TrustCall/GetAll' \
    --header 'loginId: YOUR_API_KEY'
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    'https://dataapi.dncscrub.com/v1.5/TrustCall/GetAll',
    {
      method: 'GET',
      headers: { 'loginId': 'YOUR_API_KEY' }
    }
  );

  // Get total count from header
  const totalCount = response.headers.get('X-Total-Count');
  console.log(`Total numbers monitored: ${totalCount}`);

  const data = await response.json();
  console.log(data);
  ```

  ```csharp C# theme={null}
  using (var client = new HttpClient())
  {
      client.DefaultRequestHeaders.Add("loginId", "YOUR_API_KEY");

      var response = await client.GetAsync(
          "https://dataapi.dncscrub.com/v1.5/TrustCall/GetAll"
      );

      // Get total count from header
      if (response.Headers.TryGetValues("X-Total-Count", out var values))
      {
          Console.WriteLine($"Total numbers: {values.First()}");
      }

      var result = await response.Content.ReadAsStringAsync();
      Console.WriteLine(result);
  }
  ```
</CodeGroup>

<ResponseExample>
  ```json Response theme={null}
  [
    {
      "Response": "Phone number current score",
      "Phone": "7867056421",
      "LegalEntityId": 123,
      "CurrScore": "High",
      "MaxScore": "High",
      "HistoricalScore": "5",
      "VerizonScore": "Flagged",
      "ATTScore": "Flagged",
      "TMobileScore": "Clean",
      "RoboKillerStatus": "Clean",
      "NomoroboStatus": "Flagged",
      "FTCComplaints": [
        {
          "FTCComplaintId": "79923e06b1c74d47e6ad5826b7554046",
          "Phone": "7867056421",
          "CreatedDate": "08/15/2022 22:22:39",
          "ViolationDate": "07/29/2022 12:04:00",
          "City": "Jackson",
          "State": "New Jersey",
          "AreaCode": "732",
          "Subject": "Dropped call or no message",
          "RecordedMessageOrRobocall": "Y"
        }
      ]
    },
    {
      "Response": "Phone number current score",
      "Phone": "5039367187",
      "LegalEntityId": 456,
      "CurrScore": "Clean",
      "MaxScore": "Clean",
      "HistoricalScore": "0",
      "VerizonScore": "Clean",
      "ATTScore": "Clean",
      "TMobileScore": "Clean",
      "RoboKillerStatus": "Clean",
      "NomoroboStatus": "Clean",
      "FTCComplaints": null
    }
  ]
  ```
</ResponseExample>

## Response Headers

| Header          | Description                                   |
| --------------- | --------------------------------------------- |
| `X-Total-Count` | Total number of phone numbers in your account |

## Response Fields

<ResponseField name="Response" type="string">
  Status message
</ResponseField>

<ResponseField name="Phone" type="string">
  The phone number
</ResponseField>

<ResponseField name="LegalEntityId" type="integer">
  The legal entity identifier associated with the phone number
</ResponseField>

<ResponseField name="CurrScore" type="string">
  Current average carrier spam score: `Clean`, `Medium`, `High`, or `Processing`
</ResponseField>

<ResponseField name="MaxScore" type="string">
  Maximum score recorded in the last 15 days
</ResponseField>

<ResponseField name="HistoricalScore" type="string">
  Historical score from 0-5 (0-1 = no issues, 5 = 50%+ high spam)
</ResponseField>

<ResponseField name="VerizonScore" type="string">
  Verizon carrier status: `Clean`, `Flagged`, or `Processing`
</ResponseField>

<ResponseField name="ATTScore" type="string">
  AT\&T carrier status: `Clean`, `Flagged`, or `Processing`
</ResponseField>

<ResponseField name="TMobileScore" type="string">
  T-Mobile carrier status: `Clean`, `Flagged`, or `Processing`
</ResponseField>

<ResponseField name="RoboKillerStatus" type="string">
  RoboKiller app status: `Clean` or `Flagged`
</ResponseField>

<ResponseField name="NomoroboStatus" type="string">
  Nomorobo app status: `Clean` or `Flagged`
</ResponseField>

<ResponseField name="FTCComplaints" type="array | null">
  Array of FTC complaints, or `null` if none
</ResponseField>

## Error Responses

| Status                | Description                |
| --------------------- | -------------------------- |
| 400 Bad Request       | Invalid request parameters |
| 401 Unauthorized      | Invalid or missing API key |
| 413 Payload Too Large | Too many records requested |

## Pagination Example

```javascript theme={null}
async function getAllMonitoredNumbers(apiKey) {
  const response = await fetch(
    'https://dataapi.dncscrub.com/v1.5/TrustCall/GetAll?maxRecords=15000',
    {
      headers: { 'loginId': apiKey }
    }
  );

  const totalCount = parseInt(response.headers.get('X-Total-Count'));
  const results = await response.json();

  console.log(`Retrieved ${results.length} of ${totalCount} total numbers`);

  // Categorize by score
  const flagged = results.filter(r => r.CurrScore === 'High');
  const medium = results.filter(r => r.CurrScore === 'Medium');
  const clean = results.filter(r => r.CurrScore === 'Clean');

  return {
    total: totalCount,
    flagged: flagged.length,
    medium: medium.length,
    clean: clean.length,
    results
  };
}
```
