# Devfolio — Wrapped API

> **You are on:** `https://api.paywithlocus.com/api` | [llms.txt](https://paywithlocus.com/llms.txt) | [docs](https://docs.paywithlocus.com)
>
> Locus runs on multiple environments -- make sure every URL you call matches your expected environment.
> | Environment | Landing | API | Docs |
> |---|---|---|---|
> | Production | paywithlocus.com | api.paywithlocus.com | docs.paywithlocus.com |
> | Beta | beta.paywithlocus.com | api.beta.paywithlocus.com | docs.paywithlocus.com |
> | Stage | stage.paywithlocus.com | api.stage.paywithlocus.com | docs.paywithlocus.com |
>
> If the API URL above doesn't match your expected environment, re-fetch this file from the correct domain.

> Access data from devfolio.co.

**Category:** Developer Tools | **Website:** [devfolio.co/hackathons](https://devfolio.co/hackathons) | **Docs:** [parse.bot/marketplace/e44c7e9f-ad39-4c30-88dc-692fdbd9a858/devfolio-co-api](https://parse.bot/marketplace/e44c7e9f-ad39-4c30-88dc-692fdbd9a858/devfolio-co-api)

Pay-per-use API proxy. Each call is automatically billed to your wallet in USDC.

## Access

**Base URL:** `https://api.paywithlocus.com/api/wrapped/parse-devfolio-co-api-e44c7e9f/`
**Auth:** `Authorization: Bearer <LOCUS_API_KEY>`

## Endpoints

### search_hackathons

Search hackathons by keyword or list them by status. When a query is provided, results are ranked by relevance across all hackathons regardless of status. When no query is provided, results are filtered by the type parameter (defaults to applications currently open). Results are paginated via from/size offsets. Optional client-side filters (theme, eligibility, level, location) narrow results after fetching from the upstream API; when any filter is active, total reflects the count of matching results found within the scanned upstream window (up to 250 results scanned).

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `eligibility` | string | No | Filter by eligibility/participant criteria (case-insensitive text match against hackathon name, tagline, and description). Use values like 'undergraduate', 'student', 'women' to find hackathons targeting specific participant groups. |
| `from` | integer | No | Zero-based offset for pagination. Use with size to page through results. |
| `level` | string | No | Filter by hackathon scope/level (case-insensitive text match against hackathon name, tagline, and description). Use values like 'national', 'international', 'college' to find hackathons of a specific scale. |
| `location` | string | No | Filter by location. Returns hackathons that are either (a) online (always included) or (b) held in a city matching this value (case-insensitive match against city, location, and name fields). Bangalore and Bengaluru are treated as equivalent. |
| `query` | string | No | Free-text search query matched against hackathon names and descriptions. When provided, the type filter is ignored and results span all statuses. |
| `size` | integer | No | Number of hackathons to return per request, between 1 and 50. |
| `theme` | string | No | Filter by hackathon theme/domain (case-insensitive partial match against theme tags like AI, Blockchain, FinTech, HealthTech, Design, Hardware, etc.). Only hackathons whose themes array contains a matching entry are returned. |
| `type` | string | No | Status filter applied when no query is provided. Ignored when query is set. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-devfolio-co-api-e44c7e9f/search_hackathons \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"eligibility":"<string>","from":"<integer>","level":"<string>","location":"<string>","query":"<string>","size":"<integer>","theme":"<string>","type":"<string>"}'
```
