API Documentation
Understanding webhook responses
5 min
overview as part of successfully integrating platforms, nima emits a webhook response once a moderation action has been applied, whether this is through manual moderation, or automated detection the purpose of this response is to allow the end user to parse responses for their own systems below is the default json response sent over by each webhook action please note that this json response is fully customisable to edit it go to /dashboard/settings/moderation actions/ click on customise webhook body (the templating engine supporting customisation of the webhook json body is https //twig symfony com/doc/ ) { "moderator" { "email" "{{ moderator email }}" }, "flag" { "id" "{{ flag id }}", "priority" "{{ flag priority }}", "channel" "{{ flag channel }}", "customerspecific" {{ flag customerspecific|json encode()|raw }}, "label" {{ flag label|json encode()|raw }}, "location id" "{{ flag location id }}", "content id" "{{ flag content id }}", "reporter id" "{{ flag reporter id }}", "reportee id" "{{ flag reportee id }}", "created at" "{{ flag created at }}", "updated at" "{{ flag updated at }}", "status" "{{ flag status }}", "apply action" "{{ flag apply action }}", "priority score" "{{ flag priority score }}", "reason for request" "{{ flag reason for request }}", "note" "{{ note }}", "moderation queue id" "{{ flag moderation queue id }}", "priority status" "{{ flag priority status }}", "content type" "{{ flag content type }}", "custom attributes" {{ flag custom attributes |json encode()|raw }}, "reportee" { "id" "{{ flag reportee id }}", "name" "{{ flag reportee name }}", "phonenumber" "{{ flag reportee phonenumber }}", "emailaddress" "{{ flag reportee emailaddress }}", "customerspecific" {{ flag reportee customerspecific |json encode()|raw }}, "created at" "{{ flag reportee created at }}", "updated at" "{{ flag reportee updated at }}" }, "reporter" { "id" "{{ flag reporter id }}", "name" "{{ flag reporter name }}", "phonenumber" "{{ flag reporter phonenumber }}", "emailaddress" "{{ flag reporter emailaddress }}", "customerspecific" {{ flag reporter customerspecific |json encode()|raw }}, "created at" "{{ flag reporter created at }}", "updated at" "{{ flag reporter updated at }}" }, "content" { "id" "{{ flag content id }}", "title" "{{ flag content title }}", "body" "{{ flag content body }}", "url" "{{ flag content url }}", "token" "{{ flag content token }}", "customerspecific" {{ flag content customerspecific |json encode()|raw }}, "created at" "{{ flag content created at }}", "updated at" "{{ flag content updated at }}", "rawtext" "{{ flag content rawtext }}", "language" "{{ flag content language }}", "content id" "{{ flag content content id }}", "type" { "id" "{{ flag content type id }}" } } }, "policy" { "id" "{{ policy id }}", "value" "{{ policy value }}", "created at" "{{ policy created at }}", "updated at" "{{ policy updated at }}", "action id" "{{ policy action id }}", "parent id" "{{ policy parent id }}", "tier id" "{{ policy tier id }}", "shortcut key" "{{ policy shortcut key }}" }, "action" { "id" "{{ action id }}", "name" "{{ action name }}", "type" "{{ action type }}", "end point" "{{ action end point }}", "key" "{{ action key }}", "key type" "{{ action key type }}", "shortcut key" "{{ action shortcut key }}", "created at" "{{ action created at }}", "updated at" "{{ action updated at }}", "popup ability" "{{ action popup ability }}", "enable action on flag" "{{ action enable action on flag }}", "enable action on appeal" "{{ action enable action on appeal }}", "headers" {{ action headers|json encode()|raw }} } } true 163,446left unhandled content type left unhandled content type left unhandled content type left unhandled content type left unhandled content type left unhandled content type left unhandled content type left unhandled content type left unhandled content type left unhandled content type left unhandled content type left unhandled content type typical webhook json body for collection of files { "moderator" { "email" "some email\@google com" }, "flag" { "id" "37", "priority" "medium", "channel" "user report", "customerspecific" { "outcome" "{\\"status\\"\ null,\\"matchedrule\\" {\\"id\\" 16,\\"name\\" \\"manipulated media user report\\"},\\"infringing content id\\" \\"a4df8c9b5eb7j432ghv4j23v523j5v20250820134321\\"}" }, "label" \[ "manipulated media" ], "location id" "", "content id" "a4df8c9b5eb79fwefwfwef054257f20250820134321", "reporter id" "random reporter id", "reportee id" "dwedwed", "created at" "2025 08 20 13 44 35", "updated at" "2025 08 20 13 45 14", "status" "case in queue", "apply action" "", "priority score" "0", "reason for request" "some reason for request", "note" "low queue", "moderation queue id" "20", "priority status" "medium", "content type" "txt", "custom attributes" \[ { "id" 4, "value" "transfer", "name" "contenttype", "custom attribute id" 23, "flagger id" 37, "created at" null, "updated at" null } ], "reportee" { "id" "eqeqweqweqwe", "name" "john doe", "phonenumber" "", "emailaddress" "some email address", "customerspecific" {}, "created at" "2025 08 14 12 10 14", "updated at" "2025 08 20 13 44 35" }, "reporter" { "id" "ddwedwed", "name" "john doe", "phonenumber" "", "emailaddress" "eqweqweqwe", "customerspecific" {}, "created at" "2025 08 20 11 57 24", "updated at" "2025 08 20 13 44 35" }, "content" { "id" "109", "title" "fred farr and will hutchins", "body" "eqweqwe", "url" "eqweqweqwe", "token" "", "customerspecific" { "contenttype" "transfer" }, "created at" "2025 08 20 13 44 34", "updated at" "2025 08 20 13 44 35", "rawtext" "eqweqwe", "language" "", "content id" "a4df8c9b5eb7964d53caff4d4054257f20250820134321", "type" { "id" "txt" } } }, "infringing content" { "id" 109, "title" "fred farr and will hutchins", "body" "there was a pandemonium of questioning, and only henry wheeler thought to rescue the fallen telescope and wipe it clean of mud curtis was past all coherence, and even isolated replies were almost too much for him ", "url" "https \\/\\/stag we gl\\/t owik5f1tqh", "token" null, "customerspecific" { "contenttype" "transfer" }, "created at" "2025 08 20t13 44 34 000000z", "updated at" "2025 08 20t13 44 35 000000z", "rawtext" "fred farr and will hutchins \u2013\u2013\u2013 there was a pandemonium of questioning, and only henry wheeler thought to rescue the fallen telescope and wipe it clean of mud curtis was past all coherence, and even isolated replies were almost too much for him ", "language" null, "content id" "a4df8c9b5eb7964d53caff4d4054257f20250820134321", "parent id" null, "type" { "id" "txt" } }, "sub contents" \[ { "id" 110, "title" "007 taxes png", "body" "n\\/a", "url" "some valid url", "token" null, "customerspecific" { "outcome" "{\\"status\\"\ null,\\"matchedrule\\" {\\"id\\" 16,\\"name\\" \\"manipulated media user report\\",\\"order\\" 1}}" }, "created at" "2025 08 20t13 44 35 000000z", "updated at" "2025 08 20t13 44 35 000000z", "rawtext" null, "language" null, "content id" "hl 1156733", "parent id" "a4df8c9b5eb7964d53caff4d4054257f20250820134321", "type" { "id" "img" } }, { "id" 111, "title" "003 video file 2 png", "body" "n\\/a", "url" "some valid url", "token" null, "customerspecific" { "outcome" "{\\"status\\"\ null,\\"matchedrule\\" {\\"id\\" 16,\\"name\\" \\"manipulated media user report\\",\\"order\\" 1}}" }, "created at" "2025 08 20t13 44 35 000000z", "updated at" "2025 08 20t13 44 35 000000z", "rawtext" null, "language" null, "content id" "hl 1156734", "parent id" "a4df8c9b5eb7964d53caff4d4054257f20250820134321", "type" { "id" "img" } }, { "id" 112, "title" "004 folder 41 png", "body" "n\\/a", "url" "some valid url", "token" null, "customerspecific" { "outcome" "{\\"status\\"\ null,\\"matchedrule\\" {\\"id\\" 16,\\"name\\" \\"manipulated media user report\\",\\"order\\" 1}}" }, "created at" "2025 08 20t13 44 35 000000z", "updated at" "2025 08 20t13 44 35 000000z", "rawtext" null, "language" null, "content id" "hl 1156735", "parent id" "a4df8c9b5eb7964d53caff4d4054257f20250820134321", "type" { "id" "img" } }, { "id" 113, "title" "005 outbox png", "body" "n\\/a", "url" "some valid url", "token" null, "customerspecific" { "outcome" "{\\"status\\"\ null,\\"matchedrule\\" {\\"id\\" 16,\\"name\\" \\"manipulated media user report\\",\\"order\\" 1}}" }, "created at" "2025 08 20t13 44 35 000000z", "updated at" "2025 08 20t13 44 35 000000z", "rawtext" null, "language" null, "content id" "hl 1156736", "parent id" "a4df8c9b5eb7964d53caff4d4054257f20250820134321", "type" { "id" "img" } }, { "id" 114, "title" "006 text png", "body" "n\\/a", "url" "some valid url", "token" null, "customerspecific" { "outcome" "{\\"status\\"\ null,\\"matchedrule\\" {\\"id\\" 16,\\"name\\" \\"manipulated media user report\\",\\"order\\" 1}}" }, "created at" "2025 08 20t13 44 35 000000z", "updated at" "2025 08 20t13 44 35 000000z", "rawtext" null, "language" null, "content id" "hl dwedwed", "parent id" "dwedwedwedwedwed", "type" { "id" "img" } } ], "policy" { "id" "85", "value" "politically manipulative synthetic content (fake speeches, fabricated events)", "created at" "", "updated at" "", "action id" "", "parent id" "84", "main policy name" "", "sub policy name" "", "tier id" "", "shortcut key" "" }, "action" { "id" "29", "name" "block content\\/collection", "type" "post action", "end point" "some valid endpoint", "key" "29", "key type" "", "shortcut key" "", "created at" "2025 08 19 17 31 21", "updated at" "2025 08 19 17 31 21", "popup ability" "1", "enable action on flag" "1", "enable action on appeal" "1", "headers" \[ { "id" 112, "authorised header key" "authorization", "authorised header value" "fwefwefwefwef", "action id" 29, "created at" "2025 08 19t17 37 22 000000z", "updated at" "2025 08 19t17 37 22 000000z" } ] } } using pipedream to simulate webhook responses flowing into your server and visualise transmitted data if you api endpoints are not ready yet or if you just want to see some data flowing from nima into an endpoint, pipedream is your friend step 1 create a free pipedream account step 2 create a webhook workflow in pipedream a set up a new workflow in pipedream, following the steps theyโve outlined in their https //pipedream com/docs/quickstart#create a new workflow , and add an http / webhook requests trigger b click save & continue, and pipedream generates a unique url for you youโll see an action required message underneath the url, letting you know that youโll need to send an http request to the url and generate a test event c go to nima, and add this url to a moderation action, for example d go to a pending flag, and click on a policy that will induce this action (for example, ) observe incoming request from nima and corresponding data