---
title: "List recent contacts"
method: GET
path: "/api/v1/contacts"
tags: ["Contacts (v1, deprecated)"]
deprecated: true
---

# List recent contacts

`GET /api/v1/contacts`

## Request

- Base URL: `https://app.formaportal.com`
- URL: `https://app.formaportal.com/api/v1/contacts`
- Auth: OAuth 2 (authorization code, authorization URL `https://app.formaportal.com/oauth/authorize`, token URL `https://app.formaportal.com/api/oauth/token`, scopes: `contacts:read`)

> **Deprecated.**

The 25 most recent contacts for the token's portal, newest first. `source` is reported as `staff` here because a stored contact does not record how it was created; the webhook payload carries the real value.

## Response `200`

Contacts, newest first.

- Contact[]
  - `id` string, required
  - `portalId` string, required
  - `email` string, email, required
  - `firstName` string
  - `lastName` string
  - `active` boolean
  - `emailVerified` boolean: Self-registrations are published before the contact confirms their email, so this may be false on a freshly created contact.
  - `createdAt` string, date-time, required
  - `source` 'self_registration' | 'invitation' | 'staff', required: How the contact came to exist.

## Other responses

- `401`: Missing, invalid, expired or revoked token. The `WWW-Authenticate` header points at the protected-resource metadata.
- `403`: The token is valid but lacks a required scope. `WWW-Authenticate` names the scopes needed.

---

[API](https://skmtc.dev/formaportal/apis/formaportal-api.md) · [All operations](https://skmtc.dev/formaportal/apis/formaportal-api/llms.txt) · [OpenAPI document](https://skmtc.dev/formaportal/apis/formaportal-api/revisions/a9412c3b13cb?raw)
