> ## Documentation Index
> Fetch the complete documentation index at: https://www.dropfans.io/developers/llms.txt
> Use this file to discover all available pages before exploring further.

# Make your first call

> One authenticated request to GET /api/external/me that proves your key works.

- Source: https://www.dropfans.io/developers/get-started/first-call
- Section: Get started
- OpenAPI: https://www.dropfans.io/developers/openapi.json

The shortest path to a working integration is one request that returns the creator behind your key.

## 1. Generate a key

In the Dropfans dashboard, open [Vault → API Connect](https://www.dropfans.io/dashboard/vault?apiConnect=1) and hit **Generate new key**. Pick **Personal** for your own scripts, or your app if it has been [approved](https://www.dropfans.io/developers/concepts/apps-and-approval.md). The key starts with `dpfn_` — you can copy it again from the same screen any time.

> [!WARNING]
> A key gives full access to that creator’s vault, drops, earnings and feed. Treat it like a password and keep it out of client-side code and shared chats.

## 2. Send the request

```bash tab="curl"
curl "https://www.dropfans.io/api/external/me" \
  -H "Authorization: Bearer $DROPFANS_API_KEY"
```

```javascript tab="Node"
const res = await fetch('https://www.dropfans.io/api/external/me', {
  headers: { Authorization: 'Bearer ' + process.env.DROPFANS_API_KEY },
});
const me = await res.json();
console.log(me.username);
```

```python tab="Python"
import os, requests

res = requests.get(
    "https://www.dropfans.io/api/external/me",
    headers={"Authorization": f"Bearer {os.environ['DROPFANS_API_KEY']}"},
)
print(res.json()["username"])
```

## 3. Read the response

```json
{
  "id": "cmawq81x40001lb04xyz12abc",
  "username": "ava",
  "name": "Ava",
  "image": "https://cdn.dropfans.io/ava/avatar.jpg",
  "accountType": "CREATOR",
  "key": {
    "name": "Personal",
    "app": null,
    "tier": "personal"
  }
}
```

If `username` is the creator you expected, authentication works. `key.app` names the app the key was generated for (`null` for a personal key), and `key.tier` is the rate-limit tier the key runs at.

## 4. Decode a 401

```json
{ "error": "Unauthorized", "code": "unauthorized" }
```

Check, in order: the header is exactly `Authorization: Bearer dpfn_…` (the literal `Bearer ` prefix, one space); the key was not truncated or padded with whitespace when you copied it; the creator has not revoked it — a revoked key returns 401 forever, there is no grace period.

Next: [Connect a creator to your app](https://www.dropfans.io/developers/get-started/connect-a-creator.md) or [Sell a drop end-to-end](https://www.dropfans.io/developers/guides/sell-a-drop.md).

---

Previous: [Dropfans API](https://www.dropfans.io/developers/get-started/overview.md) · Next: [Connect a creator to your app](https://www.dropfans.io/developers/get-started/connect-a-creator.md) · All pages: [llms.txt](https://www.dropfans.io/developers/llms.txt)
