Skip to main content

Crisis Resources

NOPE provides crisis helpline data for 222 countries with 4,700+ resources. Access via the evaluate API or directly via the public resources endpoint.

Basic Resources (Free)

The /v1/resources endpoint requires an API key but is free to use — no balance deduction. Use scope-based filtering to find relevant crisis resources.

# Requires API key (free endpoint)

# Get crisis resources for a country
curl -H "Authorization: Bearer nope_live_xxx" \
  "https://api.nope.net/v1/resources?country=US"

# Filter by service scope
curl -H "Authorization: Bearer nope_live_xxx" \
  "https://api.nope.net/v1/resources?country=US&scopes=suicide,crisis"

# Filter by population
curl -H "Authorization: Bearer nope_live_xxx" \
  "https://api.nope.net/v1/resources?country=GB&populations=lgbtq"

# Only 24/7 services
curl -H "Authorization: Bearer nope_live_xxx" \
  "https://api.nope.net/v1/resources?country=AU&urgent=true"

Response:

{
  "country": "US",
  "resources": [
    {
      "name": "988 Suicide and Crisis Lifeline",
      "phone": "988",
      "chat_url": "https://988lifeline.org/chat",
      "is_24_7": true,
      ...
    }
  ],
  "count": 10
}
ParameterRequiredDescription
countryYesISO country code (e.g., US, GB, AU)
scopesNoWHAT the resource helps with: suicide, domestic_violence, eating_disorder, etc.
populationsNoWHO the resource serves: veterans, lgbtq, youth, etc.
urgentNotrue to return only 24/7 services
limitNoMax resources (default: 10, max: 10)

Related endpoints:

  • GET /v1/resources/smart — AI-ranked resources with natural language query ($0.001/call)
  • GET /v1/resources/:id — single resource by UUID (public, for widget embeds)
  • GET /v1/resources/countries — list all supported countries (public)
  • GET /v1/resources/detect-country — detect country from IP (public)

Single Resource Lookup

Fetch a specific crisis resource by its database UUID. This endpoint is public (no API key required) and is used by the widget for single-resource embeds.

curl "https://api.nope.net/v1/resources/c051c06a-119f-4823-af66-894d9b934b5f"

Returns the resource with computed open_status:

{
  "resource": {
    "id": "c051c06a-119f-4823-af66-894d9b934b5f",
    "name": "988 Suicide & Crisis Lifeline",
    "phone": "988",
    "is_24_7": true,
    "open_status": {
      "is_open": true,
      "message": "Open 24/7",
      "confidence": "high"
    }
  }
}

Via /v1/evaluate

When you call /v1/evaluate and risk is detected, resources are automatically matched and returned in crisis_resources[]. This requires an API key but provides risk-matched resources based on the conversation.

How Matching Works

When risk is detected, NOPE scores and ranks resources based on:

  • Country — resources for the user's location
  • Service scope — suicide, domestic violence, child abuse, etc.
  • Population served — youth, veterans, LGBTQ+, etc.
  • Priority tier — national crisis lines ranked above niche services
  • Availability — 24/7 services prioritized for urgent situations

AI-Ranked Resources (/v1/resources/smart)

For nuanced situations where structured filtering isn't enough, use /v1/resources/smart with a natural language query parameter. An LLM will analyze the situation and rank resources by relevance.

Cost: $0.001 per call (requires balance)

# AI-ranked resources ($0.001 per call)
curl -H "Authorization: Bearer nope_live_xxx" \
  "https://api.nope.net/v1/resources/smart?country=US&query=my%20gay%20teen%20is%20being%20bullied"

Example: For "my gay teen is being bullied", a youth-focused LGBTQ helpline (Trevor Project) ranks higher than a trans-specific line, even though both match the lgbtq scope.

{
  "country": "US",
  "query": "my gay teen is being bullied",
  "ranked": [
    {
      "resource": {
        "name": "The Trevor Project",
        "phone": "1-866-488-7386",
        "chat_url": "https://www.thetrevorproject.org/get-help",
        ...
      },
      "why": "LGBTQ+ youth crisis line specializing in bullying and identity-related distress",
      "rank": 1
    },
    {
      "resource": { "name": "Crisis Text Line", ... },
      "why": "Text-based support accessible to teens who may prefer texting over calling",
      "rank": 2
    },
    {
      "resource": { "name": "988 Suicide and Crisis Lifeline", ... },
      "why": "General crisis support if the situation escalates",
      "rank": 3
    }
  ],
  "scopes_requested": ["lgbtq"]
}

Parameters:

ParameterRequiredDescription
countryYesISO country code
queryYesNatural language description (max 500 characters)
scopesNoPre-filter by scope before ranking
limitNoMax resources (default: 10, max: 10)

Each result includes a why field explaining the ranking. Response is not cached (dynamic LLM ranking).

Try it free: Use /v1/try/resources/smart to test without an API key (rate-limited, max 5 results).

Resource Object

Each resource in crisis_resources[] contains:

{
  // Identity
  name: "988 Suicide and Crisis Lifeline",
  name_local: "いのちの電話",  // Native script name
  description: "Free and confidential support...",

  // Contact methods (use whichever is present)
  phone: "988",
  sms_number: "741741",
  sms_body: "HOME",
  text_instructions: "Text HOME to 741741",
  chat_url: "https://...",
  whatsapp_url: "https://wa.me/...",
  email: "...",
  website_url: "https://...",

  // Availability
  availability: "24/7",
  is_24_7: true,
  languages: ["en", "es"],
  open_status: {            // Computed open/closed status
    is_open: true,          // null if hours unknown
    message: "Open 24/7",   // Human-readable status
    confidence: "high"      // high | medium | low | none
  },

  // Classification
  type: "crisis_line" | "text_line" | "chat_service" | ...,
  resource_kind: "helpline" | "reporting_portal" | ...,
  service_scope: ["suicide", "crisis", "mental_health"],
  population_served: ["general", "youth"],
  priority_tier: "primary_national_crisis"
}

Rendering Resources

Resources have multiple contact methods. Render whichever fields are present:

for (const resource of crisis_resources) {
  console.log(resource.name);

  // Phone
  if (resource.phone) {
    // Create tel: link
    console.log(`Call: ${resource.phone}`);
  }

  // SMS
  if (resource.sms_number) {
    const smsUrl = resource.sms_body
      ? `sms:${resource.sms_number}?body=${encodeURIComponent(resource.sms_body)}`
      : `sms:${resource.sms_number}`;
    console.log(`Text: ${smsUrl}`);
  } else if (resource.text_instructions) {
    console.log(`Text: ${resource.text_instructions}`);
  }

  // Chat
  if (resource.chat_url) {
    console.log(`Chat: ${resource.chat_url}`);
  }

  // WhatsApp
  if (resource.whatsapp_url) {
    console.log(`WhatsApp: ${resource.whatsapp_url}`);
  }
}

Priority Tiers

Resources are classified by priority tier for ranking:

TierDescriptionExample
primary_national_crisisMain national crisis line988, Samaritans
secondary_national_crisisOther well-known national linesCrisis Text Line
specialist_issue_crisisIssue-specific servicesDV hotlines, eating disorder lines
population_specific_crisisServices for specific groupsVeterans line, Trans lifeline
support_info_and_advocacyInformation and support servicesNAMI, mental health orgs
emergency_servicesEmergency numbers911, 999, 112

Service Scopes

The scopes parameter filters by what the resource helps with. Use these to find resources for specific issues. Invalid values return a 400 error.

Mental Health & Crisis

suicide self_harm mental_health crisis emergency psychosis trauma anxiety depression emotional_distress loneliness

Violence & Abuse

domestic_violence sexual_assault stalking hate_crime forced_marriage fgm

Safeguarding

child_abuse child_sexual_abuse child_safety child_neglect child_exploitation elder_abuse vulnerable_adults safeguarding

Online Exploitation

online_exploitation ncii cyberbullying online_harassment sextortion online_grooming

Trafficking

human_trafficking forced_labour modern_slavery

Substance Use

substance_use alcohol alcohol_addiction drug_addiction gambling

Eating Disorders

eating_disorder

Reproductive & Maternal

pregnancy_loss unplanned_pregnancy abortion postpartum_depression postpartum_psychosis perinatal_mental_health birth_trauma maternal

Grief & Bereavement

bereavement suicide_loss child_loss homicide_loss

Population-Specific Services

lgbtq transgender conversion_therapy_survivor veterans military_sexual_trauma first_responder youth disability refugee indigenous

Social & Economic

homelessness housing debt unemployment legal_aid food_insecurity bullying runaway_youth

See the full list of 93 scopes in the API reference.

Populations

The populations parameter filters by who the resource serves. Use these to find resources for specific groups. Invalid values return a 400 error.

general youth children elderly seniors women men lgbtq transgender mothers new_parents parents family indigenous maori aboriginal migrant_workers veterans disabled learning_disabilities professionals students farmers

Combining Scopes and Populations

Both parameters can be used together with AND logic:

  • ?scopes=suicide&populations=veterans — suicide resources for veterans
  • ?scopes=domestic_violence&populations=lgbtq — DV resources for LGBTQ+ community
  • ?scopes=eating_disorder&populations=youth — eating disorder resources for young people

Using the Widget URL

Instead of rendering resources yourself, you can use the pre-built widget. When severity is not none, the response includes a widget_url:

// Show widget when risk detected
if (result.summary.speaker_severity !== 'none') {
  const iframe = document.createElement('iframe');
  iframe.src = 'https://widget.nope.net/resources?country=US&scopes=suicide,crisis';
  iframe.width = '100%';
  iframe.height = '400';
  container.appendChild(iframe);
}

See Widget Integration for full details.

Next Steps