Error codes

Every failure returns the same envelope from REST and MCP. Branch on the code, show or follow the hint, and retry only when retryable is true.

The DailyGoal API is not available on the Free plan. It works with a paid plan or during a free trial. See plans.

Error envelope

REST responses carry the envelope as the JSON body with the status below. MCP tool calls return it as structuredContent with isError: true. docsUrl links to the code's section on this page, and details never contains credentials.

json
{
  "error": {
    "code": "validation_failed",
    "message": "The request input is not valid.",
    "hint": "Fix the fields named in details, then send the request again.",
    "retryable": false,
    "details": {
      "fields": [
        {
          "path": "date",
          "message": "Expected a string matching the pattern ^\\d{4}-\\d{2}-\\d{2}$, got \"14/09/2026\""
        }
      ]
    },
    "docsUrl": "https://www.dailygoal.fit/developers/errors#validation_failed"
  }
}

Codes

unauthorized

HTTP 401 · Not retryable

Send your API token as `Authorization: Bearer <token>`. Create or regenerate it in DailyGoal settings.

insufficient_scope

HTTP 403 · Not retryable

This credential cannot perform this operation.

origin_not_allowed

HTTP 403 · Not retryable

The DailyGoal API does not accept browser requests from this origin. Call it from a server, script or AI agent instead.

misdirected_request

HTTP 421 · Not retryable

Send API requests to https://api.dailygoal.fit/v1.

subscription_required

HTTP 403 · Not retryable

API access needs a DailyGoal subscription or free trial. Resubscribe at the URL in details; your token starts working again straight away.

rate_limited

HTTP 429 · Retryable

Wait for the number of seconds in the Retry-After header, then retry.

validation_failed

HTTP 400 · Not retryable

Fix the fields named in details, then send the request again.

not_found

HTTP 404 · Not retryable

Check the id. Ids that belong to another user are also reported as not found.

conflict

HTTP 409 · Not retryable

Read the current state, then retry with updated input.

idempotency_conflict

HTTP 409 · Not retryable

Use a new Idempotency-Key for a request with a different body.

limit_exceeded

HTTP 409 · Not retryable

Remove an existing item before adding another.

calculated_goal_readonly

HTTP 409 · Not retryable

This goal is calculated from logged data. Log the underlying food, steps or workout instead.

internal_error

HTTP 500 · Retryable

Retry after a short wait. If it keeps failing, contact DailyGoal support.