Vertueal Docs
Authentic Profile

Developer Getting Started

Quickstart guide for integrating Authentic Profile APIs and OAuth 2.0 services.

Developer Getting Started

Welcome to the Authentic Profile developer ecosystem. This guide walks you through registering as a developer, obtaining API credentials, and making your first request to verify a profile.


1. Provisioning API Credentials

To interact with Authentic Profile APIs or initiate OAuth 2.0 flows on behalf of users, you must register a developer application:

  1. Sign in to your Authentic Profile Dashboard.
  2. Navigate to Developer Settings > API Keys.
  3. Create a new application and specify your:
    • Application Name: (e.g., Acme Talent Portal)
    • Redirect URIs: (e.g., https://app.acme.com/api/auth/callback)
  4. Securely store your generated Client ID and Client Secret.

Keep Client Secrets Confidential

Your client_secret is used to sign token exchange requests and must never be exposed in client-side code, mobile binaries, or public Git repositories.


2. Authentication Methods

Authentic Profile supports two authentication schemes:

SchemeHeader FormatIntended Consumer
API Key Secretx-api-key: <YOUR_API_KEY>Server-to-server data lookups
OAuth 2.0 BearerAuthorization: Bearer <ACCESS_TOKEN>User-delegated profile verification

3. Querying a Public Verified Profile

You can query any public verified profile using standard HTTP GET requests:

const PROFILE_USERNAME = "alex-mercer";
const AUTHENTIC_API_URL = "https://authenticprofile.com/api";

async function fetchVerifiedProfile(username: string) {
  const response = await fetch(`${AUTHENTIC_API_URL}/profiles/${username}`, {
    headers: {
      "Accept": "application/json",
      "x-api-key": process.env.AUTHENTIC_API_KEY!,
    },
  });

  if (!response.ok) {
    throw new Error(`Failed to fetch profile: ${response.statusText}`);
  }

  const result = await response.json();
  return result.data;
}

// Example Execution
fetchVerifiedProfile("alex-mercer")
  .then((data) => console.log("Profile Data:", data))
  .catch((err) => console.error("Error:", err));

4. Standard Response Format

All API responses return a uniform JSON envelope:

{
  "success": true,
  "data": {
    "username": "alex-mercer",
    "personalInfo": {
      "firstName": "Alex",
      "lastName": "Mercer",
      "title": "Principal Architect",
      "avatar": "https://kfysrcdqszgkmusaiigh.supabase.co/storage/v1/object/public/files/..."
    },
    "verificationStatus": "verified",
    "workExperience": [
      {
        "company": "Tech Corp",
        "position": "Staff Engineer",
        "verified": true
      }
    ]
  },
  "error": null,
  "meta": {
    "requestId": "req_9921b7fc",
    "timestamp": "2026-09-19T01:30:00Z"
  }
}

5. Rate Limits & Headers

Every API response includes rate limiting headers:

X-RateLimit-Limit: 120
X-RateLimit-Remaining: 118
X-RateLimit-Reset: 1726703400

If you exceed the rate limit, the service returns HTTP 429 Too Many Requests along with a Retry-After: <seconds> header.

On this page