---
title: "Store consents in bulk"
method: POST
path: "/{contact_type}/consents"
tags: ["consents"]
---

# Store consents in bulk

`POST /{contact_type}/consents`

## Request

- Base URL: `https://api.fullpath.com/consent-management`
- URL: `https://api.fullpath.com/consent-management/{contact_type}/consents`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/fullpath/apis/fullpath-api-v1-openapi-3-0/docs/:contact_type/consents/post.ts> (a function with typed inputs; its response is checked against the schema)

Stores one or more consent records for contacts at the target dealer.
Accepts between 1 and 500 contacts per request.

Exact duplicates in the same request (same normalized contact value and
`consent_timestamp`) are deduplicated; the last entry wins.

Requires `client_key` (query string) to identify the target dealer.

On success, returns an empty JSON object and updates the vendor
data-received timestamp for the dealer.

## Path parameters

- `contact_type` 'email' | 'phone_sms' | 'phone_call', required

## Query parameters

- `client_key` string, required

## Request body

- CmStoreConsentsRequest
  - `contacts` CmConsentContact[], required
    - `contact_value` string, required: Raw contact identifier. Must be a valid email for `email`, or a valid phone number for `phone_sms` / `phone_call`.
    - `opt_in` boolean, required: true to record opt-in; false to record opt-out.
    - `consent_timestamp` string, date-time, required: When the consent event occurred (ISO 8601).

## Response `200`

Consents stored successfully.

- CmEmptySuccessResponse: Empty JSON object returned on successful bulk store.

## Other responses

- `400`: Business-rule or normalization failure. Common causes: - One or more contacts failed validation after normalization (`"One or more contacts are invalid."`) - `client_key` missing, invalid, or not integrated with the vendor
- `401`: Missing, invalid, or expired Bearer token.
- `422`: Laravel validation failure (422 Unprocessable Entity).
- `429`: Rate limit exceeded (100 requests per minute per API key).

## Changes

- **2026-11-06** `4b73e1835a7e`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/fullpath/apis/fullpath-api-v1-openapi-3-0/changes/:contact_type/consents/post.md)

---

[API](https://skmtc.dev/fullpath/apis/fullpath-api-v1-openapi-3-0.md) - [All operations](https://skmtc.dev/fullpath/apis/fullpath-api-v1-openapi-3-0/llms.txt) - [OpenAPI document](https://skmtc.dev/fullpath/apis/fullpath-api-v1-openapi-3-0/revisions/4b73e1835a7e?raw)
