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

# Get watermark result

> Retrieve the status and result of a watermarking submission created with `POST /api/v2/watermark`.

While `status` is `new` or `inprogress`, `result` is `null`. Once `status` is `done`, `result` contains the applied policies and, when at least one watermark was applied, a `download_url` for the watermarked asset (valid until `expires_at`).

Poll this endpoint with the `id` returned by
[Apply watermark](./apply-watermark) to follow the progress of a watermarking
submission.

| `status`             | Meaning                                      | `result`                                                                                 |
| -------------------- | -------------------------------------------- | ---------------------------------------------------------------------------------------- |
| `new` / `inprogress` | The submission is queued or being processed. | `null`                                                                                   |
| `done`               | Processing finished.                         | Populated with `applied_watermarks` and, if any watermark was applied, a `download_url`. |
| `errored`            | Processing failed.                           | `null` — see `watermarks_errors`.                                                        |

When `status` is `done`, `result.download_url` is a pre-signed URL that stays
valid until `result.expires_at`. Some policies may fail while others succeed:
check `result.errors` and `result.applied_watermarks` to see exactly what was
applied.

## Example request

```bash theme={null}
curl https://api.identifai.net/api/v2/watermark/674a3c9b8e2d4f12b7c9a8d3 \
  -H "X-Api-Key: $IDENTIFAI_API_KEY"
```

```json theme={null}
{
  "id": "674a3c9b8e2d4f12b7c9a8d3",
  "status": "done",
  "result": {
    "errors": [],
    "applied_watermarks": ["european-watermarks", "aigc-metadata"],
    "download_url": "https://s3.identifai.example.com/bucket/path/to/watermarked-asset.png?X-Amz-Signature=12345",
    "expires_at": "2026-08-28T15:30:00Z"
  }
}
```


## OpenAPI

````yaml get /api/v2/watermark/{id}
openapi: 3.0.0
info:
  title: IdentifAI API v2
  version: 2.0.0
  description: >-
    API v2 for batch tampering detection on ticket images. This API allows you
    to submit multiple tickets for analysis and retrieve results for tampering
    detection.
servers:
  - url: https://api.identifai.net
security: []
tags:
  - name: Tampering Detection
    description: Batch tampering detection endpoints
  - name: Watermarking
    description: Apply watermarks and provenance metadata to media assets
paths:
  /api/v2/watermark/{id}:
    get:
      tags:
        - Watermarking
      summary: Get watermark result
      description: >-
        Retrieve the status and result of a watermarking submission created with
        `POST /api/v2/watermark`.


        While `status` is `new` or `inprogress`, `result` is `null`. Once
        `status` is `done`, `result` contains the applied policies and, when at
        least one watermark was applied, a `download_url` for the watermarked
        asset (valid until `expires_at`).
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
          description: The submission identifier returned by `POST /api/v2/watermark`.
      responses:
        '200':
          description: >-
            Submission found. Returns its current status and, when available,
            the watermarking result.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WatermarkResult'
              examples:
                inprogress:
                  summary: Still processing
                  value:
                    id: 674a3c9b8e2d4f12b7c9a8d3
                    status: inprogress
                    result: null
                done:
                  summary: Completed
                  value:
                    id: 674a3c9b8e2d4f12b7c9a8d3
                    status: done
                    result:
                      errors: []
                      applied_watermarks:
                        - european-watermarks
                        - aigc-metadata
                      download_url: >-
                        https://s3.identifai.example.com/bucket/path/to/watermarked-asset.png?X-Amz-Signature=12345
                      expires_at: '2026-08-28T15:30:00Z'
                errored:
                  summary: Failed
                  value:
                    id: 674a3c9b8e2d4f12b7c9a8d3
                    status: errored
                    watermarks_errors:
                      - >-
                        Unable to fetch the custom logo from the provided
                        storage URL
                    result: null
        '401':
          description: Invalid or missing API key
          content:
            application/json:
              example:
                error: Unauthorized
                message: Invalid or missing API key
        '403':
          description: The user is not authorized to access this submission
          content:
            application/json:
              example:
                error: Forbidden
        '404':
          description: No watermarking submission exists for the given id
          content:
            application/json:
              example:
                error: Not found
                message: Watermark submission not found
      security:
        - ApiKeyAuth: []
components:
  schemas:
    WatermarkResult:
      type: object
      properties:
        id:
          type: string
          description: >-
            Identifier of the watermarking submission. Use it to poll `GET
            /api/v2/watermark/{id}`.
        status:
          type: string
          enum:
            - new
            - inprogress
            - done
            - errored
          description: >-
            Current status of the submission. `result` is populated only once
            the status is `done`.
        watermarks_errors:
          type: array
          description: >-
            Submission-level errors raised while preparing the watermarking job.
            Absent when there are none.
          items:
            type: string
        result:
          nullable: true
          description: >-
            Watermarking result. `null` while the submission is still being
            processed; populated once `status` is `done`.
          allOf:
            - $ref: '#/components/schemas/WatermarkApplicationResult'
      required:
        - id
        - status
        - result
    WatermarkApplicationResult:
      type: object
      properties:
        errors:
          type: array
          description: >-
            Errors raised while applying the requested policies. Empty when
            every policy was applied successfully.
          items:
            type: string
        applied_watermarks:
          type: array
          description: Policies that were successfully applied to the asset.
          items:
            type: string
            enum:
              - european-watermarks
              - chinese-watermarks
              - aigc-metadata
              - custom
        download_url:
          type: string
          description: >-
            Pre-signed URL to download the watermarked asset. Present only when
            at least one watermark was applied.
        expires_at:
          type: string
          format: date-time
          description: Expiration timestamp (ISO 8601) of `download_url`.
      required:
        - errors
        - applied_watermarks
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-Api-Key

````