naftiko: 1.0.0-alpha2 info: label: API Reference — subpackage_duets description: 'API Reference — subpackage_duets. 7 operations. Lead operation: Generate duet. Self-contained Naftiko capability covering one Resemble Ai business surface.' tags: - Resemble Ai - subpackage_duets created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: RESEMBLE_AI_API_KEY: RESEMBLE_AI_API_KEY capability: consumes: - type: http namespace: resemble-ai-subpackage-duets baseUri: https://f.cluster.resemble.ai description: API Reference — subpackage_duets business capability. Self-contained, no shared references. resources: - name: duet path: /duet operations: - name: generateduet method: POST description: Generate duet outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: Authorization in: header type: string description: API token from https://app.resemble.ai/account/api required: true - name: body in: body type: object description: Request body (JSON). required: false - name: duet_voice_pairs path: /duet_voice_pairs operations: - name: listduetvoicepairs method: GET description: List duet voice pairs outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: Authorization in: header type: string description: API token from https://app.resemble.ai/account/api required: true - name: createduetvoicepair method: POST description: Create duet voice pair outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: Authorization in: header type: string description: API token from https://app.resemble.ai/account/api required: true - name: body in: body type: object description: Request body (JSON). required: false - name: duet_voices path: /duet_voices operations: - name: listduetvoices method: GET description: List duet voices outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: Authorization in: header type: string description: API token from https://app.resemble.ai/account/api required: true - name: createduetvoice method: POST description: Create custom duet voice outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: Authorization in: header type: string description: API token from https://app.resemble.ai/account/api required: true - name: body in: body type: object description: Request body (JSON). required: false - name: duet_voices-id path: /duet_voices/{id} operations: - name: updateduetvoice method: PUT description: Update duet voice outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: integer required: true - name: Authorization in: header type: string description: API token from https://app.resemble.ai/account/api required: true - name: body in: body type: object description: Request body (JSON). required: false - name: deleteduetvoice method: DELETE description: Delete duet voice outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: integer required: true - name: Authorization in: header type: string description: API token from https://app.resemble.ai/account/api required: true authentication: type: bearer token: '{{env.RESEMBLE_AI_API_KEY}}' exposes: - type: rest namespace: resemble-ai-subpackage-duets-rest port: 8080 description: REST adapter for API Reference — subpackage_duets. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/duet name: duet description: REST surface for duet. operations: - method: POST name: generateduet description: Generate duet call: resemble-ai-subpackage-duets.generateduet with: Authorization: rest.Authorization body: rest.body outputParameters: - type: object mapping: $. - path: /v1/duet-voice-pairs name: duet-voice-pairs description: REST surface for duet_voice_pairs. operations: - method: GET name: listduetvoicepairs description: List duet voice pairs call: resemble-ai-subpackage-duets.listduetvoicepairs with: Authorization: rest.Authorization outputParameters: - type: object mapping: $. - method: POST name: createduetvoicepair description: Create duet voice pair call: resemble-ai-subpackage-duets.createduetvoicepair with: Authorization: rest.Authorization body: rest.body outputParameters: - type: object mapping: $. - path: /v1/duet-voices name: duet-voices description: REST surface for duet_voices. operations: - method: GET name: listduetvoices description: List duet voices call: resemble-ai-subpackage-duets.listduetvoices with: Authorization: rest.Authorization outputParameters: - type: object mapping: $. - method: POST name: createduetvoice description: Create custom duet voice call: resemble-ai-subpackage-duets.createduetvoice with: Authorization: rest.Authorization body: rest.body outputParameters: - type: object mapping: $. - path: /v1/duet-voices/{id} name: duet-voices-id description: REST surface for duet_voices-id. operations: - method: PUT name: updateduetvoice description: Update duet voice call: resemble-ai-subpackage-duets.updateduetvoice with: id: rest.id Authorization: rest.Authorization body: rest.body outputParameters: - type: object mapping: $. - method: DELETE name: deleteduetvoice description: Delete duet voice call: resemble-ai-subpackage-duets.deleteduetvoice with: id: rest.id Authorization: rest.Authorization outputParameters: - type: object mapping: $. - type: mcp namespace: resemble-ai-subpackage-duets-mcp port: 9090 transport: http description: MCP adapter for API Reference — subpackage_duets. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: generate-duet description: Generate duet hints: readOnly: false destructive: false idempotent: false call: resemble-ai-subpackage-duets.generateduet with: Authorization: tools.Authorization body: tools.body outputParameters: - type: object mapping: $. - name: list-duet-voice-pairs description: List duet voice pairs hints: readOnly: true destructive: false idempotent: true call: resemble-ai-subpackage-duets.listduetvoicepairs with: Authorization: tools.Authorization outputParameters: - type: object mapping: $. - name: create-duet-voice-pair description: Create duet voice pair hints: readOnly: false destructive: false idempotent: false call: resemble-ai-subpackage-duets.createduetvoicepair with: Authorization: tools.Authorization body: tools.body outputParameters: - type: object mapping: $. - name: list-duet-voices description: List duet voices hints: readOnly: true destructive: false idempotent: true call: resemble-ai-subpackage-duets.listduetvoices with: Authorization: tools.Authorization outputParameters: - type: object mapping: $. - name: create-custom-duet-voice description: Create custom duet voice hints: readOnly: false destructive: false idempotent: false call: resemble-ai-subpackage-duets.createduetvoice with: Authorization: tools.Authorization body: tools.body outputParameters: - type: object mapping: $. - name: update-duet-voice description: Update duet voice hints: readOnly: false destructive: false idempotent: true call: resemble-ai-subpackage-duets.updateduetvoice with: id: tools.id Authorization: tools.Authorization body: tools.body outputParameters: - type: object mapping: $. - name: delete-duet-voice description: Delete duet voice hints: readOnly: false destructive: true idempotent: true call: resemble-ai-subpackage-duets.deleteduetvoice with: id: tools.id Authorization: tools.Authorization outputParameters: - type: object mapping: $.