> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.dealsignal.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.dealsignal.com/_mcp/server.

# Get credit metrics

GET https://app.dealsignal.com/api/v1/users/credit_metrics

Returns the authenticated account's identity, remaining subscription
credits, and today's profile-request metrics in a single JSON object.
Read-only: it creates nothing and does not consume credits.

`daily_profile_request_metrics` counts Contact Profile Refresh
**profiles** created on the current **server** date. Profiles of a
synchronous request that were matched and already `completed` in the
create response are usually left out; `test` requests are never
counted, and the counts start again at the next server-day boundary.

Send `Accept: application/json` from API clients so that authentication
errors come back as JSON. The same applies to every endpoint.

Reference: https://docs.dealsignal.com/api-reference/credits/get-credit-metrics

## Request

### Query parameters

- `api_key` (string, required) — Your Dealsignal API key. Obtain it from the Dealsignal dashboard.

## Response

### 200

Credit metrics for the account.

- `email` (string, optional)
- `name` (string, optional)
- `username` (string, optional)
- `current_subscription_data` (CreditMetricsResponseCurrentSubscriptionData, optional)
- `daily_profile_request_metrics` (CreditMetricsResponseDailyProfileRequestMetrics, optional) — Counts of Contact Profile Refresh **profiles** (rows, not requests) submitted today — the current **server** date. Profiles of a synchronous request that were matched and already `completed` in the create response are usually not counted; every other profile is, including profiles closed at creation without a match (`contact_data.id` `null`) and every profile of an asynchronous request. Requests submitted with `test: true` are excluded. `requested` = `requested_with_ds_contact_id` + `requested_without_ds_contact_id`.

## Errors

### 401 Unauthorized Error

Invalid key, inactive account, or expired subscription.

- `message` (string, required)
- `authorization_failure` (boolean, optional)
- `inactive` (boolean, optional)

## Types

### CreditMetricsResponseCurrentSubscriptionData

- `remaining_credits` (double, optional) — Contact / Company credits still available — the plan's allowance plus additional credits and adjustments, minus consumption. Never negative.

### CreditMetricsResponseDailyProfileRequestMetrics

Counts of Contact Profile Refresh **profiles** (rows, not requests) submitted today — the current **server** date. Profiles of a synchronous request that were matched and already `completed` in the create response are usually not counted; every other profile is, including profiles closed at creation without a match (`contact_data.id` `null`) and every profile of an asynchronous request. Requests submitted with `test: true` are excluded. `requested` = `requested_with_ds_contact_id` + `requested_without_ds_contact_id`.

- `requested` (integer, optional) — Profiles submitted today. Profiles of a synchronous request that were matched and already `completed` in the create response are usually left out.
- `requested_with_ds_contact_id` (integer, optional) — Subset submitted **with** a `ds_contact_id` (refresh path).
- `requested_without_ds_contact_id` (integer, optional) — Subset submitted **without** a `ds_contact_id` (search-and-refresh path), whether or not a contact was matched later.

## Examples

**Response**

```json
{
  "email": "user@example.com",
  "name": "Jane Smith",
  "username": "jane.smith",
  "current_subscription_data": {
    "remaining_credits": 6750
  },
  "daily_profile_request_metrics": {
    "requested": 42,
    "requested_with_ds_contact_id": 30,
    "requested_without_ds_contact_id": 12
  }
}
```

**SDK Code**

```python
import requests

url = "https://app.dealsignal.com/api/v1/users/credit_metrics"

querystring = {"api_key":"YOUR_API_KEY"}

response = requests.get(url, params=querystring)

print(response.json())
```

```javascript
const url = 'https://app.dealsignal.com/api/v1/users/credit_metrics?api_key=YOUR_API_KEY';
const options = {method: 'GET'};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://app.dealsignal.com/api/v1/users/credit_metrics?api_key=YOUR_API_KEY"

	req, _ := http.NewRequest("GET", url, nil)

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://app.dealsignal.com/api/v1/users/credit_metrics?api_key=YOUR_API_KEY")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://app.dealsignal.com/api/v1/users/credit_metrics?api_key=YOUR_API_KEY")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://app.dealsignal.com/api/v1/users/credit_metrics?api_key=YOUR_API_KEY');

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://app.dealsignal.com/api/v1/users/credit_metrics?api_key=YOUR_API_KEY");
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let request = NSMutableURLRequest(url: NSURL(string: "https://app.dealsignal.com/api/v1/users/credit_metrics?api_key=YOUR_API_KEY")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```