Skip to content

Create a listing report

Gateway module

POST/listing-reportslistingReports.create

A report against a listing or profile, handled through notice and action. Creates a listing report. Requires `Idempotency-Key`; a replay returns the original response. The organization is derived from the credential or the parent row, never from the body.

  • Requires the capability me.profile.write.
  • OAuth scopes: me.
  • Send an Idempotency-Key header. A replay with the same key returns the original response.
  • Error statuses: 400, 401, 409, 422, 429. Errors are RFC 9457 problem details.

Request body: ListingReportCreate

listingReports.create: ListingReportCreate
FieldTypeRequiredDescription
reason"Illegal Content" | "Discrimination" | "Fraud" | "Misleading Information" | "Missing Pay Range" | "Safety"YesGround for the report.
opportunity_idstring (uuid)YesIdentifier of the reported opportunity.
detailsstring | nullNoWhat the reporter saw.Constraints: length 1 to 20000
{
  "reason": "Illegal Content",
  "opportunity_id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
  "details": "The listing asks for an upfront fee."
}

Response 201: ListingReport

listingReports.create: ListingReport
FieldTypeRequiredDescription
idstring (uuid)YesIdentifier of the listing report.
created_atstring (date-time)YesWhen the row was created.
updated_atstring (date-time)YesWhen the row was last updated.
reason"Illegal Content" | "Discrimination" | "Fraud" | "Misleading Information" | "Missing Pay Range" | "Safety"YesGround for the report.
opportunity_idstring (uuid)YesIdentifier of the reported opportunity.
reporter_person_idstring (uuid)YesIdentifier of the person who reported, set from the session.
detailsstring | nullYesWhat the reporter saw.Constraints: length 1 to 20000
reported_atstring (date-time)YesWhen the report was made, set by the database.
{
  "id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
  "created_at": "2026-10-08T14:30:00Z",
  "updated_at": "2026-10-08T14:30:00Z",
  "reason": "Illegal Content",
  "opportunity_id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
  "reporter_person_id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
  "details": "The listing asks for an upfront fee.",
  "reported_at": "2026-10-08T14:30:00Z"
}

Code samples

curl -X POST "$XOS_BASE_URL/listing-reports" \
  -H "Authorization: Bearer $XOS_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"reason":"Illegal Content","opportunity_id":"0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f","details":"The listing asks for an upfront fee."}'
const { data } = await xos.listingReports.create({
    "reason": "Illegal Content",
    "opportunity_id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
    "details": "The listing asks for an upfront fee."
  });
response = xos.listing_reports.create({"reason": "Illegal Content", "opportunity_id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f", "details": "The listing asks for an upfront fee."})
xos listing-reports create --data '{"reason":"Illegal Content","opportunity_id":"0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f","details":"The listing asks for an upfront fee."}'