> ## Documentation Index
> Fetch the complete documentation index at: https://docs.transparencyhubnetwork.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Create contact

> Non-member contacts.

Non-member contacts. Filter by `group` (exact group name) or `search` (name, email or phone). Create needs a name and an email or phone; emails are unique per chapter (409 on duplicates).

**Required scope:** `contacts:write`

```json Request theme={null}
{
  "name": "Grace Hopper",
  "email": "grace@example.org",
  "group_name": "Prospects"
}
```

```json 201 theme={null}
{
  "status": "success",
  "data": {
    "id": 301,
    "name": "Grace Hopper",
    "email": "grace@example.org",
    "phone": "+2348000000000",
    "class_of": "1996",
    "group_name": "Prospects",
    "createddate": "2026-09-01T00:00:00Z",
    "lastmodifieddate": null
  }
}
```


## OpenAPI

````yaml POST /v1/contacts
openapi: 3.0.3
info:
  title: Transparency Hub Public API
  version: 1.7.0
  description: Key-authenticated REST API for association and chapter integrations.
servers:
  - url: https://api.transparencyhubnetwork.ai/api
  - url: https://testapi.transparencyhubnetwork.ai/api
    description: Test
security:
  - ApiKeyAuth: []
  - BearerAuth: []
paths:
  /v1/contacts:
    post:
      summary: Create contact
      description: Requires scope `contacts:write`.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContactCreate'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                      - success
                  data:
                    $ref: '#/components/schemas/Contact'
        '400':
          $ref: '#/components/responses/ValidationError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/RateLimited'
components:
  schemas:
    ContactCreate:
      type: object
      required:
        - name
      properties:
        chapter_id:
          type: integer
        name:
          type: string
        email:
          type: string
          description: email or phone is required; email must be unique in the chapter
        phone:
          type: string
        class_of:
          type: string
        group_name:
          type: string
    Contact:
      type: object
      properties:
        id:
          type: integer
          nullable: true
        name:
          type: string
          nullable: true
        email:
          type: string
          nullable: true
        phone:
          type: string
          nullable: true
        class_of:
          type: string
          nullable: true
        group_name:
          type: string
          nullable: true
        createddate:
          type: string
          format: date-time
          nullable: true
        lastmodifieddate:
          type: string
          format: date-time
          nullable: true
    Error:
      type: object
      required:
        - status
        - code
        - message
      properties:
        status:
          type: string
          enum:
            - error
        code:
          type: string
        message:
          type: string
        details:
          type: object
  responses:
    ValidationError:
      description: validation_error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Missing or invalid API key
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Forbidden:
      description: insufficient_scope or chapter_forbidden
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    RateLimited:
      description: rate_limited; see Retry-After
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
    BearerAuth:
      type: http
      scheme: bearer

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.