Skip to content
cursareDocs
Sign inGet started
Documentation
  • Overview
  • Index2
  • Organization17
  • Sales6
  • Insights8
  • Reports and safety7
  • Minor accounts8
  • Minor safety3
  • Offers11
  • Media1
  • Contents10
  • Learner delivery1
  • Learner runtime5
  • Learners12
  • Cohorts12
  • Intake forms5
  • Campaigns4
  • Teams8
  • Affiliates7
  • Links7
  • Reviews1
  • Integrations26
  • MCP2
  • Webhooks6

Insights

Organization and per-content academic and financial reporting.

8 endpoints

Org-wide insights

GET/insights

Headline academic and financial numbers for the whole org. WARNING: financial.revenue is a size signal, not a quotable amount — it sums the minor units of every currency the org sells in without converting them. Never state it as money; read listSales (revenueByCurrency) or getPayouts instead.

Responses

200Org-wide insights.
401Missing, invalid or revoked API key.
429Rate limit exceeded (240 reads/min, 60 writes/min per key).
500Unexpected server error.
curl https://api.cursare.com/v1/insights \
  --header 'Authorization: Bearer cr_live_…'
{
  "data": {
    "academic": {
      "avgQuizScore": 0,
      "completionRate": 0,
      "completions": 0,
      "enrollments": 0,
      "quizAttempts": 0
    },
    "financial": {
      "purchases": 0,
      "revenue": 0
    }
  }
}

Analytics collection health

GET/insights/health

Returns bounded operational counters for accepted and rejected browser events, server-delivery retries and terminal failures, GA4 freshness, tracked-purchase coverage, and the Google/Cursare purchase discrepancy. Rejected payload content is never retained.

Query parameters

fromdate

Inclusive UTC start. Defaults to 29 days before to. Maximum 366 days.

todate

Inclusive UTC end. Defaults to today.

Responses

200Analytics collection health.
400Validation failed or the request body is malformed.
401Missing, invalid or revoked API key.
429Rate limit exceeded (240 reads/min, 60 writes/min per key).
500Unexpected server error.
curl https://api.cursare.com/v1/insights/health \
  --header 'Authorization: Bearer cr_live_…'
{
  "data": {
    "collection": {
      "accepted": 0,
      "issues": {
        "invalid_payload": 0,
        "invalid_scope": 0,
        "rate_limited": 0,
        "timestamp_outside_window": 0
      }
    },
    "coverage": {
      "cursarePurchases": 0,
      "googleObservedPurchases": 0,
      "purchaseDiscrepancy": 0,
      "trackedPurchaseCoverage": 0
    },
    "delivery": {
      "dead": 0,
      "pending": 0,
      "retrying": 0,
      "succeeded": 0,
      "suppressed": 0,
      "terminal": 0
    },
    "from": "string",
    "generatedAt": "2026-01-31T12:00:00.000Z",
    "google": {
      "freshThrough": "2026-01-31T12:00:00.000Z",
      "generatedAt": "2026-01-31T12:00:00.000Z",
      "health": "current",
      "issueCode": "authorization_revoked",
      "reportAgeSeconds": 0
    },
    "to": "string"
  }
}

Source-labeled Google Analytics context

GET/insights/google

Returns one bounded report from the fixed Cursare GA4 catalog. Google users, sessions, acquisition dimensions, and observed funnel events augment—but never replace or merge with—authoritative Cursare financial and academic facts.

Query parameters

reportenumrequired

A fixed report shape; arbitrary Google dimensions and metrics are not accepted.

overviewsource_mediumcampaignlanding_pagedevicegeographyfunnel

fromdate

Inclusive UTC start. Defaults to 29 days before to. Maximum 366 days.

todate

Inclusive UTC end. Defaults to today.

Responses

200Source-labeled Google Analytics context.
400Validation failed or the request body is malformed.
401Missing, invalid or revoked API key.
429Rate limit exceeded (240 reads/min, 60 writes/min per key).
500Unexpected server error.
curl https://api.cursare.com/v1/insights/google \
  --header 'Authorization: Bearer cr_live_…'
{
  "data": {
    "metadata": {
      "freshThrough": "2026-01-31T12:00:00.000Z",
      "from": "string",
      "generatedAt": "2026-01-31T12:00:00.000Z",
      "health": "current",
      "reportVersion": 0,
      "source": "string",
      "to": "string"
    },
    "property": {
      "id": "string",
      "name": "string"
    },
    "report": "overview",
    "rows": [
      {
        "dimensions": {},
        "metrics": {}
      }
    ],
    "totalRows": 0,
    "truncated": true
  }
}

Authoritative commerce funnel insights

GET/insights/commerce

Returns Cursare checkout, purchase, refund, revenue, conversion, abandonment, recovery, offer, campaign, and daily metrics. Monetary values remain separated by ISO currency and use minor units. Provider-confirmed expiration defines abandonment; browser cancellation does not.

Query parameters

campaignIdstring

Limit results to one campaign.

cohortIdstring

Limit academic results to one cohort.

contentIdstring

Limit results to one content in this organization.

fromdate

Inclusive UTC start. Defaults to 29 days before to. Maximum 366 days.

offerIdstring

Limit results to one offer.

todate

Inclusive UTC end. Defaults to today.

Responses

200Authoritative commerce funnel insights.
400Validation failed or the request body is malformed.
401Missing, invalid or revoked API key.
429Rate limit exceeded (240 reads/min, 60 writes/min per key).
500Unexpected server error.
curl https://api.cursare.com/v1/insights/commerce \
  --header 'Authorization: Bearer cr_live_…'
{
  "data": {
    "breakdowns": [
      {
        "campaignId": "string",
        "currency": "string",
        "offerId": "string",
        "purchases": 0,
        "revenue": 0
      }
    ],
    "currencies": [
      {
        "averagePaidValue": 0,
        "currency": "string",
        "grossRevenue": 0,
        "netRevenue": 0,
        "purchases": 0,
        "refundedRevenue": 0,
        "refunds": 0
      }
    ],
    "daily": [
      {
        "checkoutsStarted": 0,
        "date": "string",
        "purchases": 0,
        "refunds": 0,
        "revenueByCurrency": {},
        "views": 0
      }
    ],
    "funnel": {
      "campaignSelections": 0,
      "checkoutAttempts": 0,
      "checkoutCreationFailures": 0,
      "checkoutFailures": 0,
      "checkoutsExpired": 0,
      "checkoutsRecovered": 0,
      "checkoutsStarted": 0,
      "delayedPaymentFailures": 0,
      "offerSelections": 0,
      "purchases": 0,
      "refunds": 0,
      "views": 0
    },
    "metadata": {
      "freshThrough": "2026-01-31T12:00:00.000Z",
      "from": "string",
      "generatedAt": "2026-01-31T12:00:00.000Z",
      "health": "current",
      "metricVersion": 0,
      "source": "string",
      "to": "string"
    },
    "rates": {
      "checkoutAbandonment": 0,
      "checkoutConversion": 0,
      "checkoutFailure": 0,
      "checkoutRecovery": 0,
      "refund": 0,
      "trackedPurchaseCoverage": 0,
      "viewToCheckout": 0
    }
  }
}

Authoritative academic engagement insights

GET/insights/academic

Returns enrollment, activation, completion, quiz, video, certificate, and review metrics from Cursare facts. Start and video interactions are consented and therefore may be partial; completion and quiz facts remain authoritative.

Query parameters

campaignIdstring

Limit results to one campaign.

cohortIdstring

Limit academic results to one cohort.

contentIdstring

Limit results to one content in this organization.

fromdate

Inclusive UTC start. Defaults to 29 days before to. Maximum 366 days.

offerIdstring

Limit results to one offer.

todate

Inclusive UTC end. Defaults to today.

Responses

200Authoritative academic engagement insights.
400Validation failed or the request body is malformed.
401Missing, invalid or revoked API key.
429Rate limit exceeded (240 reads/min, 60 writes/min per key).
500Unexpected server error.
curl https://api.cursare.com/v1/insights/academic \
  --header 'Authorization: Bearer cr_live_…'
{
  "data": {
    "daily": [
      {
        "averageQuizScore": 0,
        "completions": 0,
        "date": "string",
        "enrollments": 0,
        "quizAttempts": 0
      }
    ],
    "definitions": {
      "activationWindowDays": 0,
      "gamificationAvailable": true,
      "inactivityWindowDays": 0
    },
    "metadata": {
      "freshThrough": "2026-01-31T12:00:00.000Z",
      "from": "string",
      "generatedAt": "2026-01-31T12:00:00.000Z",
      "health": "current",
      "metricVersion": 0,
      "source": "string",
      "to": "string"
    },
    "totals": {
      "activationRate": 0,
      "averageQuizScore": 0,
      "certificateDownloads": 0,
      "certificateEarnedRate": 0,
      "certificatesEarned": 0,
      "completionRate": 0,
      "completions": 0,
      "contentResumes": 0,
      "contentStarts": 0,
      "enrollments": 0,
      "inactiveLearners": 0,
      "medianTimeToCompleteSeconds": 0,
      "medianTimeToStartSeconds": 0,
      "quizAttempts": 0,
      "quizStarts": 0,
      "quizSubmissionRate": 0,
      "referenceCompletions": 0,
      "returnAfterInactivityRate": 0,
      "returnedAfterInactivity": 0,
      "reviewParticipants": 0,
      "reviewParticipationRate": 0,
      "sectionCompletions": 0,
      "videoCompletionRate": 0,
      "videoCompletions": 0,
      "videoStarts": 0
    }
  }
}

Daily insights series

GET/insights/series

One data point per UTC calendar day for the chosen metric — the same series the dashboard's Insights charts plot. enrollments pairs new enrollments with completions, quiz tracks attempt volume and mean score, revenue tracks purchases, refunds and the amount collected (minor units, single-currency orgs only — mixed-currency orgs get null amounts, never a cross-currency sum).

Query parameters

metricenumrequired

Which daily series to return.

enrollmentsquizrevenue

fromdate

Window start (UTC day, YYYY-MM-DD). Defaults to 29 days before to.

todate

Window end (UTC day, YYYY-MM-DD, inclusive). Defaults to today.

Responses

200Daily insights series.
400Validation failed or the request body is malformed.
401Missing, invalid or revoked API key.
429Rate limit exceeded (240 reads/min, 60 writes/min per key).
500Unexpected server error.
curl https://api.cursare.com/v1/insights/series \
  --header 'Authorization: Bearer cr_live_…'
{
  "data": {
    "currency": "string",
    "from": "string",
    "metric": "enrollments",
    "points": [
      {
        "completions": 0,
        "date": "string",
        "enrollments": 0
      }
    ],
    "to": "string"
  }
}

A content's insights

GET/contents/{id}/insights

The editor's course-scoped Insights. academic reuses the organization metric definitions and bounded UTC window, including referenced-material activity attributed to the enrolled course. Quiz questions, polls, and review summaries remain detailed complements.

Path parameters

idstring

The content id.

Query parameters

cohortIdstring

Limit academic results to one cohort.

fromdate

Inclusive UTC start. Defaults to 29 days before to. Maximum 366 days.

offerIdstring

Limit results to one offer.

todate

Inclusive UTC end. Defaults to today.

Responses

200A content's insights.
400Validation failed or the request body is malformed.
401Missing, invalid or revoked API key.
404The resource does not exist (or belongs to another org).
429Rate limit exceeded (240 reads/min, 60 writes/min per key).
500Unexpected server error.
curl https://api.cursare.com/v1/contents/{id}/insights \
  --header 'Authorization: Bearer cr_live_…'
{
  "data": {
    "academic": {
      "daily": [
        {
          "averageQuizScore": 0,
          "completions": 0,
          "date": "string",
          "enrollments": 0,
          "quizAttempts": 0
        }
      ],
      "definitions": {
        "activationWindowDays": 0,
        "gamificationAvailable": true,
        "inactivityWindowDays": 0
      },
      "metadata": {
        "freshThrough": "2026-01-31T12:00:00.000Z",
        "from": "string",
        "generatedAt": "2026-01-31T12:00:00.000Z",
        "health": "current",
        "metricVersion": 0,
        "source": "string",
        "to": "string"
      },
      "totals": {
        "activationRate": 0,
        "averageQuizScore": 0,
        "certificateDownloads": 0,
        "certificateEarnedRate": 0,
        "certificatesEarned": 0,
        "completionRate": 0,
        "completions": 0,
        "contentResumes": 0,
        "contentStarts": 0,
        "enrollments": 0,
        "inactiveLearners": 0,
        "medianTimeToCompleteSeconds": 0,
        "medianTimeToStartSeconds": 0,
        "quizAttempts": 0,
        "quizStarts": 0,
        "quizSubmissionRate": 0,
        "referenceCompletions": 0,
        "returnAfterInactivityRate": 0,
        "returnedAfterInactivity": 0,
        "reviewParticipants": 0,
        "reviewParticipationRate": 0,
        "sectionCompletions": 0,
        "videoCompletionRate": 0,
        "videoCompletions": 0,
        "videoStarts": 0
      }
    },
    "learners": {
      "completed": 0,
      "completionRate": 0,
      "enrolled": 0
    },
    "polls": [
      {
        "options": [
          {
            "id": "string",
            "text": "string",
            "votes": 0
          }
        ],
        "pollId": "string",
        "question": "string",
        "total": 0
      }
    ],
    "quiz": {
      "attempts": 0,
      "avgScorePct": 0,
      "questions": [
        {
          "attempts": 0,
          "correctPct": 0,
          "prompt": "string",
          "questionId": "string"
        }
      ]
    },
    "reviews": {
      "average": 0,
      "count": 0
    }
  }
}

A content's sales

GET/contents/{id}/sales

Sales summary for one content, net of refunds: purchase count, revenue in the content's currency (minor units), and the most recent buyers.

Path parameters

idstring

The content id.

Responses

200A content's sales.
401Missing, invalid or revoked API key.
404The resource does not exist (or belongs to another org).
429Rate limit exceeded (240 reads/min, 60 writes/min per key).
500Unexpected server error.
curl https://api.cursare.com/v1/contents/{id}/sales \
  --header 'Authorization: Bearer cr_live_…'
{
  "data": {
    "count": 0,
    "currency": "string",
    "recent": [
      {
        "amount": 0,
        "buyerName": "string",
        "createdAt": "2026-01-31T12:00:00.000Z"
      }
    ],
    "revenue": 0
  }
}

Your privacy choices

The technical Tag Manager container is required to apply your choices. Analytics and marketing cookies and storage remain optional and stay off until you authorize them. Privacy Policy.

Sign-in, security, core functions and consent enforcement.

Audience measurement such as Google Analytics.

Marketing storage, campaign attribution and optional tags.