# UploadUrlResult

```ts
type UploadUrlResult = 
  | {
  asset: AssetDTO;
  deduped: true;
}
  | {
  deduped: false;
  process: {
     body: Record<string, unknown>;
     url: string;
  };
  upload: {
     headers?: Record<string, string>;
     url: string;
  };
};
```

Defined in: packages/sdk/src/index.ts:479

Wire shape returned by `POST /assets/upload-url`. Either the server
resolves the upload synchronously via dedup (`deduped: true` + existing
asset DTO) or it returns a presigned storage PUT URL plus a `process` payload
the caller must POST to `/assets/process` after the PUT lands.