Public mini-resume API

A small, public JSON view of my current work, selected projects, and professional profiles. It uses the JSON Resume schema and the same facts as this site.

Read the mini-resume · OpenAPI 3.1 schema · Agent guidance

When to use it

Use the API to answer questions about my current role, link to my public profiles, or summarize my game projects. This is a selected public overview, so it does not include my full career history, private contact details, or unpublished work. For game platforms and store links, use the Zorse game catalog API.

Quickstart

No account, API key, payment, SDK, or setup is required. Try the real endpoint directly; it is read-only and there is no separate sandbox.

curl --fail https://austingreco.com/api/resume

With native JavaScript fetch in Node.js, or in a browser on this site:

const response = await fetch('https://austingreco.com/api/resume');
if (!response.ok) throw new Error(`HTTP ${response.status}`);
const resume = await response.json();
console.log(resume.basics.name, resume.basics.label);

Request and response

GET /api/resume returns HTTP 200 with Content-Type: application/json; charset=utf-8. HEAD returns the resource headers without a body. Every Accept header receives JSON here. Query parameters are ignored; there are no filters, pagination, writes, or webhooks.

  • $schema identifies the pinned JSON Resume schema.
  • basics contains my name, current title, site URL, summary, public city, and professional profiles.
  • work contains selected current work, with employer, position, URL, and a short summary.
  • projects contains selected projects with a name, description, and URL.
{
  "$schema": "https://unpkg.com/@jsonresume/schema@1.3.1/schema.json",
  "basics": {
    "name": "Austin Greco",
    "label": "Staff Software Engineer",
    "url": "https://austingreco.com/",
    "summary": "Software engineer working on Uber’s Michelangelo machine learning platform and independent game maker behind Zorse.",
    "location": {
      "city": "San Francisco",
      "region": "CA",
      "countryCode": "US"
    },
    "profiles": [
      {
        "network": "GitHub",
        "username": "austingreco",
        "url": "https://github.com/austingreco"
      },
      {
        "network": "LinkedIn",
        "username": "austingreco",
        "url": "https://www.linkedin.com/in/austingreco"
      }
    ]
  },
  "work": [
    {
      "name": "Uber",
      "position": "Staff Software Engineer",
      "url": "https://www.uber.com/",
      "summary": "Working on Michelangelo, Uber’s machine learning platform."
    }
  ],
  "projects": [
    {
      "name": "Zorse",
      "description": "Independent games.",
      "url": "https://zorse.io/"
    },
    {
      "name": "Bunny Hop",
      "description": "A pixel platformer with charge-and-release jumps, combos, and a growing cast of characters.",
      "url": "https://zorse.io/games/bunny-hop/"
    },
    {
      "name": "Tap Bat",
      "description": "A Halloween arcade game with one-touch flight through a spooky pixel cave.",
      "url": "https://zorse.io/games/tap-bat/"
    },
    {
      "name": "Yodoku",
      "description": "A calm, offline logic game with 9,999 lantern puzzles and no guessing.",
      "url": "https://zorse.io/games/yodoku/"
    }
  ]
}

Errors and recovery

GET and HEAD requests to unknown /api/* paths return HTTP 404 with JSON headers. GET includes the following error body; HEAD has no body. Use the stable error code and resolution hint to recover.

{
  "error": "api_route_not_found",
  "message": "Unknown API route. GET /api/resume returns the public mini-resume.",
  "status": 404,
  "resolution": "Use GET /api/resume. Read /api for examples or /openapi.json for the API schema.",
  "documentation": "https://austingreco.com/api",
  "openapi": "https://austingreco.com/openapi.json"
}

The site supports read-only access. Hosting rejects unsupported methods such as POST outside this API contract; the current deployment returns an HTML 404. Clients should check the status and Content-Type before parsing an error. A normal missing website page keeps its HTML or negotiated Markdown 404.

Updates, retries, and compatibility

The resource is published with the site and may be cached by the CDN. There is no application-specific request quota or live update stream. Reuse a fetched copy where practical. GET is safe to retry after a network failure or temporary server error; honor Retry-After if the hosting service sends it. Fix an unknown route instead of retrying a 404.

The current public endpoint is unversioned. New optional fields may be added, so clients should ignore fields they do not recognize. A breaking change will use a new documented endpoint, with migration guidance here before the existing endpoint is retired.

For readable website pages, request their canonical URL with Accept: text/markdown. The public mini-resume and OpenAPI description remain JSON.