---
title: "Sign personal /free links: what people mark there is live for you straight away, without the confirmation email"
method: POST
path: "/api/ask-links"
---

# Sign personal /free links: what people mark there is live for you straight away, without the confirmation email

`POST /api/ask-links`

## Request

- Base URL: `https://whenmeet.me`
- URL: `https://whenmeet.me/api/ask-links`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `__Host-session`

For each address returns <origin>/free?email=…&k=<callerId>.<22-char signature> (HMAC of the lower-cased email and the caller's id with a server key that never reaches the client). Whoever opens it can paint that address live FOR THE CALLER ONLY: the caller vouches for the address, for themselves, by sending the link to that person. Others see it only after the person shares it with everyone and confirms by email. Emails are trimmed, lower-cased and deduped.

## Request body

- object
  - `emails` string[], required

## Response `200`

{ links: { email, url }[] }

- object
  - `links` object[]
    - `email` string
    - `url` string, uri

## Other responses

- `400`: invalid_emails (not an array, more than 50, or an invalid entry).
- `401`: unauthenticated (no session or token), or invalid_token (a Bearer token that is malformed, unknown or revoked — never a silent anonymous fallback).
- `503`: not_configured.

---

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