Skip to content

REST API /v1/endpoints ignores computeType=CPU / cpuFlavorIds / vcpuCount - always creates a GPU endpoint #545

Description

@gregmillard00

Summary

Creating a Serverless endpoint via the REST API (POST https://rest.runpod.io/v1/endpoints) with an explicit CPU configuration does not actually create a CPU endpoint - the resulting endpoint always comes back (and behaves, per the console UI) as a GPU endpoint with the default GPU type list, even though the request included the documented CPU fields.

Steps to reproduce

  1. Create a template with "category": "CPU" (this part works fine and is reflected correctly on the template).
  2. Create an endpoint via POST /v1/endpoints with a body like:
{
  "name": "my-cpu-endpoint",
  "templateId": "<template id from step 1>",
  "computeType": "CPU",
  "cpuFlavorIds": ["cpu3c", "cpu5c"],
  "vcpuCount": 2,
  "workersMin": 0,
  "workersMax": 2,
  "idleTimeout": 5,
  "executionTimeoutMs": 900000,
  "scalerType": "QUEUE_DELAY",
  "scalerValue": 4
}
  1. Inspect the response (or GET /v1/endpoints/{id} afterward).

Expected

The response/endpoint should reflect computeType: "CPU" and the requested cpuFlavorIds/vcpuCount, and workers should actually be provisioned as CPU workers (confirmed via the console's Serverless tab).

Actual

  • The response never includes computeType or cpuFlavorIds at all (both are documented fields in the OpenAPI schema at https://rest.runpod.io/v1/openapi.json, under EndpointCreateInput/Endpoint).
  • It instead always includes the default GPU fields (gpuCount: 1, gpuTypeIds: [...default list of ~7 GPU models...]).
  • Confirmed via the RunPod console (Serverless tab) that the resulting endpoint is genuinely running GPU workers, not CPU - this isn't just a cosmetic response-serialization quirk.

Tried this 3 times (fresh template + endpoint each time, varying the field set slightly, e.g. with/without vcpuCount), same result every time.

Other observations

  • PATCH /v1/endpoints/{id} doesn't accept computeType at all ("key provided in request body which is not in input schema: 'computeType'" isn't literally the error I saw for that field, but it's absent from EndpointUpdateInput in the OpenAPI spec) - so there's no way to fix an existing endpoint's compute type via API either; it seems compute type can only be intended to be set at creation time, and creation isn't honoring it.
  • The only place I could find CPU endpoint creation actually documented as working is the console UI ("Create a New Endpoint" > "Select the CPU option") - the announcement blog post for the Serverless CPU feature doesn't mention API usage at all.
  • workersMax on PATCH does work correctly, for what it's worth - just the compute-type-related fields are the issue.

Ask

Either fix the REST API to actually honor computeType/cpuFlavorIds/vcpuCount on endpoint creation, or (if this is intentionally console-only for now) document that clearly so people don't spend time on it assuming it's an API oversight rather than a known limitation.

Environment

  • Using requests directly against https://rest.runpod.io/v1/... (not the runpod Python SDK's own endpoint-management helpers, though I'd guess those hit the same backend).
  • Observed 2026-07-18.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions