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/magic-link
§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/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