You need an API key before the first call. Create an API key, then come back.
You need an API key before the first call. Create an API key, then come back.
export PHI_API=https://phi.dynotx.com
export PHI_KEY=ak_your_key
curl -s "$PHI_API/v1/quota" -H "x-api-key: $PHI_KEY"An organization API key (ak_…) from design.dynotx.com → your account → API keys. Personal keys are refused, since Phi has to know which workspace to bill.
JOB_ID=$(curl -s -X POST "$PHI_API/v1/jobs" \
-H "x-api-key: $PHI_KEY" -H "content-type: application/json" \
-d '{ "job_type": "ESMFOLD", "name": "quickstart-trp-cage",
"inputs": { "sequences": ["NLYIQWLKDGGPSSGRPPPS"] } }' | jq -r .job_id)
echo $JOB_IDThe response carries the job id and a status_url before anything runs.
until [ "$(curl -s "$PHI_API/v1/jobs/$JOB_ID" -H "x-api-key: $PHI_KEY" | jq -r .status)" = "COMPLETED" ]; do sleep 15; doneStatuses: PENDING, RUNNING, COMPLETED, FAILED, CANCELLED, ERROR.
URL=$(curl -s "$PHI_API/v1/runs/$JOB_ID/artifacts?suffix=.pdb" -H "x-api-key: $PHI_KEY" | jq -r '.[0].url')
curl -sL "$URL" -o quickstart-trp-cage.pdbArtifacts come back as signed HTTPS URLs that expire after an hour.
76.9mean pLDDT for Trp-cage, 20 residues, on esmfold_3B_v1
No sequence loaded.
Recorded 2026-09-29 on production, job 99450bcc.