API reference

    Base URL https://api.mecore.ai/api/v1/org. Every request needs Authorization: Bearer <your API key>.

    Download openapi.json
    get
    /me

    Verify an API key

    Cheap ping to confirm a key is valid.

    Responses

    • 200 — Valid key
    • 401 — Missing, invalid or revoked key
    • 429 — Rate limited — 120 requests per minute, per key.
    curl -X GET "https://api.mecore.ai/api/v1/org/me" \
      -H "Authorization: Bearer $MECORE_API_KEY" \
      -H "Content-Type: application/json"
    get
    /cores

    List cores

    Parameters

    • page (query)
    • limit (query)
    • query (query) — Synonym-aware search over name, tags and style attributes

    Responses

    • 200 — Paginated cores
    • 401 — Missing, invalid or revoked key
    • 429 — Rate limited — 120 requests per minute, per key.
    curl -X GET "https://api.mecore.ai/api/v1/org/cores" \
      -H "Authorization: Bearer $MECORE_API_KEY" \
      -H "Content-Type: application/json"
    post
    /cores

    Create a core

    Ingests the images synchronously and returns 202 with a core id and a job id; the taste profile generates in the background. Limited to 5 core creations per minute per organization, shared with the MCP create_core tool.

    Responses

    • 202 — Accepted — taste generating
    • 400 — Validation failed, or an image could not be fetched
    • 401 — Missing, invalid or revoked key
    • 413 — Request body too large
    • 429 — Rate limited — either 5 core creations per minute per organization, or 120 requests per minute per key. The message states how many seconds to wait. No images are fetched and nothing is created on a rejected request.
    curl -X POST "https://api.mecore.ai/api/v1/org/cores" \
      -H "Authorization: Bearer $MECORE_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"name":"Summer looks","imageUrls":["https://cdn.example.com/1.jpg"]}'
    get
    /cores/{id}

    Get a core

    Parameters

    • id (path)

    Responses

    • 200 — The core and its generation status
    • 401 — Missing, invalid or revoked key
    • 404 — Not found, or belongs to another organization
    • 429 — Rate limited — 120 requests per minute, per key.
    curl -X GET "https://api.mecore.ai/api/v1/org/cores/{id}" \
      -H "Authorization: Bearer $MECORE_API_KEY" \
      -H "Content-Type: application/json"
    patch
    /cores/{id}

    Rename a core or replace its images

    Renames a core and/or replaces its images. Replacing images deletes the objects behind the images they replaced and starts a new taste generation job; a rename alone does neither.

    Parameters

    • id (path)

    Responses

    • 200 — Updated. When images were replaced, the response carries a new jobId plus imagesPurged and imagesFailed for the objects that were removed.
    • 400 — Validation failed, or an image could not be fetched
    • 401 — Missing, invalid or revoked key
    • 404 — Not found
    • 413 — Request body too large
    • 429 — Rate limited — 120 requests per minute, per key.
    curl -X PATCH "https://api.mecore.ai/api/v1/org/cores/{id}" \
      -H "Authorization: Bearer $MECORE_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"name":"Winter looks"}'
    delete
    /cores/{id}

    Delete a core

    Deletes the core and removes its images from object storage in the same request. There is no retention window. Recorded in the organization audit log.

    Parameters

    • id (path)

    Responses

    • 200 — Deleted. imagesPurged and imagesFailed report how many image objects were removed. A non-zero imagesFailed means an object could not be removed and may still be reachable at its URL; there is no automatic retry.
    • 401 — Missing, invalid or revoked key
    • 404 — Not found
    • 429 — Rate limited — 120 requests per minute, per key.
    curl -X DELETE "https://api.mecore.ai/api/v1/org/cores/{id}" \
      -H "Authorization: Bearer $MECORE_API_KEY" \
      -H "Content-Type: application/json"
    post
    /cores/{id}/products

    Search products for a core

    Finds catalogue products matching the core's taste profile. Returns the 10 best matches as a flat list — there is no pagination and no limit parameter. The core must have a coreStatus of "ready"; searching one that is still generating returns 409. Limited to 20 searches per minute per organization, shared with the MCP search_products tool.

    Parameters

    • id (path)

    Responses

    • 200 — Up to 10 matching products, best match first.
    • 400 — Validation failed — for example minPrice greater than maxPrice.
    • 401 — Missing, invalid or revoked key
    • 404 — Not found
    • 409 — The core has no ready taste profile yet. Poll GET /cores/{id} until coreStatus is "ready", then retry.
    • 429 — Rate limited — 120 requests per minute per key, or 20 product searches per minute per organization.
    curl -X POST "https://api.mecore.ai/api/v1/org/cores/{id}/products" \
      -H "Authorization: Bearer $MECORE_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"query":"winter coats","gender":"female","maxPrice":800}'
    get
    /jobs/{jobId}

    Poll a taste generation job

    Parameters

    • jobId (path)

    Responses

    • 200 — Job state — jobStatus is processing, ready or failed
    • 401 — Missing, invalid or revoked key
    • 404 — Not found
    • 429 — Rate limited — 120 requests per minute, per key.
    curl -X GET "https://api.mecore.ai/api/v1/org/jobs/{jobId}" \
      -H "Authorization: Bearer $MECORE_API_KEY" \
      -H "Content-Type: application/json"