API Reference

Complete reference for the Mira REST API. All endpoints require a valid API key in the Authorization header.

OpenAPI Spec

The full OpenAPI 3.0 specification is available at GET /api/v1/openapi.json. You can import it into Postman, Insomnia, or any OpenAPI-compatible tool.

Meetings

GET/api/v1/meetings

List meetings for your organization with optional filters.

ParameterTypeRequiredDescription
pageintegerDefault: 1Page number
limitintegerDefault: 20Items per page (max 100)
statusstringOptionalFilter by status: pending, fetched, processing, completed, failed, no_transcript
user_iduuidOptionalFilter meetings by user
fromISO 8601OptionalMeetings after this date
toISO 8601OptionalMeetings before this date
bash
curl "https://your-domain.com/api/v1/meetings?status=completed&limit=10" \
  -H "Authorization: Bearer mira_live_xxxx"
GET/api/v1/meetings/{id}

Get a single meeting by ID, including the full transcript.

GET/api/v1/meetings/{id}/report

Get all coaching reports associated with a specific meeting.

ParameterTypeRequiredDescription
iduuidRequiredMeeting ID

Templates

GET/api/v1/templates

List coaching/scoring templates for your organization.

ParameterTypeRequiredDescription
pageintegerDefault: 1Page number
limitintegerDefault: 20Items per page
is_activebooleanOptionalFilter by active status
call_typestringOptionalFilter by call type
POST/api/v1/templates

Create a new coaching template. Requires 'write' permission.

Request Body

ParameterTypeRequiredDescription
namestringRequiredTemplate name
prompt_templatestringRequiredThe coaching prompt template
grading_criteriaarrayRequiredArray of grading criteria objects
descriptionstringOptionalTemplate description
coaching_tonestringOptionalOne of: direct, encouraging, data-driven
call_typestringOptionalOne of: discovery, demo, negotiation, follow-up, closing, cold-call, general
industry_contextstringOptionalIndustry context for the template
Example Request Body
{
  "name": "Discovery Call Scoring",
  "prompt_template": "Evaluate the sales rep...",
  "grading_criteria": [
    { "name": "Rapport Building", "weight": 25, "description": "..." },
    { "name": "Needs Discovery", "weight": 35, "description": "..." },
    { "name": "Next Steps", "weight": 20, "description": "..." },
    { "name": "Active Listening", "weight": 20, "description": "..." }
  ],
  "coaching_tone": "encouraging",
  "call_type": "discovery"
}
GET/api/v1/templates/{id}

Get a single template by ID with full details.

PUT/api/v1/templates/{id}

Update a template. Requires 'write' permission.

DELETE/api/v1/templates/{id}

Delete a template. Requires 'write' permission.

Reports

GET/api/v1/reports

List coaching reports with optional filters.

ParameterTypeRequiredDescription
pageintegerDefault: 1Page number
limitintegerDefault: 20Items per page
user_iduuidOptionalFilter reports by user
fromISO 8601OptionalReports created after this date
toISO 8601OptionalReports created before this date
min_scorenumberOptionalMinimum overall score
max_scorenumberOptionalMaximum overall score
GET/api/v1/reports/{id}

Get a full coaching report by ID, including criteria scores and feedback.

Team

GET/api/v1/team/stats

Get aggregated team performance statistics.

ParameterTypeRequiredDescription
time_rangestringDefault: monthOne of: week, month, quarter, year, all
Example Response
{
  "data": {
    "time_range": "month",
    "team_size": 12,
    "total_meetings": 87,
    "total_reports": 64,
    "average_score": 7.3,
    "top_performers": [
      {
        "user_id": "...",
        "name": "Jane Smith",
        "avg_score": 8.9,
        "report_count": 8
      }
    ]
  },
  "error": null,
  "meta": null
}

Insights

GET/api/v1/insights

List marketing insights extracted from sales calls.

ParameterTypeRequiredDescription
pageintegerDefault: 1Page number
limitintegerDefault: 20Items per page
date_fromISO 8601OptionalInsights after this date
date_toISO 8601OptionalInsights before this date
industrystringOptionalFilter by industry (partial match)
prospect_titlestringOptionalFilter by prospect title (partial match)

Roleplay

GET/api/v1/roleplay/sessions

List roleplay practice sessions with optional filters.

ParameterTypeRequiredDescription
pageintegerDefault: 1Page number
limitintegerDefault: 20Items per page
user_iduuidOptionalFilter by user
statusstringOptionalFilter by session status