# Address book contacts

Source: https://docs.settlemint.com/docs/developer-guides/api-integration/address-book-contacts
Use the DALP contacts API to store frequently used wallet recipients, search them by name or address, and reduce operator error in transfer workflows.



DALP includes an authenticated address book for wallet contacts. Use it to store
frequent recipients such as treasury wallets, custodian accounts, issuer
operations wallets, or investor addresses that operators reuse in servicing
flows.

Contacts are not identity attestations, KYC records, or permission grants. They
are user-owned address book entries that make operational workflows easier to
execute and review. Transfer compliance still runs through the token, identity,
claim, freeze, and approval rules configured for the asset.

## When to use contacts [#when-to-use-contacts]

Use contacts when your integration needs to:

* keep named wallet recipients available to the authenticated user
* avoid copying raw wallet addresses into every transfer flow
* search common counterparties by label or wallet fragment
* review recipient addresses before mint, transfer, forced transfer, or servicing
  operations

## Endpoint summary [#endpoint-summary]

The v2 contacts API exposes these operations:

* `GET /api/v2/contacts` lists contacts for the authenticated user.
* `GET /api/v2/contacts/{id}` reads one contact entry.
* `POST /api/v2/contacts` creates or updates a contact entry.
* `DELETE /api/v2/contacts/{id}` deletes one contact entry.

The legacy v1 API also exposes `/api/contacts`, `/api/contacts/{id}`, and
`/api/contacts/search` for older integrations.

## Contact shape [#contact-shape]

A contact stores:

* `id`: contact identifier
* `name`: human-readable label, up to 120 characters
* `wallet`: Ethereum wallet address
* `createdAt`: creation timestamp
* `updatedAt`: last update timestamp

Only valid Ethereum addresses are accepted. DALP wallet contacts use EVM account
addresses.

## Create or update a contact [#create-or-update-a-contact]

Create a contact by posting a name and wallet. Provide `id` only when updating an
existing contact.

```bash
curl -X POST https://your-platform.example.com/api/v2/contacts \
  -H "X-Api-Key: sm_dalp_xxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Treasury Wallet",
    "wallet": "0x71C7656EC7ab88b098defB751B7401B5f6d8976F"
  }'
```

When creating without an `id`, if the wallet already belongs to an existing
contact, DALP updates the existing contact name instead of creating a duplicate.

## List contacts [#list-contacts]

Use the list endpoint for address-book screens and recipient pickers.

```bash
curl "https://your-platform.example.com/api/v2/contacts?limit=50&sortBy=name" \
  -H "X-Api-Key: sm_dalp_xxxxxxxxxxxxxxxx"
```

Contacts can be sorted by:

* `name`
* `wallet`
* `createdAt`
* `updatedAt`

Use a search filter when the operator types a name or wallet fragment:

```bash
curl "https://your-platform.example.com/api/v2/contacts?filter[q]=treasury" \
  -H "X-Api-Key: sm_dalp_xxxxxxxxxxxxxxxx"
```

## Read or delete a contact [#read-or-delete-a-contact]

Read a single contact:

```bash
curl https://your-platform.example.com/api/v2/contacts/CONTACT_ID \
  -H "X-Api-Key: sm_dalp_xxxxxxxxxxxxxxxx"
```

Delete a contact:

```bash
curl -X DELETE https://your-platform.example.com/api/v2/contacts/CONTACT_ID \
  -H "X-Api-Key: sm_dalp_xxxxxxxxxxxxxxxx"
```

Deleting a contact only removes the address-book entry. It does not affect token
balances, identities, claims, transfer approvals, custody rules, or any historic
transaction evidence.

## Operational guidance [#operational-guidance]

For regulated asset operations, treat contacts as convenience data, not control
data:

1. Use contacts to reduce copy-paste errors in recurring operations.
2. Resolve the selected contact to a wallet address before submitting a token
   operation.
3. Let the token operation enforce identity, compliance, freeze, approval, and
   role checks.
4. Record the resulting transaction hash or action status in the relevant
   servicing workflow.

This keeps address-book usability separate from the controls that decide whether
a transfer, mint, burn, forced transfer, or servicing action can execute.

## Related [#related]

* [Developer guides](/docs/developer-guides)
* [Token holders and transfers](/docs/developer-guides/api-integration/token-holders-transfers)
