Dust Identity Tags API

Manage identifiers and their metadata

Operations 7

POST /api/v1/tags/extract Extract a tag identifier. #
POST /api/v1/tags/bind Bind a tag identifier. #
POST /api/v1/tags/verify Verify one or more tags #
POST /api/v1/tags/identify Identify a thread #
POST /api/v1/tags/text Set the text on a tag. #
POST /api/v1/tags/update Update identifier lifecycle state. #
POST /api/v1/tags/unbind Unbind a tag from a thread. #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/dust-identity-tags-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

dust-identity-tags-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: DUST Tags API
  description: DUST Platform API
  version: 2026.7.4
servers:
- url: https://apid.dustid.io
  description: DUST API for trusted provenance.
security:
- Bearer: []
tags:
- name: Tags
  description: Manage identifiers and their metadata
paths:
  /api/v1/tags/extract:
    post:
      operationId: tags.extract
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                data:
                  anyOf:
                  - type: string
                    description: Image file or base64-encoded image data URL of the DUST tag.
                    pattern: ^data:image\/(png|jpeg);base64,[A-Za-z0-9+/]+={0,2}$
                  - description: Image file or base64-encoded image data URL of the DUST tag.
                  description: Image file or base64-encoded image data URL of the DUST tag.
                options:
                  anyOf:
                  - type: string
                    description: In multipart submissions, provide a JSON string of [TagExtractRequestMetadata](#model/TagExtractRequestMetadata); otherwise, a direct object is also accepted.
                  - $ref: '#/components/schemas/TagExtractRequestMetadata'
                  description: In multipart submissions, provide a JSON string of [TagExtractRequestMetadata](#model/TagExtractRequestMetadata); otherwise, a direct object is also accepted.
              required:
              - data
      summary: Extract a tag identifier.
      description: Extract a tag identifier from an uploaded resource. This creates the tag and its identifier scan in the system, but does not bind it to a thread
      tags:
      - Tags
      responses:
        '200':
          description: The extracted identifier ID, and annotated image.
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  qualityScore:
                    type: number
                  annotatedImage:
                    type: string
                  forensics:
                    anyOf:
                    - type: object
                      additionalProperties: {}
                    - type: 'null'
                required:
                - id
                - qualityScore
        '400':
          description: Invalid Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    const: INVALID_REQUEST
                  message:
                    type: string
                  status:
                    const: 400
                  detail:
                    type: object
                    description: Extra context information specific to this error
                required:
                - code
                - message
                - status
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    const: UNAUTHORIZED
                  message:
                    type: string
                  status:
                    const: 401
                  detail:
                    type: object
                    description: Extra context information specific to this error
                required:
                - code
                - message
                - status
        '500':
          description: Unknown error occurred
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    const: UNKNOWN_ERROR
                  message:
                    type: string
                  status:
                    const: 500
                  detail:
                    type: object
                    description: Extra context information specific to this error
                required:
                - code
                - message
                - status
  /api/v1/tags/bind:
    post:
      operationId: tags.bind
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              anyOf:
              - $ref: '#/components/schemas/BindTextTag'
              - $ref: '#/components/schemas/BindDustImage'
              - $ref: '#/components/schemas/BindDustFingerprint'
      summary: Bind a tag identifier.
      description: Bind a tag identifier to an existing thread.
      tags:
      - Tags
      responses:
        '200':
          description: The extracted identifier ID, and annotated image.
          content:
            application/json:
              schema:
                type: object
                properties:
                  tag:
                    type: object
                    properties:
                      archivedAt:
                        anyOf:
                        - type: string
                        - type: 'null'
                      createdAt:
                        type: string
                      description:
                        anyOf:
                        - type: string
                        - type: 'null'
                      isPrivate:
                        type: boolean
                      metadata:
                        anyOf:
                        - type: number
                        - type: object
                        - type: string
                        - type: boolean
                        - type: 'null'
                      name:
                        anyOf:
                        - type: string
                        - type: 'null'
                      ownerId:
                        type: string
                        description: a RFC-4122-compliant UUID
                        pattern: ^[\da-f]{8}(?:-[\da-f]{4}){3}-[\da-f]{12}$
                      tagId:
                        type: string
                        description: a RFC-4122-compliant UUID
                        pattern: ^[\da-f]{8}(?:-[\da-f]{4}){3}-[\da-f]{12}$
                      tagType:
                        type: string
                      threadId:
                        anyOf:
                        - type: string
                          description: a RFC-4122-compliant UUID
                          pattern: ^[\da-f]{8}(?:-[\da-f]{4}){3}-[\da-f]{12}$
                        - type: 'null'
                      transferId:
                        anyOf:
                        - type: string
                          description: a RFC-4122-compliant UUID
                          pattern: ^[\da-f]{8}(?:-[\da-f]{4}){3}-[\da-f]{12}$
                        - type: 'null'
                      transferredAt:
                        anyOf:
                        - type: string
                        - type: 'null'
                      updatedAt:
                        type: string
                      value:
                        type: string
                      indexing:
                        anyOf:
                        - const: default
                        - const: none
                        - type: 'null'
                      isBound:
                        anyOf:
                        - type: boolean
                        - type: 'null'
                    required:
                    - archivedAt
                    - createdAt
                    - description
                    - isPrivate
                    - metadata
                    - name
                    - ownerId
                    - tagId
                    - tagType
                    - threadId
                    - transferId
                    - transferredAt
                    - updatedAt
                    - value
                  annotatedImageUrl:
                    type: string
                required:
                - tag
        '400':
          description: Invalid Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    const: INVALID_REQUEST
                  message:
                    type: string
                  status:
                    const: 400
                  detail:
                    type: object
                    description: Extra context information specific to this error
                required:
                - code
                - message
                - status
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    const: UNAUTHORIZED
                  message:
                    type: string
                  status:
                    const: 401
                  detail:
                    type: object
                    description: Extra context information specific to this error
                required:
                - code
                - message
                - status
        '500':
          description: Unknown error occurred
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    const: UNKNOWN_ERROR
                  message:
                    type: string
                  status:
                    const: 500
                  detail:
                    type: object
                    description: Extra context information specific to this error
                required:
                - code
                - message
                - status
  /api/v1/tags/verify:
    post:
      operationId: tags.verify
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              anyOf:
              - type: object
                description: Payload for verifying a tag against a specific thread and tag ID
                properties:
                  data:
                    type: string
                  tagType:
                    enum:
                    - BAR_CODE
                    - DATA_MATRIX
                    - NFC
                    - QR
                  tags:
                    anyOf:
                    - type: string
                      description: In multipart submissions, provide a JSON string array of tags to verify against; otherwise, a direct array is also accepted. If more than one tag is provided, verification will succeed if any single tag matches the thread.
                    - $ref: '#/components/schemas/BulkVerifyTagList'
                    description: In multipart submissions, provide a JSON string array of tags to verify against; otherwise, a direct array is also accepted. If more than one tag is provided, verification will succeed if any single tag matches the thread.
                  threadId:
                    anyOf:
                    - type: string
                      description: a UUID
                      format: uuid
                      pattern: '[\da-f]{8}-[\da-f]{4}-[1-8][\da-f]{3}-[89ab][\da-f]{3}-[\da-f]{12}'
                    - const: 00000000-0000-0000-0000-000000000000
                      description: a UUID
                      format: uuid
                    - const: ffffffff-ffff-ffff-ffff-ffffffffffff
                      description: a UUID
                      format: uuid
                    description: a UUID
                    format: uuid
                  options:
                    anyOf:
                    - type: string
                      description: In multipart submissions, provide a JSON string of [TagOptions](#model/TagOptions); otherwise, a direct object is also accepted.
                    - $ref: '#/components/schemas/TagOptions'
                required:
                - data
                - tagType
                - tags
                - threadId
              - type: object
                description: Payload for verifying a tag against a specific thread and tag ID
                properties:
                  data:
                    anyOf:
                    - type: string
                      description: Image file or base64-encoded image data URL of the tag to be extracted and bound.
                      pattern: ^data:image\/(png|jpeg);base64,[A-Za-z0-9+/]+={0,2}$
                    - description: Image file or base64-encoded image data URL of the tag to be extracted and bound.
                    description: Image file or base64-encoded image data URL of the tag to be extracted and bound.
                  tagType:
                    const: DUST
                  tags:
                    anyOf:
                    - type: string
                      description: In multipart submissions, provide a JSON string array of tags to verify against; otherwise, a direct array is also accepted. If more than one tag is provided, verification will succeed if any single tag matches the thread.
                    - $ref: '#/components/schemas/BulkVerifyTagList'
                    description: In multipart submissions, provide a JSON string array of tags to verify against; otherwise, a direct array is also accepted. If more than one tag is provided, verification will succeed if any single tag matches the thread.
                  threadId:
                    anyOf:
                    - type: string
                      description: a UUID
                      format: uuid
                      pattern: '[\da-f]{8}-[\da-f]{4}-[1-8][\da-f]{3}-[89ab][\da-f]{3}-[\da-f]{12}'
                    - const: 00000000-0000-0000-0000-000000000000
                      description: a UUID
                      format: uuid
                    - const: ffffffff-ffff-ffff-ffff-ffffffffffff
                      description: a UUID
                      format: uuid
                    description: a UUID
                    format: uuid
                  options:
                    anyOf:
                    - type: string
                      description: In multipart submissions, provide a JSON string of [DustTagOptions](#model/DustTagOptions); otherwise, a direct object is also accepted.
                    - $ref: '#/components/schemas/DustTagOptions'
                required:
                - data
                - tagType
                - tags
                - threadId
              description: Payload for verifying a tag against a specific thread and tag ID
      summary: Verify one or more tags
      tags:
      - Tags
      responses:
        '200':
          description: Verification result.
          content:
            application/json:
              schema:
                anyOf:
                - type: object
                  properties:
                    attemptedCount:
                      type: number
                    failedCount:
                      type: number
                    success:
                      type: boolean
                    error:
                      type: string
                    verifiedTag:
                      type: object
                      properties:
                        archivedAt:
                          anyOf:
                          - type: string
                          - type: 'null'
                        createdAt:
                          type: string
                        description:
                          anyOf:
                          - type: string
                          - type: 'null'
                        isPrivate:
                          type: boolean
                        metadata:
                          anyOf:
                          - type: number
                          - type: object
                          - type: string
                          - type: boolean
                          - type: 'null'
                        name:
                          anyOf:
                          - type: string
                          - type: 'null'
                        ownerId:
                          type: string
                          description: a RFC-4122-compliant UUID
                          pattern: ^[\da-f]{8}(?:-[\da-f]{4}){3}-[\da-f]{12}$
                        tagId:
                          type: string
                          description: a RFC-4122-compliant UUID
                          pattern: ^[\da-f]{8}(?:-[\da-f]{4}){3}-[\da-f]{12}$
                        tagType:
                          type: string
                        threadId:
                          anyOf:
                          - type: string
                            description: a RFC-4122-compliant UUID
                            pattern: ^[\da-f]{8}(?:-[\da-f]{4}){3}-[\da-f]{12}$
                          - type: 'null'
                        transferId:
                          anyOf:
                          - type: string
                            description: a RFC-4122-compliant UUID
                            pattern: ^[\da-f]{8}(?:-[\da-f]{4}){3}-[\da-f]{12}$
                          - type: 'null'
                        transferredAt:
                          anyOf:
                          - type: string
                          - type: 'null'
                        updatedAt:
                          type: string
                        value:
                          type: string
                        indexing:
                          anyOf:
                          - const: default
                          - const: none
                          - type: 'null'
                        isBound:
                          anyOf:
                          - type: boolean
                          - type: 'null'
                      required:
                      - archivedAt
                      - createdAt
                      - description
                      - isPrivate
                      - metadata
                      - name
                      - ownerId
                      - tagId
                      - tagType
                      - threadId
                      - transferId
                      - transferredAt
                      - updatedAt
                      - value
                  required:
                  - attemptedCount
                  - failedCount
                  - success
                - type: object
                  properties:
                    tag:
                      type: object
                      properties:
                        archivedAt:
                          anyOf:
                          - type: string
                          - type: 'null'
                        createdAt:
                          type: string
                        description:
                          anyOf:
                          - type: string
                          - type: 'null'
                        isPrivate:
                          type: boolean
                        metadata:
                          anyOf:
                          - type: number
                          - type: object
                          - type: string
                          - type: boolean
                          - type: 'null'
                        name:
                          anyOf:
                          - type: string
                          - type: 'null'
                        ownerId:
                          type: string
                          description: a RFC-4122-compliant UUID
                          pattern: ^[\da-f]{8}(?:-[\da-f]{4}){3}-[\da-f]{12}$
                        tagId:
                          type: string
                          description: a RFC-4122-compliant UUID
                          pattern: ^[\da-f]{8}(?:-[\da-f]{4}){3}-[\da-f]{12}$
                        tagType:
                          type: string
                        threadId:
                          anyOf:
                          - type: string
                            description: a RFC-4122-compliant UUID
                            pattern: ^[\da-f]{8}(?:-[\da-f]{4}){3}-[\da-f]{12}$
                          - type: 'null'
                        transferId:
                          anyOf:
                          - type: string
                            description: a RFC-4122-compliant UUID
                            pattern: ^[\da-f]{8}(?:-[\da-f]{4}){3}-[\da-f]{12}$
                          - type: 'null'
                        transferredAt:
                          anyOf:
                          - type: string
                          - type: 'null'
                        updatedAt:
                          type: string
                        value:
                          type: string
                        indexing:
                          anyOf:
                          - const: default
                          - const: none
                          - type: 'null'
                        isBound:
                          anyOf:
                          - type: boolean
                          - type: 'null'
                      required:
                      - archivedAt
                      - createdAt
                      - description
                      - isPrivate
                      - metadata
                      - name
                      - ownerId
                      - tagId
                      - tagType
                      - threadId
                      - transferId
                      - transferredAt
                      - updatedAt
                      - value
                  required:
                  - tag
        '400':
          description: Invalid Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    const: INVALID_REQUEST
                  message:
                    type: string
                  status:
                    const: 400
                  detail:
                    type: object
                    description: Extra context information specific to this error
                required:
                - code
                - message
                - status
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    const: UNAUTHORIZED
                  message:
                    type: string
                  status:
                    const: 401
                  detail:
                    type: object
                    description: Extra context information specific to this error
                required:
                - code
                - message
                - status
        '500':
          description: Unknown error occurred
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    const: UNKNOWN_ERROR
                  message:
                    type: string
                  status:
                    const: 500
                  detail:
                    type: object
                    description: Extra context information specific to this error
                required:
                - code
                - message
                - status
  /api/v1/tags/identify:
    post:
      operationId: tags.identify
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              anyOf:
              - $ref: '#/components/schemas/IdentifyTextTagPayload'
              - $ref: '#/components/schemas/IdentifyDustPayload'
              - $ref: '#/components/schemas/IdentifyTagIdOnlyPayload'
      summary: Identify a thread
      description: Identify a thread given an identifier scan
      tags:
      - Tags
      responses:
        '200':
          description: The uploaded resource
          content:
            application/json:
              schema:
                anyOf:
                - type: object
                  properties:
                    identified:
                      type: object
                      properties:
                        tag:
                          type: object
                          properties:
                            archivedAt:
                              anyOf:
                              - type: string
                              - type: 'null'
                            createdAt:
                              type: string
                            description:
                              anyOf:
                              - type: string
                              - type: 'null'
                            isPrivate:
                              type: boolean
                            metadata:
                              anyOf:
                              - type: number
                              - type: object
                              - type: string
                              - type: boolean
                              - type: 'null'
                            name:
                              anyOf:
                              - type: string
                              - type: 'null'
                            ownerId:
                              type: string
                              description: a RFC-4122-compliant UUID
                              pattern: ^[\da-f]{8}(?:-[\da-f]{4}){3}-[\da-f]{12}$
                            tagId:
                              type: string
                              description: a RFC-4122-compliant UUID
                              pattern: ^[\da-f]{8}(?:-[\da-f]{4}){3}-[\da-f]{12}$
                            tagType:
                              type: string
                            threadId:
                              anyOf:
                              - type: string
                                description: a RFC-4122-compliant UUID
                                pattern: ^[\da-f]{8}(?:-[\da-f]{4}){3}-[\da-f]{12}$
                              - type: 'null'
                            transferId:
                              anyOf:
                              - type: string
                                description: a RFC-4122-compliant UUID
                                pattern: ^[\da-f]{8}(?:-[\da-f]{4}){3}-[\da-f]{12}$
                              - type: 'null'
                            transferredAt:
                              anyOf:
                              - type: string
                              - type: 'null'
                            updatedAt:
                              type: string
                            value:
                              type: string
                            indexing:
                              anyOf:
                              - const: default
                              - const: none
                              - type: 'null'
                            isBound:
                              anyOf:
                              - type: boolean
                              - type: 'null'
                          required:
                          - archivedAt
                          - createdAt
                          - description
                          - isPrivate
                          - metadata
                          - name
                          - ownerId
                          - tagId
                          - tagType
                          - threadId
                          - transferId
                          - transferredAt
                          - updatedAt
                          - value
                        thread:
                          type: object
                          properties:
                            archivedAt:
                              anyOf:
                              - type: string
                              - type: 'null'
                            createdAt:
                              type: string
                            createdById:
                              type: string
                              description: a RFC-4122-compliant UUID
                              pattern: ^[\da-f]{8}(?:-[\da-f]{4}){3}-[\da-f]{12}$
                            description:
                              anyOf:
                              - type: string
                              - type: 'null'
                            kind:
                              anyOf:
                              - type: string
                              - type: 'null'
                            labels:
                              anyOf:
                              - type: number
                              - type: object
                              - type: string
                              - type: boolean
                              - type: 'null'
                            lifecycleStatus:
                              type: string
                            name:
                              type: string
                            ownerId:
                              type: string
                              description: a RFC-4122-compliant UUID
                              pattern: ^[\da-f]{8}(?:-[\da-f]{4}){3}-[\da-f]{12}$
                            processingLockedAt:
                              anyOf:
                              - type: string
                              - type: 'null'
                            processingOperationId:
                              anyOf:
                              - type: string
                                description: a RFC-4122-compliant UUID
                                pattern: ^[\da-f]{8}(?:-[\da-f]{4}){3}-[\da-f]{12}$
                              - type: 'null'
                            templateId:
                              anyOf:
                              - type: string
                                description: a RFC-4122-compliant UUID
                                pattern: ^[\da-f]{8}(?:-[\da-f]{4}){3}-[\da-f]{12}$
                              - type: 'null'
                            threadId:
                              type: string
                              description: a RFC-4122-compliant UUID
                              pattern: ^[\da-f]{8}(?:-[\da-f]{4}){3}-[\da-f]{12}$
                            thumbnail: {}
                            thumbnailId:
                              anyOf:
                              - type: string
                                description: a RFC-4122-compliant UUID
                                pattern: ^[\da-f]{8}(?:-[\da-f]{4}){3}-[\da-f]{12}$
                              - type: 'null'
                            transferId:
                              anyOf:
                              - type: string
                                description: a RFC-4122-compliant UUID
                                pattern: ^[\da-f]{8}(?:-[\da-f]{4}){3}-[\da-f]{12}$
                              - type: 'null'
                            transferredAt:
                              anyOf:
                              - type: string
                              - type: 'null'
                            updatedAt:
                              type: string
                          required:
                          - archivedAt
                          - createdAt
                          - createdById
                          - description
                          - kind
                          - labels
                          - lifecycleStatus
                          - name
                          - ownerId
                          - processingLockedAt
                          - processingOperationId
                          - templateId
                          - threadId
                          - thumbnail
                          - thumbnailId
                          - transferId
                          - transferredAt
                          - updatedAt
                      required:
                      - tag
                      - thread
                    type:
                      const: identified
                  required:
 

# --- truncated at 32 KB (106 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/dust-identity/refs/heads/main/openapi/dust-identity-tags-api-openapi.yml