API reference

Every operation of the REST API (v1.0.0-rc.40, 118 operations), generated from docs/openapi.json and docs/API-REFERENCE.md. Envelope, amounts, Idempotency-Key and versioning: see Errors and the tools reference for the MCP mapping of most of these calls.

Download OpenAPI

Stable (102)

#GET /v1/me

PATCH tylko Owner: {name?, timezone?, base_currency?, locale?, onboarding_step?: {key:"agent"|"integrations", status:"skipped"}}, §15.5a; ręczne `done` oraz klucze `identity`/`billing` → `400 validation_error`

Access
owneragent
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#PATCH /v1/me

PATCH tylko Owner: {name?, timezone?, base_currency?, locale?, onboarding_step?: {key:"agent"|"integrations", status:"skipped"}}, §15.5a; ręczne `done` oraz klucze `identity`/`billing` → `400 validation_error`

Access
owneragent
Body
UpdateMeInput
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/fx/rates

kursy użyte przez system; Owner i agenci z `finances:observe`

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/businesses

KONTRAKT §9

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#POST /v1/businesses

KONTRAKT §9

Access
owner
Body
CreateBusinessInput
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/businesses/{id}

KONTRAKT §9

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#PATCH /v1/businesses/{id}

KONTRAKT §9

Access
owner
Body
UpdateBusinessInput
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/businesses/{id}/projects

KONTRAKT §9

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#POST /v1/businesses/{id}/projects

KONTRAKT §9

Access
owner
Body
CreateProjectInput
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/projects/{id}

KONTRAKT §9

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#PATCH /v1/projects/{id}

KONTRAKT §9

Access
owner
Body
UpdateProjectInput
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/businesses/{id}/financial-summary

KONTRAKT §9

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/businesses/{id}/subscriptions

KONTRAKT §9

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/businesses/{id}/forecast

KONTRAKT §9

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/businesses/{id}/ads

owner-level: ten sam kształt + `business_id` na każdym account

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/ads

owner-level: ten sam kształt + `business_id` na każdym account

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/businesses/{id}/project-health

KONTRAKT §9

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/businesses/{id}/saas-metrics

1.0.0-rc.3: SaasMetrics z `subscription_change` klientów; Backend B7-23; scope finances:observe

Access
owneragent
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/businesses/{id}/context

KONTRAKT §9

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/personal/financial-summary

KONTRAKT §9

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/personal/forecast

KONTRAKT §9

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/personal/subscriptions

KONTRAKT §9

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/overview

metryki top-level, upcoming, alerty

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/free-capital

KONTRAKT §9

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/forecast

cały owner

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/coverage

KONTRAKT §9

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/daily-brief

KONTRAKT §9

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/events

KONTRAKT §9

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/events/{id}

KONTRAKT §9

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#POST /v1/expenses

KONTRAKT §9

Access
owner
Body
CreateExpenseInput
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#POST /v1/recurring-expenses

KONTRAKT §9

Access
owner
Body
CreateRecurringExpenseInput
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#POST /v1/planned-expenses

KONTRAKT §9

Access
owner
Body
CreatePlannedExpenseInput
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#POST /v1/revenues

KONTRAKT §9

Access
owner
Body
CreateRevenueInput
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/subscriptions

KONTRAKT §9

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#POST /v1/subscriptions

KONTRAKT §9

Access
owner
Body
CreateSubscriptionInput
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/subscriptions/{id}

KONTRAKT §9

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#PATCH /v1/subscriptions/{id}

KONTRAKT §9

Access
owner
Body
UpdateSubscriptionInput
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#PUT /v1/subscriptions/{id}/allocations

pełna lista, Σ=10000 bps

Access
owner
Body
PutAllocationsInput
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/subscriptions/{id}/capacity

KONTRAKT §9

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#PUT /v1/subscriptions/{id}/capacity

KONTRAKT §9

Access
owner
Body
PutCapacityInput
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/budget-reservations

KONTRAKT §9

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#POST /v1/budget-reservations

KONTRAKT §9

Access
owner
Body
CreateReservationInput
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#POST /v1/budget-reservations/{id}/release

KONTRAKT §9

Access
owner
Body
ReleaseReservationInput
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#POST /v1/cash-snapshots

Owner; 0.7.1: także z integracji przez `EventSink.snapshot`, patrz §9 „Salda bankowe"

Access
owner
Body
CreateCashSnapshotInput
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/agents

KONTRAKT §9

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#POST /v1/agents

KONTRAKT §9

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/approvals

tylko Owner; approve body: {decision_note?, params_override?}; `?kind=request|write` na liście

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/approvals/{id}

tylko Owner; approve body: {decision_note?, params_override?}; `?kind=request|write` na liście

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#POST /v1/approvals/{id}/approve

tylko Owner; approve body: {decision_note?, params_override?}; `?kind=request|write` na liście

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#POST /v1/approvals/{id}/reject

tylko Owner; approve body: {decision_note?, params_override?}; `?kind=request|write` na liście

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#POST /v1/approvals/{id}/dismiss

tylko Owner; approve body: {decision_note?, params_override?}; `?kind=request|write` na liście

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#POST /v1/agent-decisions

KONTRAKT §9

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#POST /v1/ad-budget-changes

= propose_ad_budget_change; scope `ads`, min. `recommend`; przy `execute` w limitach: zapis planu + Approval auto-approved z `approval_id` w `limit_checked`; rc.36: przy zamkniętej bramce zapisu albo niepodłączonej platformie zatwierdzenie zapisuje plan z `platform_applied=false` zamiast `409`, KONTRAKT-API §2

Access
owneragent
Body
CreateAdBudgetChangeInput
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/goals

MVP: zawsze `[]`

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#POST /v1/goals

§2.17-2.18

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#POST /v1/permission-requests

KONTRAKT §9

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/audit

KONTRAKT §9

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/integrations

bez auth, 0.8.1

Access
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#POST /v1/integrations/{provider}/connect

bez auth, 0.8.1

Access
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#POST /v1/integrations/{provider}/sync

bez auth, 0.8.1

Access
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/integrations/catalog

bez auth, 0.8.1

Access
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/public/integrations

bez auth, 0.8.1

Access
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#PATCH /v1/integrations/{id}

rc.32; tylko Owner; jedyne pole credentials zmienialne bez ponownego connect, scalane z zapisanym wariantem; dozwolone dla `stripe`/`paddle`/`lemonsqueezy`/`dodo`, inny provider lub inne pole → `400 validation_error {reason:"credentials_invalid"}`; odpowiedź bez sekretu, `credentials.updated_at` zmienione

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#DELETE /v1/integrations/{id}

Owner cofa dostęp po stronie Google/Meta/Stripe; UI powinien to napisać

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#POST /v1/webhooks/{provider}

podpis weryfikowany; bez Idempotency-Key, dedup po external_id; provider ∈ stripe (Stripe-Signature) | meta_ads (X-Hub-Signature-256) | google_ads (relay HMAC) | paddle (Paddle-Signature) | lemonsqueezy (X-Signature, HMAC-SHA256) | dodo (Standard Webhooks: webhook-id, webhook-timestamp, webhook-signature)

Access
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#POST /v1/webhooks/generic/{integration_id}

1.0.0-rc.8, R-129; PUBLICZNY co do Bearer, autoryzacja przez podpis: `X-Operlance-Signature: sha256=<HMAC-SHA256(raw body, secret integracji)>` + `X-Operlance-Timestamp` (tolerancja 5 min, jak Google Ads relay); `integration_id` = integracja `provider="generic"` utworzona przez Ownera (`POST /v1/integrations/generic/connect` → `{integration_id, secret}`, sekret pokazany raz, przechowywany jak inne `credentials_enc`, §2.20); body `{ events?: NormalizedEvent[], signals?: IntegrationSignal[] }` (co najmniej jedno niepuste, oba zod z core, max 500 elementów łącznie); trafia przez `EventSink.ingest`/`.signal` jak każdy adapter, z wymuszonym `source.type=IMPORT` i `source.integration_id=:integration_id` niezależnie od tego, co przyśle klient; odpowiedź jak `ingest`/`signal` połączona: `{ inserted, deduped, rejected[], signals_accepted, signals_deduped }`; zły podpis lub nieznane `integration_id` → 401, bez zapisu

Access
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#POST /v1/waitlist

PUBLICZNY, patrz „Waitlist"

Access
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/waitlist

tylko Owner; paginacja jak wszędzie, csv = całość

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/notifications

Owner; §2.15

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#PATCH /v1/notifications/{id}

Owner; §2.15

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#POST /v1/notifications/read-all

Owner; §2.15

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/me/notification-preferences

Owner; §2.15

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#PATCH /v1/me/notification-preferences

Owner; §2.15

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#PUT /v1/me/notification-webhook

Owner; §2.15

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/plan

Owner; §2.16; checkout/webhook billing, miejsce, bez implementacji

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#POST /v1/plan

Owner; §2.16; checkout/webhook billing, miejsce, bez implementacji

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/plan/upgrade-preview

Owner; §2.16; checkout/webhook billing, miejsce, bez implementacji

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/goals/{id}

§2.17-2.18

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#PATCH /v1/goals/{id}

§2.17-2.18

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#DELETE /v1/goals/{id}

§2.17-2.18

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#POST /v1/goal-proposals

§2.17-2.18

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/decision-outcomes

§2.17-2.18

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/passport-templates

0.6.1; §2.7-2.8

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#POST /v1/imports

0.6.1; §9 „Importy"

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/imports/{id}

0.6.1; §9 „Importy"

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#POST /v1/imports/{id}/confirm

0.6.1; §9 „Importy"

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/imports/presets

0.6.1; §9 „Importy"

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#POST /v1/integrations/google_ads/connect

KONTRAKT §9

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/integrations/{id}/accounts

1.0.0-rc.26; tylko Owner; `provider=google_ads`, od rc.36 także `meta_ads` (inny provider → `400 validation_error {reason:"provider_unsupported"}`); integracja musi mieć `status=connected` (inaczej `409 state_conflict {reason:"not_connected"}`). Wywołuje Google Ads `listAccessibleCustomers` na zapisanym `refresh_token` (bez cache, limit ogólny §9) i zwraca `{ data: [{ customer_id: string (10 cyfr bez myślników), name?: string }] }`; `name` = `descriptive_name` konta, pomijane gdy Google go nie zwróci. Służy pickerowi w panelu po OAuth, gdy callback zostawił `customer_id: null`; wybór zapisuje `PATCH /v1/integrations/:id {customer_id}` (Backend odrzuca `customer_id` spoza tej listy: `400 validation_error {reason:"customer_id_not_accessible"}`). Błąd Google/sieci → `502 upstream_error`; odwołany token → `409 state_conflict {reason:"reauth_required"}`. **`meta_ads` (rc.36, Integrator):** `{ data: [{ account_id: string /* same cyfry, bez prefiksu "act_" (pole account_id z GET /me/adaccounts; id z act_ zostaje wewnętrzne) */, name?: string, currency?: string }] }` na zapisanym `access_token`; `PATCH /v1/integrations/:id {ad_account_id}` przyjmuje obie formy (z `act_` i bez), zapisuje cyfry. Błędy jak dla Google: `409 not_connected`, `409 reauth_required` (Meta `OAuthException` code 190), `502 upstream_error` z `details` = `{stage, meta_status (HTTP), meta_error_code (np. 190), meta_error_subcode? (np. 463 token wygasł, 460 zmiana hasła), meta_message, meta_fbtrace_id}`, wszystkie opcjonalne, te same zasady co `google_*` z rc.31 (tylko gdy Meta odpowiedziała, przy błędzie sieci `{stage:"network"}`, zero tokenów)

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#POST /v1/integrations/meta_ads/connect

KONTRAKT §9

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/integrations/meta_ads/callback

KONTRAKT §9

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#POST /v1/auth/verify

§2.19; magic-link PUBLICZNY

Access
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#POST /v1/auth/logout

§2.19; magic-link PUBLICZNY

Access
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#POST /v1/auth/register

1.0.0-rc.39; §2.19 logowanie hasłem; PUBLICZNE, bez Idempotency-Key; register zawsze 202, login koperta jak verify

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#POST /v1/auth/login

1.0.0-rc.39; §2.19 logowanie hasłem; PUBLICZNE, bez Idempotency-Key; register zawsze 202, login koperta jak verify

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#PATCH /v1/me/password

1.0.0-rc.39; tylko Owner, bez Idempotency-Key; §2.19

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/auth/google

1.0.0-rc.24, R-169; §2.19a; PUBLICZNE, tożsamość Ownera, osobny flow od R-121/§2.20 danych reklamowych

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#POST /v1/auth/google/callback

1.0.0-rc.24, R-169; §2.19a; PUBLICZNE, tożsamość Ownera, osobny flow od R-121/§2.20 danych reklamowych

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/me/sessions

Owner; §2.19

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#POST /v1/me/sessions/{id}/revoke

Owner; §2.19

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#POST /v1/me/sessions/revoke-others

Owner; §2.19

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

Experimental (16)

Shape may still change between minor contract versions; agents should tolerate new optional fields.

#GET /v1/agents/economics

0.7.1, spec §32: Owner wszystkie, agent własne

Access
owneragent
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/agents/{id}/economics

0.7.1, spec §32: Owner wszystkie, agent własne

Access
owneragent
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/agents/me/economics

0.7.1, spec §32: Owner wszystkie, agent własne

Access
owneragent
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/agents/{id}

KONTRAKT §9

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#PATCH /v1/agents/{id}

KONTRAKT §9

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#POST /v1/agents/{id}/rotate-token

KONTRAKT §9

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#POST /v1/agents/{id}/revoke

KONTRAKT §9

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/agents/{id}/passport

KONTRAKT §9

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#PUT /v1/agents/{id}/passport

KONTRAKT §9

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/agents/me

0.6.1; §2.7-2.8

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#POST /v1/agents/{id}/passport/from-template

0.6.1; §2.7-2.8

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#POST /v1/simulations

0.7.0; bez Idempotency-Key, `finances:observe`+`forecast:observe`; body = SimulationInput; koperta z coverage

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#POST /v1/ask

KONTRAKT §9

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#POST /v1/data-requests

0.7.0; agent; → Approval 202, action connect_integration|provide_data

Access
owneragent
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/decisions/{id}/review

0.7.0; DecisionOutcome; Owner i agent-autor

Access
owneragent
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error

#GET /v1/integrations/google_ads/callback

0.6.1, rozszerzone 1.0.0-rc.17/rc.18/rc.19; OAuth redirect; bez Bearer, bez ciasteczka (API nigdy nie dotyka cookie panelu, §9). CSRF pilnuje WYŁĄCZNIE podpis `state`: powstaje tylko przy uwierzytelnionym `POST .../connect` (Bearer), więc `state.owner_id`/`state.business_id` SĄ już zweryfikowaną tożsamością i wyborem Ownera, żaden dodatkowy cross-check z sesją nie jest potrzebny ani możliwy. Weryfikacja `state`: podpis + `iat` w oknie 10 min; zły/wygasły `state` → 302 do panelu z `?integration=google_ads&status=error`; sukces: wymiana `code` na tokeny u Google (server-to-server, `GOOGLE_ADS_CLIENT_ID/SECRET`), następnie **jedno wywołanie Google Ads `listAccessibleCustomers`** tym `refresh_token`, **NIGDY fallback na env `GOOGLE_ADS_CUSTOMER_ID`** dla połączenia live (ten env jest wyłącznie dla `INTEGRATIONS_MODE=mock`/dev, §2.20; użycie go dla realnego Ownera czytałoby/zmieniało cudze konto Ads): dokładnie 1 dostępny customer → `customer_id` ustawiane automatycznie w `GoogleAdsCredential`; 0 lub >1 → `customer_id: null`, Owner wybiera przez `PATCH /v1/integrations/:id {customer_id}` (lista do wyboru: `GET /v1/integrations/:id/accounts`, rc.26; pole `available_customer_ids` NIE istnieje); zapis `GoogleAdsCredential` przez `CredentialStore.put` (§2.20), `Integration` upsert `owner_id=state.owner_id, business_id=state.business_id (może być null), provider=google_ads, status=connected`, 302 do panelu z `?integration=google_ads&status=connected`; każda próba odczytu/zapisu `/ads` na integracji z `customer_id=null` → `409 state_conflict` z `details.reason="customer_id_missing"` (wzorzec jak `write_disabled`, §2.12); `business_id` w `state` jest zawsze ustawiony (od rc.28 wymagany przy connect); wiersze historyczne z `business_id=null` (sprzed rc.28) działają dalej i są podpinane przez `PATCH /v1/integrations/:id {business_id}` (Owner only, biznes musi należeć do Ownera, inaczej `400 validation_error`; dozwolone także w `pending_card`)

Access
owner
Errors
400 validation_error, missing_idempotency_key, missing_reason · 401 token_revoked, token_expired, session_expired, session_revoked, login_token_invalid · 403 scope_denied, limit_exceeded, agent_suspended, plan_limit_exceeded, plan_expired, trial_expired, ip_not_allowed, csrf_rejected · 404 not_found · 409 idempotency_conflict, state_conflict · 413 payload_too_large · 415 unsupported_media_type · 422 allocation_sum_invalid, capacity_exceeded, currency_mismatch, currency_unsupported, fx_unavailable, webhook_url_invalid · 426 contract_too_old · 429 rate_limited · 500 internal_error