# Deliveries

Source: https://parasend.com/docs/api/deliveries

One evidenced transfer of a content payload (files or a secret) to exactly one recipient.

## Endpoints

- [Create a delivery](https://parasend.com/docs/api/deliveries/create.md): `POST /v1/deliveries`
- [List deliveries](https://parasend.com/docs/api/deliveries/list.md): `GET /v1/deliveries`
- [Retrieve a delivery](https://parasend.com/docs/api/deliveries/retrieve.md): `GET /v1/deliveries/{id}`
- [Check a contact before sending](https://parasend.com/docs/api/deliveries/check-contact.md): `POST /v1/deliveries/contact_check`
- [Send a reminder](https://parasend.com/docs/api/deliveries/remind.md): `POST /v1/deliveries/{id}/remind`
- [Revoke a delivery](https://parasend.com/docs/api/deliveries/revoke.md): `POST /v1/deliveries/{id}/revoke`
- [Delete a delivery](https://parasend.com/docs/api/deliveries/delete.md): `DELETE /v1/deliveries/{id}`
- [List a delivery's events](https://parasend.com/docs/api/deliveries/events.md): `GET /v1/deliveries/{id}/events`
- [List a delivery's e-mails and SMS](https://parasend.com/docs/api/deliveries/notifications.md): `GET /v1/deliveries/{id}/notifications`
- [List a delivery's files](https://parasend.com/docs/api/deliveries/files.md): `GET /v1/deliveries/{id}/files`
- [Download a delivered file](https://parasend.com/docs/api/deliveries/download-file.md): `GET /v1/deliveries/{id}/files/{fileId}/content`
- [Set the recipient's postal address](https://parasend.com/docs/api/deliveries/set-address.md): `PATCH /v1/deliveries/{id}/address`
- [Change a delivery's follow-up policy](https://parasend.com/docs/api/deliveries/change-policy.md): `POST /v1/deliveries/{id}/policy_change`
- [Get a delivery's cost](https://parasend.com/docs/api/deliveries/cost.md): `GET /v1/deliveries/{id}/cost`
- [Get the cost of several deliveries](https://parasend.com/docs/api/deliveries/costs.md): `GET /v1/deliveries/costs`
- [Get delivery counts](https://parasend.com/docs/api/deliveries/summary.md): `GET /v1/deliveries/summary`

## The Delivery object

- `id` (string, optional): The delivery's ID, starting `dlv_`.
- `object` (string, optional): Always `delivery`.
- `content_type` (string, optional): What the delivery carries: `files`, documents. One of: `files`.
- `status` (string, optional): Where a delivery is in its life. Activity such as reminders and opens is in `last_activity`, never a status. `authenticated`: the recipient has verified but not yet confirmed receipt. The end states are `delivered`, `expired`, `revoked`, `bounced` and `consignment_failed`. One of: `created`, `notified`, `opened`, `authenticated`, `auth_failed`, `confirmed`, `delivered`, `evidence_sealed`, `expired`, `revoked`, `bounced`, `consignment_failed`, `paper_pending_approval`, `paper_dispatched`.
- `last_activity` (object · nullable, optional): The latest activity on the delivery, such as a reminder or an open; null until there is any.
- `recipient` (object, optional): Who receives a delivery. At least one of `email` and `phone`; `phone` is required at `verification_level: medium`, where the SMS code goes. With `conditional_authentication` true, only the named person can open it: `personal_code` is required at `high` (only an eID with that kennitala passes) and `id_document_number` at `substantial` (only that identity document passes). Without it, the recipient still verifies at the level you set, and their verified identity is recorded and returned to you. A mismatch is the event `delivery.auth_failed`, with the reason `personal_code_mismatch` or `id_document_mismatch`.
  - `recipient.verification_level` (string, required): How the recipient must identify themselves before they see the documents: `high`, eID; `substantial`, a passport or ID-card check with a selfie; `medium`, a one-time code sent by SMS when they open the link; `low`, the link alone. A stronger way is always accepted. One of: `high`, `substantial`, `medium`, `low`.
  - `recipient.name` (string · nullable, optional): The recipient's name as you gave it, trimmed: up to 255 characters, no control characters. It is sealed into the evidence as given and never checked; null when none was given. `verified_name` holds the name from their eID or passport.
  - `recipient.verified_name` (string · nullable, optional): The recipient's name as their eID or passport states it, once they have signed in with one; null before that, or for a confirmation without an eID or a passport check. `name` stays as the sender declared it (sealed into the evidence as such).
  - `recipient.verified_method` (string · nullable, optional): How `verified_name` was established — the method of the sign-in it was read from (an eID, a passkey, or videoid for a passport check); null with it. One of: `audkenni`, `smart_id`, `sms_otp`, `passkey`, `videoid`, `password`, `link_only`.
  - `recipient.verification_photos` (array of string, optional): The photos kept, with the recipient's consent, from the passport or ID-card check their verified name came from: the document's photo page and the selfie. Each is at GET /deliveries/{id}/recipient_photos/{kind} (JPEG; needs `evidence.read`). Empty for any other method. One of: `document`, `selfie`.
  - `recipient.email` (string · email · nullable, optional): The recipient's e-mail address, where e-mail notices and reminders go; null when not given. At least one of `email` and `phone` is required.
  - `recipient.phone` (string · nullable, optional): E.164
  - `recipient.address` (object · nullable, optional)
    - `recipient.address.line1` (string, optional): The first address line, such as the street and number. Required.
    - `recipient.address.line2` (string · nullable, optional): A second address line, or null.
    - `recipient.address.postal_code` (string, optional): The postal code. Required.
    - `recipient.address.city` (string, optional): The town or city. Required.
    - `recipient.address.country` (string, optional): ISO 3166-1 alpha-2
    - `recipient.address.source` (string · nullable, optional): Where the address came from, as you state it: `thjodskra`, Iceland's national registry (Þjóðskrá); `customer_csv`, your own records, imported from a file; `manual`, entered by hand. Default `manual`. One of: `thjodskra`, `customer_csv`, `manual`.
  - `recipient.conditional_authentication` (boolean, optional): When true, only the person you name can open the delivery: at `high` their eID must carry `personal_code`, and at `substantial` their passport or ID card must carry `id_document_number`. Default false: the recipient still identifies themselves at the level, and you get back the identity they used. Default: `false`.
  - `recipient.personal_code` (string · nullable, optional): The recipient's Icelandic personal code (kennitala). Required when `conditional_authentication` is true at `high`.
  - `recipient.id_document_number` (string · nullable, optional): The number of the recipient's passport or ID card. Required when `conditional_authentication` is true at `substantial`.
- `batch_id` (string · nullable, optional): The batch it belongs to (`bat_…`), or null when it is not part of a batch.
- `delivery_url` (string · nullable, optional): Signed recipient URL (headless/embed integration).
- `evidence_policy` (string · uri, optional): The evidence policy this delivery's evidence is produced under, as a URN. It is on the delivery and on every evidence record.
- `certificate_language` (string, optional): The language of every Delivery Certificate of this delivery, the sender's and the recipient's: your organisation's certificate language when the delivery was created, never changed after. `?language=` on the certificate routes may name it; the other language is 409 `certificate_language_fixed`. One of: `is`, `en`.
- `warnings` (array of object, optional): Notices on the create response that do not stop the delivery. Show them to whoever sent it.
  - `warnings[].code` (string, optional): `sms_otp_unavailable`: SMS one-time codes that came only with the default methods were dropped, because Parasend does not send SMS to that number's country on your account. `link_domain_unavailable`: sent with Parasend's own links because your link domain is not working. One of: `fail_closed_delivery`, `sms_otp_unavailable`, `link_domain_unavailable`.
  - `warnings[].message` (string, optional)
- `sender_display` (object, optional): Resolved value (delivery → template → organisation default).
- `operator_reference` (string · nullable, optional): For a company sender: an opaque reference to the person who sent it, shown under the company name instead of their name. null for a personal account.
- `recipient_ref` (string, optional): An opaque reference to the recipient, repeated on the evidence.
- `options` (object, optional)
  - `options.notify_channels` (array of string, optional): How the recipient is told — the invitation and every reminder go to each channel listed; each needs its contact (recipient.email, recipient.phone). Default — e-mail when there is an address, else SMS. Told on both, a failure on one channel bounces the delivery only once the other cannot arrive either. One of: `email`, `sms`.
  - `options.auth_methods` (array of string, optional): Which ways of identifying the recipient to offer within `recipient.verification_level`, in your order of preference. The recipient may always use a way at least as strong as the weakest one you list. Left out: every way the level allows (an SMS code only when the recipient has a phone). One of: `audkenni`, `smart_id`, `sms_otp`, `passkey`, `videoid`, `password`, `link_only`.
  - `options.reminder_policy` (string · nullable, optional): The follow-up policy's ID (`rpol_…`): the reminders this delivery sends while it waits.
  - `options.brand_profile_id` (string · nullable, optional): The brand profile's ID (`bp_…`). One set on the delivery wins over the batch's, and the batch's over the account's default.
  - `options.expires_in_days` (integer, optional): How many days the recipient has to confirm receipt before the delivery expires: a whole number from 1 to 365. Default 30. For a delivery in a batch, the days count from when the batch is sent out.
  - `options.sender_display` (string, optional): What the recipient and the evidence show as the sender. `legal_person` (your organisation's default) shows the organisation, with an opaque reference to the person who sent it; that person's name, personal code and e-mail are not shown. `individual` names the person who sent it as well. Your choice per delivery or template; a personal account is always `individual`. One of: `legal_person`, `individual`.
  - `options.allow_parasend_links` (boolean, optional): Send even though your brand profile's link domain is not working, with Parasend's own links (warning `link_domain_unavailable`). Without it such a delivery is refused with 409 `link_domain_unavailable`. Default: `false`.
  - `options.notice_wording` (object, optional): Which saved wording the first notice uses, per channel: a wording ID, null for Parasend's own, or left out for your organisation's default.
    - `options.notice_wording.email` (string · nullable, optional)
    - `options.notice_wording.sms` (string · nullable, optional)
- `legal_hold` (boolean, optional): Whether the delivery is under legal hold. While it is, `DELETE /deliveries/{id}` is refused with `delete_blocked_legal_hold`.
- `deletion_scheduled_at` (string · date-time · nullable, optional): Set when DELETE /deliveries/{id} has scheduled the delivery's removal; null otherwise.
- `livemode` (boolean, optional): `true` in live mode, `false` in test mode.
- `created` (string · date-time, optional): When it was created, in ISO 8601 (UTC).
- `expires_at` (string · date-time · nullable, optional): When the delivery expires if the recipient has not confirmed receipt, in ISO 8601 (UTC): `options.expires_in_days` after it was created, or for a delivery in a batch, after the batch was sent out. null while its batch has not been sent out.
- `metadata` (object, optional): Your own key–value pairs, kept with the object and returned as you sent them. Never put personal data here.
- `kind` (string, optional): Unified-list discriminator. GET /deliveries returns all kinds. One of: `documents`, `secret`, `request`.
- `direction` (string, optional): inbound = a fulfillment of a document request (sender = the verified uploader). One of: `outbound`, `inbound`. Default: `"outbound"`.
- `origin_request` (string · nullable, optional): req_… linkage when this delivery fulfils a document request.
- `follow_up` (object · nullable, optional): Where the delivery is in its follow-up policy; null for a delivery created before follow-up policies existed.
- `reminder_waiting` (object · nullable, optional): A reminder that waits because the delivery's link domain is not working: it goes on that domain once it works again, or with Parasend's link once the domain has failed (after 72 hours). null when none waits.
  - `reminder_waiting.since` (string · date-time, required): When the first waiting reminder was put off.
  - `reminder_waiting.reason` (string, required): One of: `link_domain_degraded`.
  - `reminder_waiting.link_host` (string, required): The delivery's link domain.
- `email_waiting` (object · nullable, optional): An e-mail that waits for your own sending address (its sender is set to hold on failure): it goes from that address once it works again, or from Parasend's at `until` at the latest. null when none waits.
  - `email_waiting.since` (string · date-time, required)
  - `email_waiting.reason` (string, required): One of: `email_sender`.
  - `email_waiting.from_address` (string · email, required)
  - `email_waiting.until` (string · date-time, required)
- `private` (boolean, optional): Sent with a private key; written once at creation.
- `title` (string · nullable, optional): The subject the recipient sees in the notice and on their page.
- `message` (string · nullable, optional): The plain-text note shown before sign-in, or null.
- `language` (string, optional): The language of the notice and of the recipient page. One of: `is`, `en`.
- `short_url` (string · uri · nullable, optional): A short link to the recipient page, the form an SMS carries.
- `files` (array of object, optional): The delivery's files: each one's ID, its name in the delivery, and whether it is the main document.
  - `files[].file_id` (string, optional)
  - `files[].path` (string, optional)
  - `files[].primary` (boolean, optional)

```json
{
  "id": "dlv_01M6R27T05512SCV3852TPM2XY",
  "object": "delivery",
  "kind": "documents",
  "direction": "outbound",
  "content_type": "files",
  "status": "notified",
  "last_activity": {
    "at": "2026-11-06T09:15:05.667Z",
    "type": "notified"
  },
  "title": "Final notice: invoice 2026-114",
  "message": null,
  "language": "en",
  "certificate_language": "is",
  "recipient": {
    "name": "Anna Björk Jónsdóttir",
    "verified_name": null,
    "verified_method": null,
    "verification_photos": [],
    "email": "anna.bjork@example.com",
    "phone": null,
    "address": null,
    "verification_level": "high",
    "conditional_authentication": false,
    "personal_code": null,
    "id_document_number": null
  },
  "files": [
    {
      "file_id": "fil_01M6R27SZK99V6N6WG4GK15T6R",
      "path": "test-notice.pdf",
      "primary": true
    }
  ],
  "batch_id": null,
  "delivery_url": null,
  "short_url": "https://parasend.com/d/RM1RyXl0",
  "evidence_policy": "urn:parasend:policy:evidence:standard:1",
  "sender_display": "legal_person",
  "operator_reference": "OP-7K3Q-M2",
  "recipient_ref": "rcp_01M6R27T05ZNSRNMAW2CA8MTF6",
  "private": false,
  "options": {
    "auth_methods": [
      "audkenni",
      "smart_id",
      "passkey"
    ],
    "reminder_policy": null,
    "brand_profile_id": null,
    "expires_in_days": 30,
    "sender_display": "legal_person",
    "notify_channels": [
      "email"
    ]
  },
  "legal_hold": false,
  "deletion_scheduled_at": null,
  "livemode": false,
  "created": "2026-11-06T09:15:05.604Z",
  "expires_at": "2026-12-06T09:15:05.603Z",
  "metadata": {
    "case_ref": "IN-2026-114"
  },
  "origin_request": null,
  "reminder_waiting": null,
  "email_waiting": null,
  "follow_up": {
    "policy_id": null,
    "policy_name": null,
    "policy_source": "none",
    "state": "done",
    "reminders_sent": 0,
    "last_step": null,
    "next_step": null,
    "paused": false
  }
}
```
