Create report

Add MCP server to your AI tool

Allow AI tools and LLMs to interact with the API documentation portal through MCP.

MCP server URL

https://api-reference.lassomoderation.com/mcp

Standard setup for AI tools providing an mcp.json file

mcp.json
{
  "Lasso Moderation API MCP server": {
    "url": "https://api-reference.lassomoderation.com/mcp"
  }
}

Close
POST /user-reports

This endpoint should be called when a user on your product reports another user or piece of content.

Default rate limit: 100 requests per minute.

application/json

Body

Make a report about a user or piece of content.

  • report object Required
    Hide report attributes Show report attributes object
    • id string

      Your own id of the report (optional). It is echoed as the report id on the HandleReports and SendMessage webhooks so you can tie them to your record, and sending the same id again returns the existing report instead of creating a duplicate.

      Maximum length is 100.

    • reported_by_id string

      The id of the user who makes the report. Specify exactly one of reported_by_id and reported_by, not both.

      Maximum length is 100.

    • reported_by object

      The user who makes the report. Specify exactly one of reported_by_id and reported_by, not both. These fields are only applied when the reporter does not exist in Lasso yet — an existing user is never updated through this endpoint (use the user API for that).

      Hide reported_by attributes Show reported_by attributes object
      • id string Required

        Maximum length is 100.

      • name string

        Maximum length is 100.

      • email string

        Maximum length is 100.

      • email_domain string

        The email domain of the reporter. So "user@example.com" would be "example.com"

        Maximum length is 100.

      • phone_number string

        Maximum length is 100.

      • country_code string

        Two letter code according to the https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 standard

        Minimum length is 2, maximum length is 2.

      • ip_address string

        Maximum length is 100.

      • profile_image_url string(uri)

        Maximum length is 1400.

      • metadata object | null

        Extra free-form data about the object as key-value pairs. Values can be strings, numbers, booleans, null, or an object with one more level of key-value pairs.

        • The metadata may be at most 4KB (4096 bytes) when serialized as JSON.
        • Keys are not allowed to contain /.
    • reported_by_type string

      You can specify if the report was made by a normal user, admin, moderator, test user, trusted user or state actor. The "state_actor" type requires the DSA compliance feature.

      Values are normal, admin, moderator, trusted, testing, or state_actor.

    • reported_by_entity string

      The name of the entity on whose behalf the report is made, e.g. a trusted flagger organisation (optional)

      Minimum length is 1, maximum length is 255.

    • user_id string

      The id of the user who is reported. Specify either a user_id or a content_id, not both.

      Maximum length is 100.

    • content_id string

      The id of the content that is being reported. Specify either a user_id or a content_id, not both.

      Maximum length is 100.

    • policy_id string Required

      The id of the policy that the user specifies

    • extra_info string

Responses

  • 200 application/json

    OK. Also returned when a report with the same id was sent before; the existing report is returned and no duplicate is created.

    Hide response attributes Show response attributes object
    • success boolean Required
    • data object Required
      Hide data attribute Show data attribute object
      • report object Required
        Hide report attributes Show report attributes object
        • id string Required

          The Lasso id of the report, sent as lasso_report_id on the HandleReports webhook.

        • external_id string

          Your own id of the report, only present when the report was created with an id.

  • 400 application/json

    Returned when the request is invalid, e.g. the policy is not found, or both a user_id and a content_id were provided

    Hide response attributes Show response attributes object
    • success boolean Required
    • error string | object Required

      A message describing the error. For validation errors this is an object with an error message per field.

  • 401 application/json

    The API token is missing or invalid

    Hide response attributes Show response attributes object
    • success boolean Required
    • error string | object Required

      A message describing the error. For validation errors this is an object with an error message per field.

  • 404 application/json

    Returned when the reported content is not found

    Hide response attributes Show response attributes object
    • success boolean Required
    • error string | object Required

      A message describing the error. For validation errors this is an object with an error message per field.

  • 429 application/json

    The rate limit has been exceeded, check the X-RateLimit headers for limits

    Hide headers attributes Show headers attributes
    • X-RateLimit-Limit

      The rate limit interval in milliseconds

    • X-RateLimit-Remaining

      The number of requests remaining in the current interval

    • X-RateLimit-Reset

      The number of milliseconds until requests are allowed again

    Hide response attribute Show response attribute object
    • error string Required
POST /user-reports
curl \
 --request POST 'https://api.lassomoderation.com/api/v1/user-reports' \
 --header "Authorization: Bearer $ACCESS_TOKEN" \
 --header "Content-Type: application/json" \
 --data '{
  "report": {
    "id": "ticket-4711",
    "reported_by": {
      "id": "device-8f3a2c",
      "name": "PixelPirate",
      "email": "reporter@example.com",
      "country_code": "NL",
      "ip_address": "203.0.113.42",
      "metadata": {
        "app_version": "4.2.1"
      }
    },
    "reported_by_type": "normal",
    "user_id": "some_user_id",
    "content_id": "some_content_id",
    "policy_id": "other",
    "extra_info": "Some explanation from the user why it is reported"
  }
}'
Request example
{
  "report": {
    "id": "ticket-4711",
    "reported_by": {
      "id": "device-8f3a2c",
      "name": "PixelPirate",
      "email": "reporter@example.com",
      "country_code": "NL",
      "ip_address": "203.0.113.42",
      "metadata": {
        "app_version": "4.2.1"
      }
    },
    "reported_by_type": "normal",
    "user_id": "some_user_id",
    "content_id": "some_content_id",
    "policy_id": "other",
    "extra_info": "Some explanation from the user why it is reported"
  }
}
Response examples (200)
{
  "success": true,
  "data": {
    "report": {
      "id": "clf10k9xw0008sauvq2xkpd3n",
      "external_id": "ticket-4711"
    }
  }
}
Response examples (400)
{
  "success": false,
  "error": "Policy not found"
}
Response examples (401)
{
  "success": false,
  "error": "Invalid API key"
}
Response examples (404)
{
  "success": false,
  "error": "Reported Content not found"
}
Response examples (429)
{
  "error": "Too many requests, check headers for limits"
}