Skip to main content
POST
/
step1
/
storeskills
/
store
curl -X POST https://api.yourservice.com/api/v1/step1/storeskills/store \
  -H "Content-Type: application/json" \
  -H "x-api-key: your_api_key_here" \
  -d '{
    "recordVerificationId": "ver_live_abc123",
    "recordUserId": "usr_live_xyz789",
    "skills": [
      {
        "skillId": "skill_001",
        "proofUrls": [
          "https://github.com/user/project",
          "https://portfolio.example.com/react"
        ]
      },
      {
        "skillId": "skill_002",
        "proofUrls": []
      }
    ]
  }'
{
  "success": true,
  "data": {
    "recordVerificationId": "ver_live_abc123",
    "skills": [
      {
        "skillId": "skill_001",
        "proofUrls": ["https://github.com/user/project"],
        "totalUrls": 1
      },
      {
        "skillId": "skill_002",
        "proofUrls": [],
        "totalUrls": 0
      }
    ],
    "totalProcessed": 2
  },
  "message": "Skill verifications replaced successfully"
}

Overview

Stores (or fully replaces) the skills a student wants verified. If skills were previously stored for this session, they are deleted and replaced with the new set. Runs conflict and duplicate checks before storing.
Requires a valid session token via the x-api-key session middleware.

Request Body

recordVerificationId
string
required
Verification session ID returned from POST /verify.
recordUserId
string
required
Internal user ID returned from POST /verify.
skills
array
required
Array of skill objects to verify. Must not be empty.

Conflict & Duplicate Rules

CaseConditionResult
1Same source + same endorsement typeBlockedDUPLICATE_SKILLS_IN_BUNDLE
2Same source + different endorsement typeAllowed
3Different source + same endorsement typeAllowed
4More than 10 unique skills per sourceBlockedMAX_SKILLS_PER_SOURCE
A failed assessment can be retried. Only a passed (locked) assessment blocks re-verification of the same skill and source.

Response

success
boolean
true on success.
data
object

Error Codes

CodeHTTPDescription
MISSING_VERIFICATION_ID400recordVerificationId not provided
MISSING_SKILLS400skills is missing, not an array, or empty
MISSING_SKILL_ID400One or more skill objects missing a skillId
MAX_SKILLS_PER_SOURCE409Would exceed the 10-skill limit for this source
DUPLICATE_SKILLS_IN_BUNDLE409Skills already verified for this source under same endorsement type
ASSESSMENT_ALREADY_PASSED409Skill already assessment-verified and passed
INTERNAL_ERROR500Unexpected server error
curl -X POST https://api.yourservice.com/api/v1/step1/storeskills/store \
  -H "Content-Type: application/json" \
  -H "x-api-key: your_api_key_here" \
  -d '{
    "recordVerificationId": "ver_live_abc123",
    "recordUserId": "usr_live_xyz789",
    "skills": [
      {
        "skillId": "skill_001",
        "proofUrls": [
          "https://github.com/user/project",
          "https://portfolio.example.com/react"
        ]
      },
      {
        "skillId": "skill_002",
        "proofUrls": []
      }
    ]
  }'
{
  "success": true,
  "data": {
    "recordVerificationId": "ver_live_abc123",
    "skills": [
      {
        "skillId": "skill_001",
        "proofUrls": ["https://github.com/user/project"],
        "totalUrls": 1
      },
      {
        "skillId": "skill_002",
        "proofUrls": [],
        "totalUrls": 0
      }
    ],
    "totalProcessed": 2
  },
  "message": "Skill verifications replaced successfully"
}