Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
openapi: 3.2.0
info:
title: Confcall App Embed API
version: post-phase-1
x-canonical-url: https://docs.confcall.app/openapi/confcall-control-plane.json
description: 'Operations tagged Embed across 2 of this provider''s published API definitions: confcall-control-plane.json, confcall-app-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://meet.confcall.app
description: Production
security:
- ApiKeyAuth: []
- OAuth2ClientCredentials:
- confcall:rooms
- confcall:history
tags:
- name: Embed
paths:
/api/embed/rooms:
post:
operationId: createEmbedRoom
summary: Create an embed-flagged room owned by the calling account
x-auth: apiKey
x-auth-note: sk_ only — there is no JWT alternative for this route.
requestBody:
content:
application/json:
schema:
type: object
properties:
roomName:
type:
- string
- 'null'
responses:
'201':
description: Room created
content:
application/json:
schema:
type: object
properties:
roomId:
type: string
embedUrl:
type: string
'401':
description: Missing/invalid X-API-Key, or the key has no associated account
tags:
- Embed
servers:
- url: https://meet.confcall.app
description: Production
/api/embed/sessions:
post:
operationId: createEmbedSession
summary: Mint a short-lived, room-scoped join token for an external user
x-auth: apiKey
x-auth-note: sk_ only — there is no JWT alternative for this route.
requestBody:
content:
application/json:
schema:
type: object
required:
- roomId
- externalUserId
- ttlSeconds
properties:
roomId:
type: string
externalUserId:
type: string
displayName:
type:
- string
- 'null'
role:
type: string
default: participant
enum:
- host
- co-host
- participant
ttlSeconds:
type: integer
minimum: 1
responses:
'200':
description: Session token minted
content:
application/json:
schema:
type: object
properties:
token:
type: string
expiresAt:
type: string
format: date-time
embedUrl:
type: string
'400':
description: Missing roomId/externalUserId, non-positive ttlSeconds, or an unrecognized role
'404':
description: Room not found, not an embed room, or not owned by this account (same 404 for all three, so this can't be used to probe other accounts' room ids)
'502':
description: Token minting failed upstream
tags:
- Embed
servers:
- url: https://meet.confcall.app
description: Production
components:
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: X-API-Key
description: A confcall secret (sk_live_/sk_test_) API key. Publishable (pk_) keys are rejected on every route documented here.
OAuth2ClientCredentials:
type: oauth2
description: 'OAuth 2.0 client-credentials grant. Exchange a client id/secret at the token URL for a short-lived bearer JWT and send it as `Authorization: Bearer <token>`. Operations with x-auth jwtOrApiKey accept either this or ApiKeyAuth; x-auth jwt operations need a user-context token.'
flows:
clientCredentials:
tokenUrl: https://auth.confcall.app/oauth/token
scopes:
confcall:rooms: Manage rooms and invite/remove the AI agent
confcall:history: Read meeting artifacts (transcripts, summaries, action items)
x-refined-from:
- confcall-control-plane.json
- confcall-app-openapi.yml