Kallfi
API referenceSource assets

Create a source-asset upload intent

POST
/v1/soul-source-assets

Proposed operation. Records one bounded source-asset declaration and returns a short-lived direct-to-storage upload target. Kallfi validates the exact uploaded bytes asynchronously; partner application servers do not send large media through this JSON API process.

Authorization

bearerAuth
AuthorizationBearer <token>

Organization-scoped bearer credential. Credentials are scoped, revocable, and never represented by a Soul or operation ID.

In: header

Header Parameters

Idempotency-Key*string

Opaque replay key for this mutation. Repeating the same key with the same request returns the original result; reusing it with different input returns a conflict.

Length1 <= length <= 128

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/soul-source-assets" \  -H "Idempotency-Key: string" \  -H "Content-Type: application/json" \  -d '{    "type": "appearance_reference",    "media": {      "content_type": "string",      "byte_length": 1,      "sha256": "stringstringstringstringstringstringstringstringstringstringstri"    },    "rights_attestation": {      "basis": "owned_or_licensed",      "subject_consent": true    }  }'
{  "source_asset": {    "source_asset_id": "string",    "type": "appearance_reference",    "status": "upload_pending",    "media": {      "content_type": "string",      "byte_length": 1,      "sha256": "stringstringstringstringstringstringstringstringstringstringstri"    },    "annotations": [      {        "request_at_ms": 0,        "behavior_start_ms": 0,        "behavior_end_ms": 1,        "user_request": "string"      }    ],    "rights_attestation": {      "basis": "owned_or_licensed",      "subject_consent": true    },    "upload": {      "method": "PUT",      "url": "http://example.com",      "expires_at": "2019-08-24T14:15:22Z",      "headers": {        "property1": "string",        "property2": "string"      }    },    "created_at": "2019-08-24T14:15:22Z"  },  "operation": {    "operation_id": "string",    "status": "accepted",    "resource": {      "type": "source_asset",      "id": "string"    },    "progress_percent": 0,    "quote": {      "quote_id": "string"    },    "usage": {      "reserved_gems": 0,      "consumed_gems": 0,      "released_gems": 0    },    "failure": {      "code": "string",      "message": "string",      "retryable": true    },    "output": {      "kind": "text",      "text": "string",      "media": [        {          "kind": "image",          "url": "http://example.com"        }      ]    },    "created_at": "2019-08-24T14:15:22Z",    "updated_at": "2019-08-24T14:15:22Z",    "links": {      "self": "http://example.com"    },    "kind": "source_asset_validation"  }}