Civitai · Capability

Civitai Orchestration API — Blobs

Civitai Orchestration API — Blobs. Upload, head, refresh, and retrieve blob references used as workflow inputs/outputs. NSFW moderation runs on upload. Self-contained Naftiko capability.

Civitai Orchestration API — Blobs is a Naftiko capability published by Civitai, one of 13 capabilities the APIs.io network indexes for this provider. It bundles 4 operations across the POST and GET methods rooted at /v2/consumer/blobs.

The capability includes 2 read-only operations and 1 state-changing operation. Lead operation: Get a presigned blob upload URL. Can be deployed as a REST endpoint, MCP tool, or Agent Skill via Naftiko.

Tagged areas include Civitai, Orchestration, Blobs, and Uploads.

Run with Naftiko CivitaiOrchestrationBlobsUploads

What You Can Do

POST
Uploadblob — Upload blob.
/v2/consumer/blobs
GET
Getbloburl — Get presigned upload URL.
/v2/consumer/blobs/upload-url
GET
Getblob — Get blob.
/v2/consumer/blobs/{blobId}
POST
Refreshblob — Refresh blob.
/v2/consumer/blobs/{blobId}/refresh

MCP Tools

civitai-get-blob-upload-url

Get a presigned blob upload URL.

read-only idempotent
civitai-get-blob

Get blob metadata.

read-only idempotent
civitai-refresh-blob

Refresh blob signed URL.

idempotent

Capability Spec

orchestration-blobs.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Civitai Orchestration API — Blobs
  description: 'Civitai Orchestration API — Blobs. Upload, head, refresh, and retrieve blob references used
    as workflow inputs/outputs. NSFW moderation runs on upload. Self-contained Naftiko capability.'
  tags:
  - Civitai
  - Orchestration
  - Blobs
  - Uploads
  created: '2026-05-25'
  modified: '2026-05-25'
binds:
- namespace: env
  keys:
    CIVITAI_API_KEY: CIVITAI_API_KEY
capability:
  consumes:
  - type: http
    namespace: orchestration-blobs
    baseUri: https://orchestration.civitai.com
    description: Civitai Orchestration Blobs.
    resources:
    - name: blobs
      path: /v2/consumer/blobs
      operations:
      - name: uploadblob
        method: POST
        description: Upload a blob with NSFW moderation.
        outputRawFormat: json
        outputParameters:
        - { name: result, type: object, value: $. }
        inputParameters:
        - { name: body, in: body, type: object, required: true }
    - name: blob-upload-url
      path: /v2/consumer/blobs/upload-url
      operations:
      - name: getbloburl
        method: GET
        description: Get a presigned blob upload URL.
        outputRawFormat: json
        outputParameters:
        - { name: result, type: object, value: $. }
        inputParameters:
        - { name: mimeType, in: query, type: string, required: true }
        - { name: sizeBytes, in: query, type: integer }
    - name: blob
      path: /v2/consumer/blobs/{blobId}
      operations:
      - name: getblob
        method: GET
        description: Get blob metadata.
        outputRawFormat: json
        outputParameters:
        - { name: result, type: object, value: $. }
        inputParameters:
        - { name: blobId, in: path, type: string, required: true }
      - name: headblob
        method: HEAD
        description: Head blob.
        outputRawFormat: raw
        outputParameters:
        - { name: result, type: object, value: $. }
        inputParameters:
        - { name: blobId, in: path, type: string, required: true }
    - name: blob-refresh
      path: /v2/consumer/blobs/{blobId}/refresh
      operations:
      - name: refreshblob
        method: POST
        description: Refresh a blob's signed URL.
        outputRawFormat: json
        outputParameters:
        - { name: result, type: object, value: $. }
        inputParameters:
        - { name: blobId, in: path, type: string, required: true }
    authentication:
      type: apikey
      key: Authorization
      value: 'Bearer {{env.CIVITAI_API_KEY}}'
      placement: header
  exposes:
  - type: rest
    namespace: orchestration-blobs-rest
    port: 8080
    description: REST adapter for Orchestration Blobs.
    resources:
    - path: /v2/consumer/blobs
      name: blobs
      operations:
      - method: POST
        name: uploadblob
        description: Upload blob.
        call: orchestration-blobs.uploadblob
        with: { body: rest.body }
        outputParameters: [{ type: object, mapping: $. }]
    - path: /v2/consumer/blobs/upload-url
      name: blob-upload-url
      operations:
      - method: GET
        name: getbloburl
        description: Get presigned upload URL.
        call: orchestration-blobs.getbloburl
        with:
          mimeType: rest.query.mimeType
          sizeBytes: rest.query.sizeBytes
        outputParameters: [{ type: object, mapping: $. }]
    - path: /v2/consumer/blobs/{blobId}
      name: blob
      operations:
      - method: GET
        name: getblob
        description: Get blob.
        call: orchestration-blobs.getblob
        with: { blobId: rest.path.blobId }
        outputParameters: [{ type: object, mapping: $. }]
    - path: /v2/consumer/blobs/{blobId}/refresh
      name: blob-refresh
      operations:
      - method: POST
        name: refreshblob
        description: Refresh blob.
        call: orchestration-blobs.refreshblob
        with: { blobId: rest.path.blobId }
        outputParameters: [{ type: object, mapping: $. }]
  - type: mcp
    namespace: orchestration-blobs-mcp
    port: 9090
    transport: http
    description: MCP adapter for Orchestration Blobs.
    tools:
    - name: civitai-get-blob-upload-url
      description: Get a presigned blob upload URL.
      hints: { readOnly: true, destructive: false, idempotent: true }
      call: orchestration-blobs.getbloburl
      with:
        mimeType: tools.mimeType
        sizeBytes: tools.sizeBytes
      outputParameters: [{ type: object, mapping: $. }]
    - name: civitai-get-blob
      description: Get blob metadata.
      hints: { readOnly: true, destructive: false, idempotent: true }
      call: orchestration-blobs.getblob
      with: { blobId: tools.blobId }
      outputParameters: [{ type: object, mapping: $. }]
    - name: civitai-refresh-blob
      description: Refresh blob signed URL.
      hints: { readOnly: false, destructive: false, idempotent: true }
      call: orchestration-blobs.refreshblob
      with: { blobId: tools.blobId }
      outputParameters: [{ type: object, mapping: $. }]