> For the complete documentation index, see [llms.txt](https://docs.codemash.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.codemash.io/sdks-and-cli/membership/users/grant-contact-consent.md).

# Grant Contact Consent

A **contact** (user) is a person in your project's membership directory, with one or more linked logins (identities). Membership manages their profile, identities, roles, and lifecycle. Handles the contact consent.

This method is on the runtime **API** surface (`norbix.api.membership`) — call it from your app.

{% hint style="info" %}
These examples assume the SDK is installed and your credentials are set as environment variables — each client reads them automatically, so the constructors below take no arguments. See [Install a Norbix SDK](/sdks-and-cli/install.md).
{% endhint %}

{% tabs %}
{% tab title="JavaScript / TypeScript" %}

```ts
import { Norbix } from '@norbix.ai/ts';
const norbix = new Norbix();

const result = await norbix.api.membership.grantContactConsent({
  contactId: 'ct_4kX9mQvR2tYw7ZbC1dFgHj',
  channel: 'email',
  lawfulBasis: 'consent',
  evidenceRef: 'ticket-4821',
});
```

{% endtab %}

{% tab title=".NET" %}

```csharp
using Norbix.Sdk;
using Norbix.Sdk.Types.Api;

using var client = new NorbixClient();

var result = await client.Membership.GrantContactConsentAsync(new GrantContactConsentRequest
{
    ContactId = "ct_4kX9mQvR2tYw7ZbC1dFgHj",
    Channel = "email",
    LawfulBasis = "consent",
    EvidenceRef = "ticket-4821",
});
```

{% endtab %}

{% tab title="Python" %}

```python
from norbix_python import NorbixApi

norbix = NorbixApi()

result = norbix.membership.grant_contact_consent(
    contactId="ct_4kX9mQvR2tYw7ZbC1dFgHj",
    channel="email",
    lawfulBasis="consent",
    evidenceRef="ticket-4821",
)
```

{% endtab %}

{% tab title="Go" %}

```go
c, _ := norbix.New(norbix.Options{})
ctx := context.Background()

var result map[string]any
err := c.API.Membership.GrantContactConsent(ctx, "ct_4kX9mQvR2tYw7ZbC1dFgHj", "email", map[string]any{
	"lawfulBasis": "consent",
	"evidenceRef": "ticket-4821",
}, &result)
```

{% endtab %}

{% tab title="Dart / Flutter" %}

```dart
import 'package:norbix/norbix_api.dart';

final api = NorbixApi();

final result = await api.membership.grantContactConsent(contactId: 'ct_4kX9mQvR2tYw7ZbC1dFgHj', channel: 'email', body: {
  'lawfulBasis': 'consent',
  'evidenceRef': 'ticket-4821',
});
```

{% endtab %}

{% tab title="Swift" %}

```swift
import NorbixSwift

let client = Norbix()

let result = try await client.api.membership.grantContactConsent([
    "contactId": "ct_4kX9mQvR2tYw7ZbC1dFgHj",
    "channel": "email",
    "lawfulBasis": "consent",
    "evidenceRef": "ticket-4821",
])
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
import dev.norbix.sdk.api.NorbixApi

val api = NorbixApi()

val result = api.membership.grantContactConsent(mapOf(
    "contactId" to "ct_4kX9mQvR2tYw7ZbC1dFgHj",
    "channel" to "email",
    "lawfulBasis" to "consent",
    "evidenceRef" to "ticket-4821",
))
```

{% endtab %}

{% tab title="CLI" %}

```sh
norbix api membership contact consent grant --contactId ct_4kX9mQvR2tYw7ZbC1dFgHj --channel email --lawfulBasis consent --evidenceRef ticket-4821
```

{% endtab %}
{% endtabs %}

## In the dashboard

Manage this visually in Norbix Cloud — see [Membership → Users](/norbix-cloud/membership/users.md).

## API reference

Full request and response for this endpoint: [Grant Contact Consent](/api-reference/membership/users/grant-contact-consent.md).
