API guide

Connect any online course platform, learning system or certificate store to SSIP Verify. Send each certificate once and it becomes searchable and verifiable by anyone who needs to check competency.

1. Get your key

Log in to SSIP Verify, open API & Integrations and create a key for your system. The full key is shown only once, so store it securely. Send it on every request in the x-api-key header. Keys can be revoked at any time.

2. Test your connection

A quick check that your key works. It returns your source name and how many people and certificates you already have on the platform.

curl https://ssipverify.splashscreen.uk/api/public/v1/ping \
  -H "x-api-key: YOUR_API_KEY"

# {"ok":true,"source":"Acme Training","workers":124,"certificates":318}

3. Send a certificate

Post one certificate at a time whenever someone completes training. Sending the same certificate number again updates the existing record rather than duplicating it, so it is safe to re-send.

curl -X POST https://ssipverify.splashscreen.uk/api/public/v1/certificates \
  -H "x-api-key: YOUR_API_KEY" \
  -H "content-type: application/json" \
  -d '{
    "worker": {
      "external_ref": "EMP-12345",
      "first_name": "John",
      "last_name": "Smith",
      "role_title": "Operative"
    },
    "course": { "course_code": "FIRSTAID", "title": "First Aid at Work" },
    "certificate": {
      "certificate_number": "ACME-2026-001",
      "issued_on": "2026-01-10",
      "expires_on": "2028-01-10",
      "evidence_url": "https://your-site.example/certificates/abc123"
    }
  }'
worker.external_ref

Your own reference for the person (payroll, learner or membership number). This is how certificates from different sources are matched to the same person.

worker.first_name / last_name

The person's name, used for the public competency search.

worker.email / phone

Optional contact details, used for expiry reminders.

worker.role_title / team

Optional job title and team, shown on readiness views.

worker.employee_reference

Optional second reference of your own.

worker.status

active or inactive — use inactive for leavers.

worker.reminders_opt_in

true or false — whether this person receives expiry reminders.

course.course_code

A short code for the course. Reused codes update the same course.

course.title

The course name shown on the certificate record.

certificate.certificate_number

Your unique certificate reference. Sending it again updates the same record instead of creating a duplicate.

certificate.issued_on / expires_on

Dates in YYYY-MM-DD. The expiry date drives expiry warnings and reminders.

certificate.evidence_url

A link to the original certificate on your site, shown alongside the SSIP Verify version.

certificate.file_base64

Optional: send the certificate file itself (PDF or image) instead of a link.

certificate.verified_by_rt

Mark the certificate as issued by an accredited training provider.

certificate.status

Optional override: valid, expiring_soon, expired or revoked.

4. Send many at once

Backfilling history or running a nightly catch-up? Send up to 100 certificates in a single call and get a per-certificate result back.

curl -X POST https://ssipverify.splashscreen.uk/api/public/v1/certificates \
  -H "x-api-key: YOUR_API_KEY" \
  -H "content-type: application/json" \
  -d '{ "certificates": [ { "worker": {...}, "course": {...}, "certificate": {...} },
                          { "worker": {...}, "course": {...}, "certificate": {...} } ] }'

# Up to 100 per call. The reply lists created, updated and failed items.

5. Manage people

Register learners, employees or members before they hold anything, keep their details and reminder preferences in step with your own system, and mark leavers as inactive.

# Add or update a person on their own (no certificate yet)
curl -X POST https://ssipverify.splashscreen.uk/api/public/v1/workers \
  -H "x-api-key: YOUR_API_KEY" -H "content-type: application/json" \
  -d '{ "external_ref": "EMP-12345", "first_name": "John", "last_name": "Smith",
        "email": "john@acme.example", "role_title": "Operative", "team": "North",
        "reminders_opt_in": true }'

# Or send up to 200 at once: { "workers": [ ... ] }
# List the people you have registered
curl "https://ssipverify.splashscreen.uk/api/public/v1/workers?limit=200" -H "x-api-key: YOUR_API_KEY"
# Mark someone as a leaver
curl -X DELETE "https://ssipverify.splashscreen.uk/api/public/v1/workers?external_ref=EMP-12345" \
  -H "x-api-key: YOUR_API_KEY"

6. Review, revoke or remove

List everything your system has sent, and withdraw a certificate if it is cancelled or was issued in error.

# List everything you have sent (optionally for one person)
curl "https://ssipverify.splashscreen.uk/api/public/v1/certificates?mine=1&external_ref=EMP-12345" \
  -H "x-api-key: YOUR_API_KEY"

# Revoke a certificate (keeps the record, marks it revoked)
curl -X DELETE "https://ssipverify.splashscreen.uk/api/public/v1/certificates?certificate_number=ACME-2026-001" \
  -H "x-api-key: YOUR_API_KEY"

# Remove it completely
curl -X DELETE "https://ssipverify.splashscreen.uk/api/public/v1/certificates?certificate_number=ACME-2026-001&mode=delete" \
  -H "x-api-key: YOUR_API_KEY"

7. Verify a certificate

Anyone can check a single certificate number and get back whether it is valid, expiring soon or expired, along with the course, the person and who issued it. No key needed.

curl https://ssipverify.splashscreen.uk/api/public/v1/verify/ACME-2026-001

8. Search by name

Look up everything a person holds across every connected source — the same results the public search page shows.

curl "https://ssipverify.splashscreen.uk/api/public/v1/certificates?name=John%20Smith"

Everything the WordPress plugin does, you can do here

The plugin is simply a wrapper around this API. Building your own integration gives you the same abilities:

Send a certificate the moment someone completes their training.

Run a nightly catch-up that re-sends everything safely, in batches.

Create and update the people behind the certificates, including contact details and reminder preferences.

Attach the original certificate — either a link to your own page or the file itself.

Set how long a certificate stays valid by sending your own expiry date.

Test the connection before you go live, and see everything you have sent.

Withdraw or delete a certificate you no longer stand behind.

Good practice

Always send your own person reference so certificates from different systems group under one person.

Keep certificate numbers stable — they are the key used to update records.

Send an expiry date wherever one applies, so expiry warnings and reminders work.

Re-send a certificate whenever anything changes; updates are handled for you.

Never expose your key in browser or app code — send it from your server.

Using WordPress and Tutor LMS?

You don't need to write any code — our free plugin does all of this for you.

Get the plugin