Facebook Pixel
Fit'DistanceDocumentation
Ouvrir l'app

Cours

1 route

GET /courses/progress

Progress of each student in each course they have an access row for: lesson completions and quiz attempts. A student of a course shared with everyone gets a row when they first open it. An undone completion leaves no trace.

  • Périmètre courses:read
  • 1 crédit
  • Lecture
  • Stable

Paramètres

NomTypeDescription
limitqueryinteger1–200, default 50
cursorquerystringOpaque cursor: next_cursor of the previous page.
sincequerydate-timeISO 8601. Returns the objects with updated_at >= since.
include_deletedquerybooleandefault false
student_idqueryinteger≥ 1
curl "https://api.fitdistance.io/api/partner/v1/courses/progress?limit=50" \
  -H "Authorization: Bearer fd_live_xxxxxxxx"
200 · une page de CourseProgress
{
  "data": [
    {
      "id": 4821,
      "course_id": "7c1d1e2a-9b3f-4c5d-8e6f-1a2b3c4d5e6f",
      "course_title": "string",
      "student_id": 4821,
      "granted_at": "2026-10-24T09:12:00Z",
      "revoked_at": "2026-10-24T09:12:00Z",
      "is_active": true,
      "lessons_count": 3,
      "completed_lessons_count": 3,
      "last_completed_at": "2026-10-24T09:12:00Z",
      "quiz_attempts_count": 3,
      "quiz_passed_count": 3,
      "completed_lessons": [
        {
          "lesson_id": "7c1d1e2a-9b3f-4c5d-8e6f-1a2b3c4d5e6f",
          "completed_at": "2026-10-24T09:12:00Z"
        }
      ],
      "quiz_attempts": [
        {
          "id": "7c1d1e2a-9b3f-4c5d-8e6f-1a2b3c4d5e6f",
          "lesson_id": "7c1d1e2a-9b3f-4c5d-8e6f-1a2b3c4d5e6f",
          "score_percent": 80,
          "passed": true,
          "attempted_at": "2026-10-24T09:12:00Z"
        }
      ],
      "updated_at": "2026-10-24T09:12:00Z"
    }
  ],
  "next_cursor": null,
  "has_more": false
}
403 · SCOPE_MISSING
{
  "error": {
    "name": "PARTNER_API",
    "message": "SCOPE_MISSING"
  }
}

200 · une page de CourseProgress

NomTypeDescription
id requisintegerThe id of the access row of the student to the course.
course_id requisstring
course_title requisstring
student_id requisinteger
granted_at requisdate-time
revoked_at requisdate-time | null
is_active requisbooleanFalse once the access is revoked.
lessons_count requisintegerThe visible lessons of the course.
completed_lessons_count requisintegerThe visible lessons of the course the student completed.
last_completed_at requisdate-time | null
quiz_attempts_count requisinteger
quiz_passed_count requisinteger
completed_lessons requisCourseLessonCompletion[]The completions of the visible lessons. Empty when deleted.
quiz_attempts requisCourseQuizAttempt[]The quiz attempts, oldest first, without the answers. Empty when deleted.
updated_at requisdate-timeThe latest change of the access, a revocation, a completion or a quiz attempt included. Also moves when the course changes (its title) or is deleted, when one of its lessons changes, is hidden or deleted, and when a quiz is deleted.
deleted_atdate-time | nullPresent when include_deleted is true: the deletion of the course.

Erreurs

StatutCodeQuand
400VALIDATIONParamètres ou corps invalides.facturé
401UNAUTHORIZEDClé absente, inconnue ou révoquée.non facturé
402CREDITS_EXHAUSTEDPlus de crédits ce mois-ci et aucune réserve.non facturé
403SCOPE_MISSINGLa clé n'a pas le périmètre demandé.non facturé
403PLAN_NOT_ELIGIBLETon offre n'ouvre pas l'API.non facturé
429RATE_LIMITEDTrop d'appels : 10 par seconde, 300 par minute, 60 écritures et 20 suppressions par minute.non facturé