---
title: "Resend a Spark Invitation"
method: POST
path: "/sparks/{id}/share/resend"
tags: ["sparks"]
---

# Resend a Spark Invitation

`POST /sparks/{id}/share/resend`

## Request

- Base URL: `https://api.sparkvault.com/v1`
- URL: `https://api.sparkvault.com/v1/sparks/{id}/share/resend`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer
- TypeScript: <https://skmtc.dev/sparkvault/apis/sparkvault-api/docs/sparks/:id/share/resend/post.ts> (a function with typed inputs; its response is checked against the schema)

Deliver an invite-only Spark's link to its invitee again, by email or SMS, changing nothing about the link. A share writes the link before it delivers the invitation, so one whose delivery failed (502 INVITATION_DELIVERY_FAILED) leaves the link in place, and a share repeated with the same invitee delivers nothing (its `delivered_to` is empty): this is how the invitation goes out again.

## Path parameters

- `id` string, required

## Response `200`

The invitation, delivered again.

- object
  - `data` object, required
    - `resent` true, required
    - `spark_id` string, required
    - `identity` string, required: The invitee the link was delivered to.
    - `identity_type` 'email' | 'phone', required
    - `sent_at` integer, required: Unix seconds.
  - `meta` ResponseMeta: Envelope metadata present on every successful response.
    - `api_version` string
    - `request_id` string
    - `response_ms` integer
    - `timestamp` integer: Unix seconds.
    - `pools` object: Storage and bandwidth capacity snapshot for the account.
    - `billing` object
      - `past_due` boolean
    - `quota` object: This minute of the account request budget. Present on authenticated success responses that passed the throttle; absent otherwise.
      - `limit` integer
      - `used` integer
      - `remaining` integer
      - `resets_at` integer: Unix seconds.

## Other responses

- `401`: AUTHENTICATION_ERROR — missing or invalid credentials.
- `403`: FORBIDDEN — the Spark is burned or expired, or its link is spent or past its own expiry, so it opens nothing.
- `404`: NOT_FOUND — no Spark has this id, an app holds it, or its link is not invite-only.
- `429`: RATE_LIMIT_EXCEEDED — the account exceeded 5000 requests this minute. `Retry-After` carries the seconds to wait, and `details` carries limit/resets_at, plus `used` whenever the request was counted. A request refused because the limiter itself was unavailable reports no `used`.
- `502`: INVITATION_DELIVERY_FAILED — the invitation could not be delivered; the link stays in place.

## Changes

- **2026-10-28** `a9a10e328ba5`: 20 info
  - the response property `error/details` became required for the status `401`
  - the response property `error/details` became required for the status `403`
  - the response property `error/details` became required for the status `404`
  - the response property `error/details` became required for the status `429`
  - …16 more
- **2026-10-28** `56d7c265a77a`: 5 breaking
  - the response property `error/details` became nullable for the status `401`
  - the response property `error/details` became nullable for the status `403`
  - the response property `error/details` became nullable for the status `404`
  - the response property `error/details` became nullable for the status `429`
  - …1 more
- **2026-10-27** `605eaf4267d2`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/sparkvault/apis/sparkvault-api/changes/sparks/:id/share/resend/post.md)

---

[API](https://skmtc.dev/sparkvault/apis/sparkvault-api.md) - [All operations](https://skmtc.dev/sparkvault/apis/sparkvault-api/llms.txt) - [OpenAPI document](https://skmtc.dev/sparkvault/apis/sparkvault-api/revisions/97cfadccd0c0?raw)
