> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Add Network Tag

> Put one of your application's tags on the network. Returns the network detail, whose `tags` lists your application's tags on the network, with `201` when the tag was added and `200` when it was already on the network. A tag that belongs to another application, or does not exist, returns 404 `Tag not found.`. Requires a full-access API key, or `write:networks` for a console member.



Add Network Tag API Prompt
        Copy prompt to clipboard



      
      

\<pre>

\`Put one of my application's tags on a fraud network through the Management API.

Endpoint:
POST https://verification.didit.me/v3/organization/{organization_id}/application/{application_id}/networks/{network_uuid}/tags/add/

Authentication:
Use the x-api-key header with my Didit API key.
Networks endpoints need a full-access API key: a key with restricted access gets 403.

Path parameter:
\- network_uuid: the network's UUID, from list networks.

Request body:
\{"tag_uuid": "<uuid of one of my application's tags>"}

Example call:
curl -X POST "https://verification.didit.me/v3/organization/{organization_id}/application/{application_id}/networks/{network_uuid}/tags/add/" \
-H "x-api-key: YOUR_API_KEY" -H "Content-Type: application/json" \
-d '{"tag_uuid": "7c9e6679-7425-40de-944b-e07fc1f90ae7"}'

Behavior:
\- 201 when the tag was added, 200 when it was already on the network (left as it is). Safe to retry.
\- Both return the network detail (same shape as get network). Its tags array lists my application's tags on the network, oldest first: {uuid, name, color, source (didit|custom), added_by, added_at}.
\- added_by is null when an API key adds the tag, and the console member's email when a member does.
\- Each application sees and changes only its own tags. fraud_tags (the tags the members carry) is not affected.

Failure modes:
\- 400: tag_uuid missing or not a UUID. {"tag_uuid": ["This field is required."]}
\- 404: {"detail": "Network not found."} (the network does not exist or has no member visible to this application), or {"detail": "Tag not found."} (the tag does not exist or belongs to another application).
\- 401: missing or invalid x-api-key.
\- 403: the API key belongs to another application, or it has restricted access (Networks needs a full-access key). A console member token needs write:networks.
\- 403 with {"code": "networks_not_entitled"}: Networks is not enabled for the organization.

For the full integration shape, see /integration/integration-prompt.`

\</pre>



      
      

Paste into

Put one of your application's tags on a network, for example to mark it for follow-up or to record what your team concluded.
Pass the tag's UUID from your application's tags as `tag_uuid`.
A tag that belongs to another application returns `404`, the same as a tag that does not exist.The response is the full [network detail](/management-api/networks/get.md), with `201` when the tag was added and `200` when it was already on the network.
Calling it again with the same tag changes nothing, so you can retry safely.`tags` lists your application's tags on the network, oldest first.
`added_by` is `null` when an API key added the tag, and the console member's email when a member did.
The network's `fraud_tags`, the tags its members carry, are not affected.## Related- [Remove network tag](/management-api/networks/remove-tag.md)
- [Get network](/management-api/networks/get.md)
- [List networks](/management-api/networks/list.md)


## OpenAPI

````yaml POST /v3/organization/{organization_id}/application/{application_id}/networks/{network_uuid}/tags/add/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: Identity verification API. Authenticate with x-api-key header.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/organization/{organization_id}/application/{application_id}/networks/{network_uuid}/tags/add/:
    post:
      tags:
        - Networks
      summary: Add a tag to a network
      description: >-
        Put one of your application's tags on the network. Returns the network
        detail, whose `tags` lists your application's tags on the network, with
        `201` when the tag was added and `200` when it was already on the
        network. A tag that belongs to another application, or does not exist,
        returns 404 `Tag not found.`. Requires a full-access API key, or
        `write:networks` for a console member.
      operationId: add_network_tag
      parameters:
        - name: organization_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: Organization UUID.
        - name: application_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: Application UUID.
        - name: network_uuid
          in: path
          required: true
          schema:
            type: string
            format: uuid
            example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
          description: Network UUID.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NetworkTagRequest'
            example:
              tag_uuid: 7c9e6679-7425-40de-944b-e07fc1f90ae7
      responses:
        '200':
          description: >-
            The tag was already on the network and is left as it is. Returns the
            network detail.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkDetailResponse'
              example:
                uuid: 3fa85f64-5717-4562-b3fc-2c963f66afa6
                network_id: N-0042
                name: null
                status: in_review
                risk:
                  score: 82
                  band: high
                  bar: 0.82
                pattern_types:
                  - exact_same_device
                  - same_email
                signal_types:
                  - device
                  - email
                member_counts:
                  total: 3
                  users: 3
                  businesses: 0
                  transaction_parties: 0
                member_status:
                  approved: 1
                  declined: 1
                  in_review: 0
                  not_completed: 1
                signal_coverage:
                  device:
                    signals: 1
                    subjects: 3
                    coverage: 1
                  email:
                    signals: 1
                    subjects: 2
                    coverage: 0.6667
                first_activity_at: '2026-10-01T09:12:44Z'
                last_activity_at: '2026-10-12T16:03:10Z'
                stats:
                  members:
                    total: 3
                    users: 3
                    businesses: 0
                    transaction_parties: 0
                  member_status:
                    approved: 1
                    declined: 1
                    in_review: 0
                    not_completed: 1
                  signals:
                    total: 2
                    by_type:
                      device:
                        signals: 1
                        subjects: 3
                        coverage: 1
                      email:
                        signals: 1
                        subjects: 2
                        coverage: 0.6667
                fraud_tags: []
                risk_signals:
                  residential_proxy_reuse:
                    detected: false
                    signal_count: 0
                    max_subject_count: 0
                  email_intelligence:
                    enriched_signal_count: 1
                    high_risk_count: 0
                    social_profile_count: 0
                  phone_intelligence:
                    enriched_signal_count: 0
                    high_risk_count: 0
                reviewed_at: '2026-10-12T16:30:00Z'
                reviewed_by: reviewer@example.com
                review_reason: Shared device across three new accounts.
                notes_count: 0
                sharing_mode: global
                cross_org_available: true
                cross_org_unavailable_reason: null
                tags:
                  - uuid: 7c9e6679-7425-40de-944b-e07fc1f90ae7
                    name: SUSPICIOUS
                    color: '#6366F1'
                    source: custom
                    added_by: null
                    added_at: '2026-10-13T08:15:00Z'
                outcomes:
                  approved: 1
                  declined: 1
                  in_review: 0
                  total: 3
                patterns:
                  - type: background
                    score: 0.8125
                    members: 3
                    reason: null
                    computed_at: '2026-10-13T08:00:00Z'
        '201':
          description: The tag was added. Returns the network detail.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkDetailResponse'
              example:
                uuid: 3fa85f64-5717-4562-b3fc-2c963f66afa6
                network_id: N-0042
                name: null
                status: in_review
                risk:
                  score: 82
                  band: high
                  bar: 0.82
                pattern_types:
                  - exact_same_device
                  - same_email
                signal_types:
                  - device
                  - email
                member_counts:
                  total: 3
                  users: 3
                  businesses: 0
                  transaction_parties: 0
                member_status:
                  approved: 1
                  declined: 1
                  in_review: 0
                  not_completed: 1
                signal_coverage:
                  device:
                    signals: 1
                    subjects: 3
                    coverage: 1
                  email:
                    signals: 1
                    subjects: 2
                    coverage: 0.6667
                first_activity_at: '2026-10-01T09:12:44Z'
                last_activity_at: '2026-10-12T16:03:10Z'
                stats:
                  members:
                    total: 3
                    users: 3
                    businesses: 0
                    transaction_parties: 0
                  member_status:
                    approved: 1
                    declined: 1
                    in_review: 0
                    not_completed: 1
                  signals:
                    total: 2
                    by_type:
                      device:
                        signals: 1
                        subjects: 3
                        coverage: 1
                      email:
                        signals: 1
                        subjects: 2
                        coverage: 0.6667
                fraud_tags: []
                risk_signals:
                  residential_proxy_reuse:
                    detected: false
                    signal_count: 0
                    max_subject_count: 0
                  email_intelligence:
                    enriched_signal_count: 1
                    high_risk_count: 0
                    social_profile_count: 0
                  phone_intelligence:
                    enriched_signal_count: 0
                    high_risk_count: 0
                reviewed_at: '2026-10-12T16:30:00Z'
                reviewed_by: reviewer@example.com
                review_reason: Shared device across three new accounts.
                notes_count: 0
                sharing_mode: global
                cross_org_available: true
                cross_org_unavailable_reason: null
                tags:
                  - uuid: 7c9e6679-7425-40de-944b-e07fc1f90ae7
                    name: SUSPICIOUS
                    color: '#6366F1'
                    source: custom
                    added_by: null
                    added_at: '2026-10-13T08:15:00Z'
                outcomes:
                  approved: 1
                  declined: 1
                  in_review: 0
                  total: 3
                patterns:
                  - type: background
                    score: 0.8125
                    members: 3
                    reason: null
                    computed_at: '2026-10-13T08:00:00Z'
        '400':
          description: 'Invalid body: `tag_uuid` is missing or is not a UUID.'
          content:
            application/json:
              schema:
                type: object
                properties:
                  tag_uuid:
                    type: array
                    items:
                      type: string
              examples:
                Missing tag_uuid:
                  summary: Missing tag_uuid
                  value:
                    tag_uuid:
                      - This field is required.
                Invalid tag_uuid:
                  summary: Invalid tag_uuid
                  value:
                    tag_uuid:
                      - Must be a valid UUID.
        '401':
          description: Missing or invalid credentials.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                  code:
                    type: string
                    description: >-
                      Present on coded errors, for example
                      `networks_not_entitled`.
              examples:
                Missing or invalid credentials:
                  summary: Missing or invalid credentials
                  value:
                    detail: >-
                      Authentication credentials were not provided or are
                      invalid.
        '403':
          description: >-
            The API key belongs to another application, or it is a key with
            restricted access: Networks endpoints need a full-access key. A
            console member token needs `write:networks`. Also returned with
            `code: networks_not_entitled` when Networks is not enabled for the
            organization.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                  code:
                    type: string
                    description: >-
                      Present on coded errors, for example
                      `networks_not_entitled`.
              examples:
                Networks not enabled:
                  summary: Networks not enabled
                  value:
                    detail: >-
                      Networks is disabled for this organization. Contact Didit
                      support if you believe this is an error.
                    code: networks_not_entitled
                Restricted API key:
                  summary: Restricted API key
                  value:
                    detail: This API key has no access to this endpoint.
                No permission:
                  summary: No permission
                  value:
                    detail: You do not have permission to perform this action.
        '404':
          description: Not found.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                  code:
                    type: string
                    description: >-
                      Present on coded errors, for example
                      `networks_not_entitled`.
              examples:
                Network not found:
                  summary: Network not found
                  value:
                    detail: Network not found.
                Tag not found:
                  summary: Tag not found
                  value:
                    detail: Tag not found.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl -X POST
            'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/networks/3fa85f64-5717-4562-b3fc-2c963f66afa6/tags/add/'
            \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{"tag_uuid": "7c9e6679-7425-40de-944b-e07fc1f90ae7"}'
components:
  schemas:
    NetworkTagRequest:
      type: object
      required:
        - tag_uuid
      properties:
        tag_uuid:
          type: string
          format: uuid
          description: UUID of one of your application's tags.
      example:
        tag_uuid: 7c9e6679-7425-40de-944b-e07fc1f90ae7
    NetworkDetailResponse:
      description: >-
        The network detail, plus the organization's sharing mode, whether
        cross-organization signals apply to it, your application's tags on the
        network, member outcomes and pattern scores.
      allOf:
        - $ref: '#/components/schemas/NetworkDetail'
        - type: object
          properties:
            sharing_mode:
              type: string
              enum:
                - 'off'
                - private
                - global
              description: >-
                The organization's cross-organization sharing mode. Only
                `global` compares networks across organizations; `private` and
                `off` keep them to the organization's own history.
              example: global
            cross_org_available:
              type: boolean
              description: >-
                Whether cross-organization signals apply to this organization.
                They need both the Identity Enterprise plan and the `global`
                sharing mode.
              example: true
            cross_org_unavailable_reason:
              type: string
              enum:
                - plan
                - sharing_mode
              nullable: true
              description: >-
                Why cross-organization signals do not apply, checked in this
                order. `plan`: the organization's Identity plan does not include
                the cross-organization fraud network (it needs Identity
                Enterprise), whatever the sharing mode. `sharing_mode`: the plan
                includes it, but the sharing mode is `private` or `off`. Null
                when `cross_org_available` is `true`.
              example: null
            tags:
              type: array
              items:
                $ref: '#/components/schemas/NetworkTag'
              description: >-
                Your application's tags on the network, oldest first. Each
                application sees only its own tags. `fraud_tags` is separate and
                unchanged: the tags the network's members carry.
            outcomes:
              $ref: '#/components/schemas/NetworkOutcomes'
            patterns:
              type: array
              items:
                $ref: '#/components/schemas/NetworkPatternScore'
              description: >-
                Pattern scores over the whole network. Today one item,
                `background`.
    NetworkDetail:
      allOf:
        - $ref: '#/components/schemas/NetworkListItem'
        - type: object
          properties:
            stats:
              type: object
              description: Aggregate stats for the network (e.g. member totals).
            fraud_tags:
              type: array
              items:
                type: object
              description: Fraud-pattern tags surfaced on the network.
            risk_signals:
              type: object
              description: >-
                Risk-signal summaries: residential_proxy_reuse,
                email_intelligence, phone_intelligence.
            reviewed_at:
              type: string
              format: date-time
              nullable: true
            reviewed_by:
              type: string
              nullable: true
            review_reason:
              type: string
              nullable: true
      properties:
        notes_count:
          type: integer
          minimum: 0
          readOnly: true
          description: Number of private analyst notes in this investigation.
    NetworkTag:
      type: object
      description: One of your application's tags on the network.
      properties:
        uuid:
          type: string
          format: uuid
          description: The tag's UUID, the same value you pass as `tag_uuid`.
        name:
          type: string
        color:
          type: string
          description: Hex color, for example `#6366F1`.
        source:
          type: string
          enum:
            - didit
            - custom
          description: >-
            `didit` for a Didit preset tag, `custom` for a tag your team
            created.
        added_by:
          type: string
          nullable: true
          description: >-
            Email of the console member who added the tag. Null when an API key
            added it.
        added_at:
          type: string
          format: date-time
    NetworkOutcomes:
      type: object
      description: >-
        Where the network's people and businesses stand. Each member you may see
        counts once, by the status of their most recent verification that
        reached a decision. Transaction parties are not counted.
      properties:
        approved:
          type: integer
          description: Members whose most recent decided verification was approved.
        declined:
          type: integer
          description: Members whose most recent decided verification was declined.
        in_review:
          type: integer
          description: Members whose most recent decided verification is in review.
        total:
          type: integer
          description: >-
            Members with at least one verification, decided or not. A member
            whose verifications are all undecided (not started, in progress,
            expired or abandoned) counts here and in no other key.
    NetworkPatternScore:
      type: object
      description: >-
        How alike one kind of the members' data is across the whole network. A
        pattern is not a signal: no shared value links the members.
      properties:
        type:
          type: string
          enum:
            - background
          description: >-
            `background`: the mean similarity of every pair of member selfie
            backgrounds, with the person masked out. It reads the newest selfie
            of each person, at most the 50 newest, and leaves out age assurance
            sessions. It covers the whole network, not only the members of your
            applications.
        score:
          type: number
          nullable: true
          minimum: 0
          maximum: 1
          description: From 0 to 1, rounded to 4 decimals. Null when `reason` is set.
        members:
          type: integer
          nullable: true
          description: >-
            How many members' selfies the score compared. A selfie that cannot
            be read, or shows too little background, is not compared. Null while
            `computing`; 0 or 1 with `not_enough_selfies`.
        reason:
          type: string
          enum:
            - computing
            - not_enough_selfies
          nullable: true
          description: >-
            Why there is no score. `computing`: the score for the current
            members is being computed; read the network again later.
            `not_enough_selfies`: fewer than two members have a usable selfie.
            Null when there is a score.
        computed_at:
          type: string
          format: date-time
          nullable: true
          description: When the score was computed. Null while `computing`.
    NetworkListItem:
      type: object
      properties:
        uuid:
          type: string
          format: uuid
        network_id:
          type: string
          description: Human-readable per-organization sequential id, e.g. N-0001.
        name:
          type: string
          nullable: true
        status:
          type: string
          enum:
            - active
            - in_review
            - resolved
            - dismissed
          description: >-
            Network lifecycle status. Distinct from the per-applicant
            outcome_status inside a network
            (approved/in_review/declined/not_completed).
        risk:
          $ref: '#/components/schemas/NetworkRiskDisplay'
        pattern_types:
          type: array
          items:
            type: string
            enum:
              - exact_same_device
              - similar_device
              - same_ip_address
              - same_address
              - similar_selfie_backgrounds
              - similar_poa_documents
              - same_document_number
              - same_phone_number
              - same_email
          description: The clustering patterns detected in this network.
        signal_types:
          type: array
          items:
            type: string
            enum:
              - ip_address
              - device
              - face
              - document_number
              - phone
              - email
              - address
          description: The distinct signal types present in this network.
        member_counts:
          type: object
          description: Counts of members by category (e.g. total, per outcome_status).
        member_status:
          type: object
          description: Breakdown of members by outcome_status.
        signal_coverage:
          type: object
          description: Per signal_type coverage of this network's members.
        first_activity_at:
          type: string
          format: date-time
          nullable: true
        last_activity_at:
          type: string
          format: date-time
          nullable: true
    NetworkRiskDisplay:
      type: object
      properties:
        score:
          type: integer
          description: Risk score, 0-100.
        band:
          type: string
          enum:
            - low
            - medium
            - high
          description: Band the score renders as. high >= 70, medium >= 40, otherwise low.
        bar:
          type: number
          format: float
          description: Normalized 0-1 value for rendering a risk bar.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Your application's API key, from Developers -> API keys in the Business
        Console. The primary key has full access. A named key can be scoped:
        none, read or write per resource, limited to some workflows or to
        approved sessions, to a list of IP addresses, and to an expiry date. 401
        means the key is missing, wrong, revoked or expired; 403 means the key
        has no access to this resource or action, or the request came from an
        address outside its IP list; 404 on a session route means the session is
        outside the key's workflows or statuses. A key without media access
        receives image, video and PDF URLs as null, and a key without sessions
        write receives session links and tokens as null. See
        https://docs.didit.me/console/api-keys.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.