---
title: "Make each person's own address for a link"
method: POST
path: "/personal_links/{id}/urls"
tags: ["Personal links"]
---

# Make each person's own address for a link

`POST /personal_links/{id}/urls`

## Request

- Base URL: `https://api.meetdarwin.ai/v1`
- URL: `https://api.meetdarwin.ai/v1/personal_links/{id}/urls`
- Auth: HTTP bearer

Requires the `agent:read` scope.

Up to 1,000 people per call, each with any of email, first_name, last_name, company and title, returned in order with their address and the greeting they will see. Nothing is stored: a person becomes a contact when they click.

## Path parameters

- `id` string, required

## Headers

- `Idempotency-Key` string

## Request body

- PersonalUrlsCreate
  - `people` object[], required: 1 to 1000 people, each with any of email, first_name, last_name, company and title.
    - `email` string, nullable
    - `first_name` string, nullable
    - `last_name` string, nullable
    - `company` string, nullable
    - `title` string, nullable
    - `external_id` string, nullable: Your own id for this person (a CRM record id), returned with their address.

## Response `200`

OK

- PersonalUrlBatch
  - `object` 'personal_url_batch', required
  - `link` string, required
  - `data` object[], required
    - `object` 'personal_url', required
    - `url` string, required
    - `external_id` string, nullable, required
    - `email` string, nullable, required
    - `greeting` string, required: What the chat will say to this person.
    - `dropped` string[], required: Details left out because the chat would not use them (an unfilled merge field, an invalid email).
    - `missing` string[], required: Details the greeting uses that this person lacks; the greeting's fallback words are used.

## Other responses

- `400`: Invalid request (`invalid_request`, `unsupported_version`).
- `401`: Missing or invalid key (`authentication_required`, `invalid_api_key`).
- `402`: The workspace must add a card before the API can be used (`payment_required`).
- `403`: The key lacks the scope (`insufficient_scope`), the feature is off (`feature_disabled`), or the workspace's plan doesn't include it (`plan_required`, with `required_plan`).
- `404`: No such object in this workspace (`not_found`).
- `409`: Conflicts with the current state (`conflict`, `idempotency_key_in_use`), or the change would leave a live agent with no calendar or live form (`goal_required`).
- `422`: Refused by a rule (`unprocessable`, `idempotency_key_reused`).
- `429`: Rate limited (`rate_limited`) or a monthly allowance used (`quota_exceeded`); see Retry-After.

## Changes

- **2026-10-20** `f93b0bcb454a`: 24 info
  - added the optional property `feature` to the response with the `400` status
  - added the optional property `feature` to the response with the `401` status
  - added the optional property `feature` to the response with the `402` status
  - added the optional property `feature` to the response with the `403` status
  - …20 more

[Operation history](https://skmtc.dev/meetdarwin/apis/darwin-api/changes/personal_links/:id/urls/post.md)

---

[API](https://skmtc.dev/meetdarwin/apis/darwin-api.md) · [All operations](https://skmtc.dev/meetdarwin/apis/darwin-api/llms.txt) · [OpenAPI document](https://skmtc.dev/meetdarwin/apis/darwin-api/revisions/f93b0bcb454a?raw)
