Aura Logo
AuraAPI Docs
OpenapiV1Calls

Create a booking

Book a call on one of your organization's booking links. Runs the same booking pipeline as the public booking page and the Aura dashboard:

  • The calendar event is created on the assigned host's calendar and the guest receives the standard invite + confirmation email
  • The lead is created or updated (matched by organization + guest email)
  • Guest reminders, meeting recording, and configured workflows are scheduled
  • The call.booked webhook fires to all subscribers (single emitter — do not expect a second event from this endpoint)

Host assignment: by default the booking link's normal host assignment (round-robin / first-free) applies. Pass closer_email to prefer a specific host — it is resolved server-side against your organization's roster.

Form answers: answers are validated against the booking link's custom field configuration — required fields must be answered and unknown field ids are rejected with 400. Disqualification rules configured on the link are NOT evaluated for API-created bookings (matching dashboard host-initiated booking semantics) — the API caller vouches for the guest.

Slot validation: start_time must be in the future and respect the link's minimum booking notice. The slot is re-checked against existing bookings at write time; a slot taken between your availability read and this request fails with 409 SLOT_UNAVAILABLE. A small residual race window remains under high concurrency — the host's calendar provider is the final arbiter and rejects a genuinely conflicting event (422). A failed request never leaves a partial booking: if persistence fails after the calendar event was created, the event is rolled back.

Idempotency: send an Idempotency-Key header to make retries safe. A repeated key returns the originally created call; a key whose first request is still in flight fails with 409 CONFLICT.

Rate limit: this endpoint is limited to 20 requests/minute per API key, in addition to the global limits.

Upstream failures: if the calendar provider rejects the booking the request fails with 422 EXTERNAL_API_ERROR; if the provider or scheduling service is degraded it fails with 502 EXTERNAL_API_ERROR.

POST
/v1/calls
answers?

Answers to the booking link's custom form fields. Required fields must be answered; unknown field ids are rejected with 400. Disqualification rules configured on the link are NOT evaluated for API-created bookings (matching dashboard host-initiated booking semantics).

booking_link_idstring

Booking link to book against (must be active)

Formatuuid
closer_email?string

Preferred host, by email. Resolved server-side against the organization's roster (no internal user IDs needed). When omitted, the booking link's normal host assignment (round-robin / first-free) applies.

Formatemail
end_time?string

Slot end. When omitted, derived from the booking link's configured duration.

Formatdate-time
guest

The prospect being booked

start_timestring

Slot start as an ISO-8601 datetime (UTC or with offset). Must be in the future and respect the booking link's minimum notice.

Formatdate-time
timezone?string

IANA timezone for the guest (e.g. Europe/Berlin). Defaults to the booking link's timezone.

utm_campaign?string
Lengthlength <= 255
utm_content?string
Lengthlength <= 255
utm_medium?string
Lengthlength <= 255
utm_source?string

Attribution: UTM source recorded on the call and lead

Lengthlength <= 255
utm_term?string
Lengthlength <= 255

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://api.aura-app.ai/v1/calls" \  -H "Content-Type: application/json" \  -d '{    "booking_link_id": "850e8400-e29b-41d4-a716-446655440003",    "guest": {      "email": "ada@example.com",      "name": "Ada Lovelace"    },    "start_time": "2026-08-01T15:00:00Z"  }'
{
  "data": {
    "action_items": [
      {
        "due_at": "string",
        "notes": "string",
        "owner": "string",
        "title": "string",
        "property1": null,
        "property2": null
      }
    ],
    "ai_summary": "string",
    "booking_link_id": "850e8400-e29b-41d4-a716-446655440003",
    "call_kind": "booking",
    "closer_id": "user_2abc123xyz",
    "conferencing_link": "https://zoom.us/j/123456789",
    "created_at": "2026-01-17T08:00:00Z",
    "duration_minutes": 45,
    "ended_at": "2019-08-24T14:15:22Z",
    "expected_deal_value": 500000,
    "form_data": [
      {
        "field_id": "budget",
        "label": "What is your budget?",
        "value": null,
        "property1": null,
        "property2": null
      }
    ],
    "guest_rsvp_confirmed_at": "2019-08-24T14:15:22Z",
    "guest_rsvp_status": "yes",
    "has_analysis": true,
    "has_recording": true,
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "lead_id": "650e8400-e29b-41d4-a716-446655440001",
    "linked_payment_id": "403ebef4-39b7-43a9-8633-c107cae8737a",
    "notes": "string",
    "product_id": "950e8400-e29b-41d4-a716-446655440004",
    "recording_url": "string",
    "referral": "string",
    "scheduled_at": "2026-01-20T15:00:00Z",
    "setter_id": "user_2def456uvw",
    "started_at": "2019-08-24T14:15:22Z",
    "status": "closed",
    "transcript_data": {
      "duration_seconds": 0,
      "language": "string",
      "segments": [
        {
          "end_seconds": 0,
          "speaker": "string",
          "start_seconds": 0,
          "text": "string",
          "property1": null,
          "property2": null
        }
      ],
      "property1": null,
      "property2": null
    },
    "updated_at": "2026-01-17T09:30:00Z",
    "utm_campaign": "summer_promo",
    "utm_content": "string",
    "utm_medium": "cpc",
    "utm_source": "google",
    "utm_term": "string"
  },
  "success": true
}
{
  "code": "NOT_FOUND",
  "error": "Lead not found",
  "requestId": "req_abc123",
  "success": false
}
{
  "code": "NOT_FOUND",
  "error": "Lead not found",
  "requestId": "req_abc123",
  "success": false
}
{
  "code": "NOT_FOUND",
  "error": "Lead not found",
  "requestId": "req_abc123",
  "success": false
}
{
  "code": "NOT_FOUND",
  "error": "Lead not found",
  "requestId": "req_abc123",
  "success": false
}
{
  "code": "NOT_FOUND",
  "error": "Lead not found",
  "requestId": "req_abc123",
  "success": false
}
{
  "code": "NOT_FOUND",
  "error": "Lead not found",
  "requestId": "req_abc123",
  "success": false
}
{
  "code": "NOT_FOUND",
  "error": "Lead not found",
  "requestId": "req_abc123",
  "success": false
}