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

# Search the VASP Directory

> Paginated search across discoverable Didit customers with Travel Rule enabled, plus VASPs catalogued in the internal counterparty registry. Excludes your own application's profile.

export const AgentPromptAccordion = ({prompt, title = "AI Agent Integration Prompt"}) => {
  const [copied, setCopied] = React.useState(false);
  const handleCopy = e => {
    e.stopPropagation();
    if (!prompt) return;
    navigator.clipboard.writeText(prompt.trim()).then(() => {
      setCopied(true);
      setTimeout(() => setCopied(false), 2000);
    });
  };
  const agents = ["Claude Code", "Codex", "Cursor", "Devin", "Windsurf", "GitHub Copilot"];
  return <div className="didit-agent-card">
      {}
      <div className="didit-agent-titlebar">
        <div className="didit-agent-dots" aria-hidden="true">
          <span className="didit-agent-dot didit-agent-dot-red"></span>
          <span className="didit-agent-dot didit-agent-dot-yellow"></span>
          <span className="didit-agent-dot didit-agent-dot-green"></span>
        </div>
        <span className="didit-agent-filename">{title}</span>
        <button type="button" className={`didit-agent-copy ${copied ? "didit-agent-copy-copied" : ""}`} onClick={handleCopy} title="Copy prompt to clipboard" aria-label={copied ? "Copied!" : "Copy prompt to clipboard"}>
          {copied ? <>
              <svg width="13" height="13" viewBox="0 0 16 16" fill="none">
                <path d="M3 8.5l3.5 3.5L13 4" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" />
              </svg>
              <span>Copied</span>
            </> : <>
              <svg width="13" height="13" viewBox="0 0 16 16" fill="none">
                <rect x="5" y="5" width="9" height="9" rx="1.5" stroke="currentColor" strokeWidth="1.5" />
                <path d="M11 5V3.5A1.5 1.5 0 0 0 9.5 2h-6A1.5 1.5 0 0 0 2 3.5v6A1.5 1.5 0 0 0 3.5 11H5" stroke="currentColor" strokeWidth="1.5" />
              </svg>
              <span>Copy</span>
            </>}
        </button>
      </div>

      {}
      <pre className="didit-agent-body"><code>{prompt.trim()}</code></pre>

      {}
      <div className="didit-agent-footer">
        <span className="didit-agent-footer-label">Paste into</span>
        <div className="didit-agent-chips">
          {agents.map(name => <span key={name} className="didit-agent-chip">{name}</span>)}
        </div>
      </div>
    </div>;
};

<AgentPromptAccordion
  title="VASP Directory Search API Prompt"
  prompt={`Search the VASP directory Didit consults when routing outbound Travel Rule transfers - a combination of discoverable Didit customers and counterparty VASPs catalogued from real activity.

Endpoint:
GET https://verification.didit.me/v3/travel-rule/vasps/?search=<name>

Authentication:
Use the x-api-key header with my Didit API key.

Query parameters:
- search - name fragment to match.
- limit (default 50) / offset - pagination; count/next/previous describe the page window.

What to read from each result:
- name, lei, jurisdiction - the VASP identity.
- is_didit_customer - true for other Didit applications with Travel Rule enabled and is_discoverable: true (reachable on the INTERNAL rail, dd_score always 0); false for counterparty-registry entries with a real assessment.
- dd_status / dd_score / dd_score_breakdown / dd_assessed_at - the due-diligence assessment (higher score = riskier). Breakdown components: licensing, sanctions_pep, country_risk, analytics_risk.
- reachable_rails - which rails can currently reach this VASP (e.g. INTERNAL, TRP, EMAIL).

How entries appear (no pre-seeded global list - the directory grows from activity):
- Didit customers appear automatically when discoverable.
- Inbound/outbound TRP exchanges upsert the counterparty identity and endpoint.
- Sunrise registrations naming originating_vasp add the sender.
- Blockchain-analytics attribution adds the owning VASP of a destination wallet.
- Didit support can catalogue a counterparty proactively.

Your own VASP profile never appears in your own results.

Full guide: /transaction-monitoring/travel-rule#directory.`}
/>


## OpenAPI

````yaml GET /v3/travel-rule/vasps/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: Identity verification API. Authenticate with x-api-key header.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/travel-rule/vasps/:
    get:
      tags:
        - Travel Rule
      summary: Search the VASP directory
      description: >-
        Paginated search across discoverable Didit customers with Travel Rule
        enabled, plus VASPs catalogued in the internal counterparty registry.
        Excludes your own application's profile.
      operationId: listTravelRuleVasps
      parameters:
        - name: search
          in: query
          schema:
            type: string
          description: Case-insensitive substring match on VASP name.
        - name: limit
          in: query
          schema:
            type: integer
            default: 50
            minimum: 1
        - name: offset
          in: query
          schema:
            type: integer
            default: 0
            minimum: 0
      responses:
        '200':
          description: Paginated, name-sorted VASP directory results.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  next:
                    type: string
                    nullable: true
                  previous:
                    type: string
                    nullable: true
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/VaspDirectoryEntry'
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl -X GET
            'https://verification.didit.me/v3/travel-rule/vasps/?search=Bene' \
              -H 'x-api-key: YOUR_API_KEY'
components:
  schemas:
    VaspDirectoryEntry:
      type: object
      properties:
        name:
          type: string
        lei:
          type: string
        jurisdiction:
          type: string
        dd_status:
          type: string
          enum:
            - NOT_STARTED
            - IN_PROGRESS
            - COMPLETED
            - REJECTED
        dd_score:
          type: integer
        reachable_rails:
          type: array
          items:
            type: string
            enum:
              - INTERNAL
              - TRP
              - GTR
              - EMAIL
        is_didit_customer:
          type: boolean
          description: >-
            true for discoverable Didit applications (dd_status is always
            COMPLETED, dd_score always 0 for these); false for internal
            counterparty-registry rows, which carry a real due-diligence status
            and score.
        dd_score_breakdown:
          type: object
          additionalProperties:
            type: integer
          description: >-
            Per-component contributions to dd_score (licensing/registry,
            sanctions/PEP, jurisdiction risk, on-chain analytics risk), all
            derived from checks Didit runs in-house. Empty for Didit-customer
            rows.
        dd_assessed_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            When the due-diligence assessment last ran. Null for Didit-customer
            rows.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key

````