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

# Get a contact request

GET https://v1.api.partnerpage.io/api/directory/private/v1alpha/contact-requests/{contactId}/

Retrieve details of a contact request for a directory owner organization

Reference: https://docs.partnerpage.io/api-reference/contact-request/get-a-contact-request

## Authentication

- `Authorization` header (required) (prefixed with ` Token   `) — Your API key, sent as `Authorization: Token <your API key>`

## Request

### Path parameters

- `contactId` (string, required) — ID of the contact requests to retrieve

## Response

### 200

Detailed information about the contact request

- `firstName` (string, required)
- `lastName` (string, required)
- `email` (string, required)
- `companyName` (string, required)
- `href` (string, required)
- `id` (string, required)
- `created` (string, required)
- `state` (string, required)
- `projectStatus` (enum, required, nullable) — * `new` - New * `contacted` - Contacted * `engaged` - Engaged * `on_hold` - On hold * `secured` - Secured * `launched_deployed` - Launched / Deployed * `lost` - Lost
  - Allowed values: `new`, `contacted`, `engaged`, `on_hold`, `secured`, `launched_deployed`, `lost`
- `entry` (map from string to any, required)
- `directory` (map from string to any, required)
- `source` (enum, required) — * `matchmaking` - Matchmaking * `contact_request` - Contact Request
  - Allowed values: `matchmaking`, `contact_request`
- `matchOrigin` (string, required, nullable)
- `customForm` (string, required)
- `events` (list of ContactRequestTimelineEvent, required)
- `firstViewedAt` (datetime, required, nullable)
- `phone` (string, optional, nullable)
- `companyWebsite` (string, optional, nullable)
- `comments` (string, optional, nullable)
- `utmQueryParams` (any, optional)
- `customFormResponseId` (string, optional)
- `declineReason` (string, optional, nullable)
- `declineReasonDetail` (string, optional, nullable)
- `closeReason` (string, optional, nullable)
- `closeReasonDetail` (string, optional, nullable)
- `routingSource` (string, optional, nullable)
- `isStale` (boolean, optional)
- `daysWaiting` (integer, optional)
- `reminderCount` (integer, optional)
- `holdReason` (enum, optional, nullable) — * `same_message` - Same message already sent to 2 partners today * `same_phone` - Same phone number already sent to 2 partners today * `same_company` - Same company already sent to 2 partners today
  - Allowed values: `same_message`, `same_phone`, `same_company`
- `reminder` (PartnerContactRequestReminderStatus, optional)
- `senderBlocked` (boolean, optional)
- `closeNotificationRecipients` (list of string, optional)
- `delivery` (RequestDelivery, optional)

## Errors

### 403 Forbidden Error

Forbidden

- `any`

### 404 Not Found Error

Contact request not found

- `any`

## Types

### ContactRequestTimelineEvent

- `type` (enum, required) — * `note` - note * `state_changed` - state_changed * `project_status_changed` - project_status_changed * `email_sent` - email_sent * `reminder_sent` - reminder_sent * `viewed` - viewed * `request_linked` - request_linked
  - Allowed values: `note`, `state_changed`, `project_status_changed`, `email_sent`, `reminder_sent`, `viewed`, `request_linked`
- `timestamp` (datetime, required)
- `data` (map from string to any, required)

### PartnerContactRequestReminderStatus

- `availableType` (enum, required, nullable) — * `reminder` - Reminder * `update_request` - Update request
  - Allowed values: `reminder`, `update_request`
- `lastSent` (PartnerContactRequestReminderRead, required, nullable)
- `partnerHasRecipients` (boolean, required)

### RequestDelivery

- `delivered` (boolean, required) — True unless the request was held and never released. Does not confirm receipt by an external integration.
- `heldAt` (datetime, required, nullable)
- `releasedAt` (datetime, required, nullable)
- `publicFormSubmittedAt` (datetime, required, nullable)
- `modified` (datetime, required)

### PartnerContactRequestReminderRead

- `id` (string, required)
- `type` (enum, required) — * `reminder` - Reminder * `update_request` - Update request
  - Allowed values: `reminder`, `update_request`
- `message` (string, required)
- `created` (datetime, required)
- `sender` (PartnerContactRequestNoteAuthor, required, nullable)

### PartnerContactRequestNoteAuthor

- `id` (string, required)
- `fullName` (string, required)
- `email` (string, required)
- `role` (enum, required) — * `directory_owner` - directory_owner * `entry_owner` - entry_owner
  - Allowed values: `directory_owner`, `entry_owner`

## Examples

**Response**

```json
{
  "firstName": "John",
  "lastName": "Doe",
  "email": "user@email.com",
  "companyName": "MyCompany",
  "href": "/api/directory/private/v1alpha/contact-requests/219a7d94-b934-4ccf-880f-d24b55e7e03e/",
  "id": "219a7d94-b934-4ccf-880f-d24b55e7e03e",
  "created": "2024-08-23T13:40:00+00:00",
  "state": "pending",
  "projectStatus": "new",
  "entry": {
    "externalId": "0015g00000ABCDE",
    "id": "0f00e6b6-a7d4-4e2e-8bc5-273ddbc0d9c4",
    "owner": "2a5201d0-8b59-42b0-bda5-8aaf2c46c7bd",
    "title": "Entry Title"
  },
  "directory": {
    "customForm": {
      "answers": [
        {
          "answer": {
            "id": "3f2d1c0b-9a8b-4c7d-8e6f-5a4b3c2d1e0f",
            "systemKey": null,
            "value": "Germany"
          },
          "field": {
            "id": "9b0b0e1a-2b3c-4d5e-8f90-1a2b3c4d5e6f",
            "internalLabel": "hq-country",
            "label": "Country",
            "type": "single_option"
          },
          "otherText": null
        },
        {
          "answer": 1500,
          "field": {
            "currencyCode": "USD",
            "currencySymbol": "$",
            "decimals": 0,
            "id": "5c4b3a29-1817-4655-8443-2e1f0a9b8c7d",
            "internalLabel": null,
            "label": "MRR",
            "type": "currency"
          }
        },
        {
          "answer": "12.50",
          "field": {
            "id": "7e6d5c4b-3a29-4187-8655-4433221100ff",
            "internalLabel": null,
            "label": "Discount",
            "precision": 2,
            "type": "decimal"
          }
        }
      ],
      "groups": [
        {
          "description": null,
          "fields": [
            "9b0b0e1a-2b3c-4d5e-8f90-1a2b3c4d5e6f",
            "5c4b3a29-1817-4655-8443-2e1f0a9b8c7d",
            "7e6d5c4b-3a29-4187-8655-4433221100ff"
          ],
          "key": "step_1",
          "title": "About your company"
        }
      ]
    },
    "id": "12345678-1234-1234-1234-123456789abc",
    "name": "Directory Title",
    "orgId": "72887176-abc4-48d7-bdd6-35cf31aafb7e",
    "orgName": "Org name"
  },
  "source": "matchmaking",
  "matchOrigin": "string",
  "customForm": "string",
  "events": [
    {
      "type": "viewed",
      "timestamp": "2026-08-15T08:12:00Z",
      "data": {
        "actor": {
          "email": "sam@partner.example.com",
          "fullName": "Sam Partner",
          "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
          "role": "entry_owner"
        },
        "partnerName": "Entry Title"
      }
    },
    {
      "type": "reminder_sent",
      "timestamp": "2026-08-14T09:30:00Z",
      "data": {
        "created": "2026-08-14T09:30:00Z",
        "id": "5d1c7a0e-3b52-4a55-9d0e-6f1f0a4f3c21",
        "message": "Could you take a look this week?",
        "sender": {
          "email": "jane@example.com",
          "fullName": "Jane Doe",
          "id": "12",
          "role": "directory_owner"
        },
        "type": "reminder"
      }
    },
    {
      "type": "project_status_changed",
      "timestamp": "2026-08-13T10:00:00Z",
      "data": {
        "actor": {
          "email": "jane@example.com",
          "fullName": "Jane Doe",
          "id": "12",
          "role": "directory_owner"
        },
        "lostReason": "budget_or_timing",
        "lostReasonDetail": null,
        "previousProjectStatus": "engaged",
        "projectStatus": "lost"
      }
    }
  ],
  "firstViewedAt": "2026-08-15T08:12:00Z",
  "phone": null,
  "companyWebsite": "my-company.com",
  "comments": "Some comments",
  "utmQueryParams": {},
  "reminder": {
    "availableType": "reminder",
    "lastSent": {
      "id": "5d1c7a0e-3b52-4a55-9d0e-6f1f0a4f3c21",
      "type": "reminder",
      "message": "Could you take a look this week?",
      "created": "2026-08-14T09:30:00Z",
      "sender": {
        "id": "12",
        "fullName": "Jane Doe",
        "email": "jane@example.com",
        "role": "directory_owner"
      }
    },
    "partnerHasRecipients": true
  },
  "delivery": {
    "delivered": true,
    "heldAt": null,
    "releasedAt": null,
    "publicFormSubmittedAt": "2024-08-23T13:40:00.123456Z",
    "modified": "2026-08-15T08:12:00.654321Z"
  }
}
```

**SDK Code**

```python Example response
import requests

url = "https://v1.api.partnerpage.io/api/directory/private/v1alpha/contact-requests/contactId/"

headers = {"Authorization": "Token  <apiKey>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript Example response
const url = 'https://v1.api.partnerpage.io/api/directory/private/v1alpha/contact-requests/contactId/';
const options = {method: 'GET', headers: {Authorization: 'Token  <apiKey>'}};

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