# Phdportal — 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.

> Search and discover PhD programmes across 19,000+ opportunities worldwide from PhDportal.com, filtering by your research interests and preferred locations. Access detailed programme information including specifics about each doctoral offering to help you find the perfect fit for your academic goals.

**Category:** Education | **Website:** [phdportal.com/](https://phdportal.com/) | **Docs:** [parse.bot/marketplace/da4d5af4-3c8e-4976-8f67-1878a01b624b/phdportal-com-api](https://parse.bot/marketplace/da4d5af4-3c8e-4976-8f67-1878a01b624b/phdportal-com-api)

Pay-per-use API proxy for Locus Pro. Each call burns credits from your workspace balance.

## Access

**Base URL:** `https://api.paywithlocus.com/api/wrapped/credits/phdportal/`
**Auth:** `Authorization: Bearer <LOCUS_CREDITS_SECRET_KEY>` (an `lcr_` secret key or a scoped `lcac_` agent credential)
**Required header:** `Idempotency-Key: <fresh UUID per call>`. A retry with the same key replays the stored result without a new charge.
**Response:** the provider response after any endpoint-specific normalization. `X-Locus-Credits-Charged` carries the charge and `X-Locus-Credits-Balance` the remaining balance. Insufficient credits return `402` before the provider is called.
**Pricing:** estimated costs below are USD. Locus debits the credit equivalent at your workspace rate.

Full call contract: https://docs.paywithlocus.com/api-reference/introduction

> Using a Pay With Locus wallet key (`claw_` prefix)? Wallet routes are documented separately: https://docs.paywithlocus.com/wrapped-apis/for-agents

## Endpoints

### Get programme

Retrieve detailed information about a single PhD programme by its numeric ID. Returns programme title, degree, description, university, location, start dates, tuition fee, discipline IDs, and country ID. The programme ID is obtained from search_programmes results.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `programme_id` | string | Yes | Numeric programme ID (e.g. '429318'). Obtained from search_programmes results. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/phdportal/get-programme \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"programme_id":"<string>"}'
```

### Search programmes

Full-text search across PhD programmes worldwide. Supports filtering by discipline ID and country ID. Results are ordered by relevance (default sort). Each result includes programme title, university, location, tuition fees, and duration.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `country` | string | No | Numeric country ID to filter results (e.g. '30' for United Kingdom, '1' for Netherlands). Obtained from search results or get_programme country_id field. |
| `discipline` | string | No | Numeric discipline ID to filter results (e.g. '281' for Computer Sciences). Obtained from get_programme discipline_ids field. |
| `limit` | integer | No | Number of results to return per page (1-50). |
| `offset` | integer | No | Number of results to skip for pagination. |
| `query` | string | No | Free-text search query matching programme titles and descriptions (e.g. 'computer science', 'machine learning'). |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/credits/phdportal/search-programmes \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"country":"<string>","discipline":"<string>","limit":"<integer>","offset":"<integer>","query":"<string>"}'
```

## Next steps

- [All wrapped API providers](https://paywithlocus.com/wapi/index.md): pick another provider.
- [Find and call tools](https://paywithlocus.com/agent/tools.md): price ceilings, async results, and errors.
- [Credits and billing](https://paywithlocus.com/agent/billing.md): what a call costs and how to add credits.
- [Agent docs index](https://paywithlocus.com/agent/index.md): every Locus agent page.