Developer API

ODUDE API

Public APIs

Profile
Owner Check
# Profile Public API

This API endpoint allows 3rd party developers to retrieve public profile data for any Odude ID. The data is returned in a structured JSON format, making it easy to integrate Odude profiles into external applications.

## Endpoint

```
GET https://name.odude.com/api/{odude_id}
```

Replace `{odude_id}` with the specific Odude ID you wish to query (e.g., `demo@me`).

## Request Example

```bash
curl https://name.odude.com/api/demo@me
```

## Response Format

The API returns a JSON object containing the profile's basic information, attributes, and detailed records.

### Example Response

```json
{
  "name": "demo@me",
  "description": "This is a demo account showcasing how an Odude profile looks.",
  "image": "https://storage.googleapis.com/odudename.appspot.com/demo@me.jpg",
  "attributes": [
    {
      "trait_type": "domain",
      "value": "demo@me"
    },
    {
      "trait_type": "level",
      "value": 2
    },
    {
      "trait_type": "length",
      "value": 7
    }
  ],
  "records": {
    "1": {
      "type": "name",
      "value": "Demo Account"
    },
    "2": {
      "type": "email",
      "value": "demo@email.com"
    },
    "3": {
      "type": "website",
      "value": "https://yoursite.com"
    },
    "4": {
      "type": "phone",
      "value": "+12334567910,+15544662299"
    },
    "5": {
      "type": "tg_bot",
      "value": ""
    },
    "6": {
      "type": "social",
      "value": {
        "tiktok": "tiktok",
        "discord": "discord",
        "twitter": "twitter",
        "youtube": "youtube",
        "facebook": "fb",
        "linkedin": "linkedin",
        "telegram": "telegram",
        "instagram": "insta"
      }
    },
    "7": {
      "type": "link",
      "value": {
        "Link No.1": "https://link1.com",
        "Link No.2": "https://link2.com"
      }
    },
    "8": {
      "type": "crypto",
      "value": {
        "btc": "bc1qx4qym8fxemdsc6s67y9gnnzh6a83q8mueclj8a",
        "eth": "0x68DAe1a6168a124Bc7F41a2Da924290085a678F8",
        "sol": "HhQ1EsQ4eNFS2zhbGcvEgAV7rK9nna3RwcNfSVL2szhb"
      }
    },
    "9": {
      "type": "notes",
      "value": {
        "Note No.1": "This document contains sample notes and may include bank details.",
        "Note No.2": "1234 Lone Star Ave, Austin, TX 78701, USA"
      }
    },
    "20": {
      "type": "img",
      "value": {
        "img1": "https://storage.odude.com/images/img1_demo@me_1767345793157.png",
        "img2": "https://storage.odude.com/images/img2_demo@me_1767345814410.png"
      }
    },
    "50": {
      "type": "web_url",
      "value": "https://name.odude.com/profile/demo@me"
    },
    "51": {
      "type": "web3_url",
      "value": ""
    }
  }
}
```

## Data Schema

### Root Fields

| Field | Type | Description |
| :--- | :--- | :--- |
| `name` | string | The unique Odude ID (e.g., `user@me`). |
| `description` | string | A short biography or description of the profile. |
| `image` | string | URL to the profile's primary avatar image. |
| `attributes` | array | Metadata traits (e.g., domain name, account level). |
| `records` | object | Comprehensive dictionary of user-defined records, indexed by numeric IDs. |

### Attributes Example
Attributes follow the standard NFT metadata format:
- `trait_type`: The category of metadata (e.g., `level`, `length`).
- `value`: The actual value for that trait.

### Records Breakdown
The `records` object is a dictionary where each entry contains a `type` and a `value`. **Developers should iterate through the records and look for the specific `type` string** (e.g., `"type": "social"`) rather than relying on the numeric keys, as those keys may vary or change in the future.

| Type | Description |
| :--- | :--- |
| `name` | The display name of the user. |
| `email` | Contact email address. |
| `website` | Personal or professional website URL. |
| `phone` | Comma-separated list of phone numbers. |
| `tg_bot` | Telegram Bot username/link. |
| `social` | Object containing social media handles (TikTok, Discord, Twitter, etc.). |
| `link` | Object containing custom "Featured Links" with labels. |
| `crypto` | Object containing cryptocurrency wallet addresses (BTC, ETH, SOL). |
| `notes` | Object containing custom text notes or addresses. |
| `img` | Object containing additional profile gallery images. |
| `web_url` | Direct URL to the Odude profile web page. |
| `web3_url` | URL to the Web3 version of the profile (if available). |

## Integration Tips

1. **Locating Data**: Always search for data by its `type` field within the `records` object. For example, to find social media links, find the record where `"type": "social"`.
2. **Caching**: Since profile data doesn't change every second, it's recommended to cache the response for a few minutes to improve your app's performance.
3. **Social Icons**: Use the keys in the `social` record value object to map to your application's social icons.
4. **Image Fallbacks**: If the `image` field is empty or fails to load, consider using a default placeholder avatar.
5. **Phone Numbers**: The `phone` type returns a comma-separated string. You may need to `split(',')` it to display individual numbers.

## Support

For further assistance with API integration, please contact the Odude developer support team.
# Owner Check API

This API endpoint allows 3rd party developers to verify if a specific email address owns or created a particular Odude name (e.g., `demo@me`). This is useful for authentication, authorization, or verifying identity across external applications.

## Endpoint

```
GET https://name.odude.com/api/owner-check
```

## Query Parameters

| Parameter | Type | Required | Description |
| :--- | :--- | :--- | :--- |
| `email` | string | Yes | The email address to check for ownership. |
| `name` | string | Yes | The Odude name to verify (e.g., `user@domain`). |

## Request Example

```bash
curl "https://name.odude.com/api/owner-check?email=test@gmail.com&name=demo@me"
```

## Response Format

The API returns a JSON object indicating whether the email is the verified owner or creator of the name.

### Success Response (Owner Found)

```json
{
  "hasCreated": true,
  "email": "test@gmail.com",
  "name": "demo@me"
}
```

### Success Response (Not Owner)

```json
{
  "hasCreated": false,
  "email": "test@gmail.com",
  "name": "demo@me"
}
```

### Error Response (Invalid Parameters)

```json
{
  "error": "Both email and name parameters are required"
}
```

## Ownership Logic

A user is considered the "owner" if they meet **either** of the following criteria:
1. **Namespace Owner**: They own the Top Level Name (the domain part after the `@`).
2. **Specific Creator**: They are the specific individual who created the Odude name (the `profile_email` matches).

## Security & Rate Limiting

- **Rate Limiting**: To ensure service stability, this endpoint is rate-limited (typically 10 requests per minute per IP).
- **Sanitization**: All inputs are sanitized to prevent injection attacks.
- **Validation**: The API validates that the `email` is in a correct format and the `name` follows the `name@domain` structure.

## Integration Tips

1. **Authentication**: Use this API to allow users to "Sign In with Odude" by verifying they control the Odude name they claim to own.
2. **Verification**: When displaying an Odude ID in your app, you can use this endpoint to add a "Verified" badge if the logged-in user's email matches the name owner.
3. **Case Sensitivity**: The API handles case-insensitive comparisons for both emails and names for consistent results.

## Support

For further assistance with API integration, please contact the Odude developer support team.

© 2025 ODude.com