Report publication


Full code example


This request is protected by authentication

hint: this means it requires an x-access-token header put in the request with your authentication token.

This mutation report publication allows a user to report something with a reason.

API Design

returns a VoidScalar which means no response is returned if you do look at the response data it will be data.reportPublication= null but you do not need to look at the response for anything which returns void. If it does not throw it is successful.

mutation ReportPublication {
  reportPublication(request: {
    publicationId: "0x01-0x01",
    reason: {
      sensitiveReason: {
        reason: SENSITIVE,
        subreason: OFFENSIVE
    additionalComments: "Dislike this post"
type Mutation {
  reportPublication(request: ReportPublicationRequest!): Void
input ReportPublicationRequest {
  publicationId: InternalPublicationId!
  reason: ReportingReasonInputParams!
  additionalComments: String

input ReportingReasonInputParams {
  sensitiveReason: SensitiveReasonInputParams
  illegalReason: IllegalReasonInputParams
  fraudReason: FraudReasonInputParams

input SensitiveReasonInputParams {
  reason: PublicationReportingReason!
  subreason: PublicationReportingSensitiveSubreason!

# Publication reporting reason
enum PublicationReportingReason {

# Publication reporting sensitive subreason
enum PublicationReportingSensitiveSubreason {

input IllegalReasonInputParams {
  reason: PublicationReportingReason!
  subreason: PublicationReportingIllegalSubreason!

# Publication reporting illegal subreason
enum PublicationReportingIllegalSubreason {

input FraudReasonInputParams {
  reason: PublicationReportingReason!
  subreason: PublicationReportingFraudSubreason!

# Publication reporting fraud subreason
enum PublicationReportingFraudSubreason {


Did you know...

The publication id is not unique in the smart contract its a counter per each profile. So if @josh posts a publication that will be publication 1 for his profile and then if @josh2 posts a publication that will be publication 1 for his profile. Our backend generates what we call an InternalPublicationId which is built up from {profileId}-{publicationId} creating a unique ID that can be queried against our database. You will see that InternalPublicationId is used on all our responses and also used in any request you which to do.


Let's look into more detail of the reason part of the request as there are many ways you can report.

The reason is an object of 3 things sensitiveReason, illegalReason , fraudReason due to not being able to do unions in GraphQL you should only pass 1 in of those properties. The beauty of GraphQL is that the schema will explain how those types should be shaped and export the enums for you as well.

Using LensClient SDK

import { buildReportingReasonInputParams, PublicationReportReason } from "@lens-protocol/client";

// lensClient is authenticated

const result = await{
  publicationId: '0x014e-0x0a',
  reason: buildReportingReasonInputParams(PublicationReportReason.FAKE_ENGAGEMENT),
  additionalComments: 'comment',