RAID API
  1. DiveRAID frontend public API
  • DiveRAID frontend public API
    • Search divers
      POST
    • Search instructors
      POST
    • Search dive centers
      POST
    • Search dive centers by country
      GET
  • DiveRAID rest API V1
    • Auth
      • Register a new user
      • Login and receive JWT token
      • Send password reset email
      • Reset password using token
      • Logout and invalidate JWT token
      • Refresh JWT token
      • Verify email address (signed URL)
      • Resend email verification
    • Legacy Auth
      • Legacy login
      • Legacy register
      • Legacy logout
      • Legacy refresh token
      • Legacy reset password
    • Profile
      • Get authenticated user profile
      • Update profile
      • Delete account
      • Update password
      • Update dive center association
    • Diver
      • Courses
        • List active courses
        • List expired courses
        • Get course detail
        • Submit module quiz
        • Get quiz result
        • Submit course exam
        • Get exam result
        • Get skills progress
        • Sign skills (diver)
      • Free Learnings
        • List enrolled free learnings
        • List available free learning courses
        • Enroll in a free learning course
        • Get free learning detail
        • Submit free learning module quiz
        • Get free learning quiz result
      • Certifications
        • List diver certifications
        • Get certification history
        • Get certification quiz result
        • Get certification exam result
        • Get certification skills
      • Dive Logs
        • List dive logs (paginated)
        • Create dive log
        • Get dive log
        • Update dive log
      • Awards
        • List award cards
      • Documents
        • List diver documents
      • Forms
        • List diver forms
      • Medical
        • Get medical questionnaire structure
        • Submit medical questionnaire
      • Store
        • List courses available for purchase
        • Create Stripe payment intent for course
        • Confirm Stripe payment and activate course
        • Get order status
    • Professional
      • Students
        • List students
        • Get student progress
        • Get student quiz result
        • Get student exam result
        • Get student skills progress
        • Sign student skills
      • Certifications
        • List all professional certifications
        • List diver-level certifications
        • List specialty certifications
        • List professional certifications
        • List trainer certifications
        • List examiner certifications
        • Get certification history
        • Get certification quiz result
        • Get certification exam result
        • Get certification skills
      • Classroom
        • List classrooms
        • Get classroom progress (all students)
        • Get classroom student progress
        • Get classroom student quiz result
        • Get classroom student exam result
        • Get classroom student skills
        • Sign classroom student skills
      • Renewals
        • List renewal courses
        • Get renewal progress
        • Submit renewal module quiz
        • Get renewal quiz result
        • Submit renewal exam
        • Get renewal exam result
        • Get renewal skills progress
        • Sign renewal skills
      • Recognitions
        • List recognition courses
      • Dive Logs
        • List student dive logs for a course
        • Get student dive log
        • Sign student dive log
      • Store
        • Create payment intent for student course purchase
        • Confirm student course payment
    • Sync
      • Get sync status
      • Download full course data for offline use
      • Upload offline operations
    • Utility
      • List all countries
      • Get country data
      • Get country divisions (states/provinces)
      • List active dive centers
      • Get dive center details
    • Dive Center
      • Get Dive Center List
      • Get a Dive Center info
    • User
      • Certifications
        • Get User Certifications
        • Get User Certifications Diver
        • Get User Certifications Professional
        • Get Certification Card
      • Get User data
      • Update password
      • Update User Data
      • Update User Dive Center
    • Utilities
      • Get Country List
      • Get Country details
      • Get Country Divisions
  • Schemas
    • Frontend API Schema
      • DiverSearch
    • SuccessResponse
    • ErrorResponse
    • ValidationErrorResponse
    • TokenResponse
    • UserProfile
    • CourseLog
    • CourseLogDetail
    • QuizResult
    • ExamResult
    • SkillProgress
    • DiveLog
    • Certification
    • PaginatedDiveLogs
    • StoreItem
    • PaymentIntentResponse
    • OrderConfirmResponse
    • OrderStatusResponse
    • InstructorSearch
    • DiveCenterSearch
  1. DiveRAID frontend public API

Search divers

Develop Env
https://diveraid.test
Develop Env
https://diveraid.test
POST
https://diveraid.test
/api/v1/diver
FrontendPublicApiKeyDiver
Maintainer:rivalex

POST /api/v1/diver#

Overview#

Searches divers (non-professionals) in the RAID network. Unlike the instructor search, at least one of search or country is required - it is not possible to retrieve a full list of all divers. For divers under 16 years of age, email and mobile are automatically masked.

Authentication#

Type: API Key
Header: token: {your-api-key}

Request#

Method: POST
Path: /api/v1/diver
Content-Type: application/json or application/x-www-form-urlencoded

Body parameters#

ParameterTypeRequiredDescription
searchstringConditionalFree text - searches across: first_name, last_name, full_name, city, email, raid_id
countrystringConditionalISO 3166-1 alpha-2 country code (e.g. IT, ES)
At least one of search or country is required. If neither is provided, the endpoint returns an error response.

Response 200 OK - Results found#

{
  "data": [
    {
      "raid_id": "RAID-IT-98765",
      "first_name": "Giulia",
      "last_name": "Bianchi",
      "age": 28,
      "avatar": "https://s3.amazonaws.com/diveraid/avatars/120.jpg",
      "email": "giulia.bianchi@example.com",
      "country": "Italy",
      "city": "Milan",
      "mobile": "+39 347 9876543",
      "diver_certifications": [
        "Open Water Diver",
        "Advanced Open Water"
      ]
    }
  ],
  "success": true,
  "message": "success",
  "total": 1
}

Response 200 OK - No results#

{
  "data": [],
  "success": true,
  "message": "no results",
  "total": 0
}

Response 200 OK - Missing parameters#

When neither search nor country are provided, the endpoint responds with 200 but success: false:
{
  "success": false,
  "message": "Search query or country is required!"
}

data[] fields#

FieldTypeDescription
raid_idstringDiver's unique RAID identifier
first_namestringFirst name
last_namestringLast name
ageinteger|nullAge calculated from date of birth (null if not available)
avatarstring|nullProfile photo URL
emailstringEmail (masked for minors: gu***@ex*****.com)
countrystringFull country name (e.g. "Italy")
citystring|nullCity
mobilestring|nullPhone number (masked for minors: +39 3** ****543)
diver_certificationsarrayDiver's RAID certifications, sorted by name

Response 401 - Missing or invalid API Key#

{
  "error": "Access Denied!",
  "message": "No API Key provided.",
  "statusCode": 401
}

Minor data protection#

For divers aged under 16, sensitive fields are masked using Str::mask():
email: first 2 characters visible, then ***, domain partially masked
mobile: prefix visible, then ***, last 3 characters visible
This behaviour is automatic and not configurable - it ensures GDPR compliance for minors.

Search examples#

Search by name:
{ "search": "Giulia" }
Filter by country:
{ "country": "IT" }
Combined search:
{ "search": "Bianchi", "country": "IT" }

Notes#

Search is case-insensitive using LIKE %search%.
Results are ordered by full_name ASC.
Unlike the instructor search, does not include pro_certifications, experience, or professional_status.
The mandatory-parameter constraint prevents full database dumps of diver records.

Request

Authorization
API Key
Add parameter in header
token
Example:
token: ********************
or
Query Params

Request Code Samples

Shell
JavaScript
Java
Swift
Go
PHP
Python
HTTP
C
C#
Objective-C
Ruby
OCaml
Dart
R
Request Request Example
Shell
JavaScript
Java
Swift
curl --location --request POST 'https://diveraid.test/api/v1/diver?search=&country=' \
--header 'token: <api-key>'

Responses

🟢200Response OK
application/json

Search results

Bodyapplication/json

Example
{
    "data": [
        {
            "raid_id": "GBXX-123-123",
            "first_name": "Marc",
            "last_name": "Smith",
            "age": 56,
            "avatar": "https://raid-backend/GBXX-123-123.webp",
            "email": "marc.smith@email.com",
            "country": "United Kingdom",
            "city": "London",
            "mobile": "+44xxxxxxxxx",
            "diver_certifications": [
                "Scuba Reboot"
            ]
        }
    ],
    "success": true,
    "message": "success",
    "total": 1
}
🟠401API Key error
🟠422Missing Data
Modified at 2026-04-14 15:41:51
Previous
DiveRAID frontend public API
Next
Search instructors
Built with