Photo Collect API
Photo Collect ↗
GETInvitations

Get invitation details

Retrieve the current status and metadata for a single invitation key.

GET/apiv1/invitation

Use this endpoint to inspect a specific invitation. It reports the upload channel, message state, photo and quality-control state, user consent decisions, timestamps, and invitation URL where applicable.

An upload performed by the kiosk or app can close the initial invitation and create a new invitation_key. The response then includes the upload record under uploaded_with. Do not rely on a permanent invitation_key ↔ customer_no mapping; use GET /search when customer_no is the stable identifier.

Request parameters

Parameter Required Description
invitation_key Yes Unique invitation key.
language_interface No Response language. ISO locale codes such as en_US are recommended. Two-letter codes such as en are matched on a best-effort basis.

Response

{
  "invitation_key": "o2hIyfWYpMq8",
  "customer_no": "123456789",
  "customer_to": "+41760000000",
  "photocode": null,
  "locale": "en_US",
  "upload_channel": "invitation",
  "site_name": "Demo",
  "site_code": "demo",
  "photo_status": null,
  "qc_status": null,
  "qc_failed_reason": null,
  "user_consent": null,
  "created_at": "2024-03-12T17:07:55+01:00",
  "expires_at": null,
  "uploaded_at": null,
  "exported_at": null,
  "received_at": null,
  "invitation_url": "https://demo.photocollect.io/c/o2hIyfWYpMq8",
  "iteration": 1,
  "message_status": "delivered"
}

Unknown keys return HTTP 400 with GET_INVITATION_FAILED.

User consent

user_consent contains the user's recorded consent decisions as a JSON object keyed by category. It is null when no decisions have been recorded. Decisions are collected only for enabled, applicable consent questions. Only categories with a recorded decision are included; a missing category does not mean the user declined it.

Category Description
use_general Consent to use the user's photo.
use_marketing Consent to use the photo for marketing, communications, and the website.
enhance_genai Consent to enhance or change the photo using generative AI.

The three categories above are the base categories. Theme-defined categories such as use_linkedin and use_advertising can also appear, with the same fields. Treat the category names as extensible rather than a fixed enumeration. Valid historical decisions remain in the response even if a category is later disabled or removed from the theme.

Consent requirements can be configured when creating an invitation using config.consent. That configuration describes which questions to ask; user_consent describes the user's recorded answers.

Each category contains:

Field Type Description
choice Boolean true when the user consented; false when the user declined.
datetime String Time the decision was recorded, in UTC using the ISO 8601 format YYYY-MM-DDTHH:mm:ssZ.

For example, an invitation with recorded decisions can include:

{
  "user_consent": {
    "use_general": {
      "choice": true,
      "datetime": "2026-09-16T12:30:00Z"
    },
    "use_marketing": {
      "choice": false,
      "datetime": "2026-09-16T12:30:00Z"
    },
    "enhance_genai": {
      "choice": true,
      "datetime": "2026-09-16T12:30:00Z"
    },
    "use_linkedin": {
      "choice": false,
      "datetime": "2026-10-18T10:15:00Z"
    }
  }
}

The same user_consent field is included in invitation records returned by GET /search and each item in the files array returned by GET /export. The original UTC decision timestamps are preserved in all three responses.

⌁

Connect your API

Credentials are kept in this session only.