# Send a custom-loyalty sign-in link

> Source: /api-reference/partner/explorer/public/send
> Emails a sign-in link to a visitor of a partner-hosted custom loyalty page. The only unauthenticated endpoint on the partner surface: it is called by the partner’s own public page on behalf of a visitor, so it carries no credential. The organization is resolved from `host`, which must be a domain the partner has connected. Rate limited to 30 requests per 15 minutes.
> Full spec: https://docs.journey.com/openapi/partner.v1.json

## `POST /v1/public/partner/custom-loyalty/invite/send`

```json
{
  "description": "Emails a sign-in link to a visitor of a partner-hosted custom loyalty page. The only unauthenticated endpoint on the partner surface: it is called by the partner’s own public page on behalf of a visitor, so it carries no credential. The organization is resolved from `host`, which must be a domain the partner has connected. Rate limited to 30 requests per 15 minutes.",
  "operationId": "partnerPageAuthPublic_send",
  "parameters": [],
  "requestBody": {
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/SendPartnerPageAuthRequest"
        }
      }
    },
    "required": true
  },
  "responses": {
    "201": {
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/SendPartnerPageAuthResponse"
          }
        }
      },
      "description": "The request was accepted. The response does not reveal whether the address belongs to an existing member."
    },
    "429": {
      "description": "Rate limit exceeded: more than 30 requests in 15 minutes."
    }
  },
  "security": [],
  "summary": "Send a custom-loyalty sign-in link",
  "tags": [
    "partner/public"
  ],
  "x-required-scopes": []
}
```