Lithify / docs PRIVATE BETA
Docs / Intakes / iOS feedback

iOS feedback intake

JSON-over-HTTP intake designed for in-app feedback. The minimum payload is a single message; everything else (device, OS, screen, repro steps, attachments) is optional and only worth sending when the app already knows it.

API key JSON or multipart Base64 attachments

Minimum payload

POST /api/v1/intakes/my-ios-intake/submit
Authorization: Bearer lfk_xxxxxxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Content-Type: application/json

{
  "message": "The settings screen is confusing when changing notification preferences."
}

Useful optional fields

FieldPurpose
titleCleaner brief card title. Falls back to the first line of message.
feedback_typePre-classify (bug / feature_request / customer_feedback).
screen_nameThe screen the user was on when they hit "Send feedback".
app_version / os_versionFor triage and reproducibility.
reproduction_stepsFree text. Shown verbatim on the brief.
expected_behavior / actual_behaviorStandard bug-report shape.
attachments[]Screenshots, logs. Base64 in JSON, or multipart form fields named attachments.

Rich example

POST /api/v1/intakes/my-ios-intake/submit
Authorization: Bearer lfk_xxxxxxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Content-Type: application/json

{
  "title": "Checkout freezes on Apple Pay handoff",
  "message": "After tapping Pay, the screen turns grey and the app stops responding.",
  "feedback_type": "bug",
  "screen_name": "CheckoutViewController",
  "app_version": "3.4.1 (1208)",
  "os_version": "iOS 17.4",
  "reproduction_steps": "1. Add item\n2. Tap checkout\n3. Tap Apple Pay",
  "expected_behavior": "Apple Pay sheet appears",
  "actual_behavior": "Screen greys out, no sheet",
  "attachments": [
    { "filename": "screen.png", "content_type": "image/png", "data_base64": "iVBORw0KGgo..." }
  ]
}

Where unmapped fields go

Anything you send that isn't a recognised field is preserved on the brief, untouched. The agents only see the normalised brief, but reviewers can always drill into the raw payload from the brief detail page if they need to check what came in.

Don't ask the user for what the device knows. Pre-fill app_version, os_version, screen_name from your app and keep the form short. Lithify's refining agent does much better with rich context than with a long form.