Splitwise Friends API
The friends API from Splitwise — 5 operation(s) for friends.
The friends API from Splitwise — 5 operation(s) for friends.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/splitwise:splitwise-friends-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
version: 3.0.0
title: Splitwise Friends API
x-logo:
url: https://www.splitwise.com/assets/press/logos/sw.svg
altText: Splitwise logo and name
description: '# Introduction
Hey there!'
servers:
- url: https://secure.splitwise.com/api/v3.0
variables: {}
security:
- OAuth: []
- ApiKeyAuth: []
tags:
- name: Friends
x-displayName: Friends
paths:
/get_friends:
get:
tags:
- Friends
summary: List current user's friends
description: '**Note**: `group` objects only include group balances with that friend.'
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
friends:
type: array
items:
allOf:
- $ref: '#/components/schemas/friend'
- title: User
'401':
$ref: '#/components/responses/unauthorized'
operationId: getGetFriends
x-operation-id-source: derived
/get_friend/{id}:
parameters:
- in: path
name: id
description: User ID of the friend
schema:
type: integer
required: true
get:
tags:
- Friends
summary: Get details about a friend
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
friend:
$ref: '#/components/schemas/friend'
'401':
$ref: '#/components/responses/unauthorized'
'403':
$ref: '#/components/responses/forbidden'
'404':
$ref: '#/components/responses/not_found'
operationId: getGetFriendById
x-operation-id-source: derived
/create_friend:
post:
tags:
- Friends
summary: Add a friend
description: 'Adds a friend. If the other user does not exist, you must supply `user_first_name`.
If the other user exists, `user_first_name` and `user_last_name` will be ignored.'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
user_email:
type: string
example: ada@example.com
user_first_name:
type: string
example: Ada
user_last_name:
type: string
example: Lovelace
required:
- email
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
friend:
$ref: '#/components/schemas/friend'
'401':
$ref: '#/components/responses/unauthorized'
operationId: postCreateFriend
x-operation-id-source: derived
/create_friends:
post:
tags:
- Friends
summary: Add friends
description: 'Add multiple friends at once.
For each user, if the other user does not exist, you must supply `users__{index}__first_name`.
**Note**: user parameters must be flattened into the format `users__{index}__{property}`, where
`property` is `first_name`, `last_name`, or `email`.'
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties:
type: string
x-additionalPropertiesName: users__{index}__{property}
example:
users__0__first_name: Alan
users__0__last_name: Turing
users__0__email: alan@example.org
users__1__email: existing_user@example.com
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
users:
type: array
items:
allOf:
- $ref: '#/components/schemas/friend'
- title: User
errors:
type: object
additionalProperties:
type: array
items:
type: string
'400':
description: Bad Request
content:
application/json:
schema:
type: object
properties:
users:
type: array
items:
allOf:
- $ref: '#/components/schemas/friend'
- title: User
example: []
errors:
type: object
additionalProperties:
type: array
items:
type: string
example:
base:
- Please supply a name for this user
example:
users: []
errors:
base:
- That user cannot be a member of this group
'401':
$ref: '#/components/responses/unauthorized'
operationId: postCreateFriends
x-operation-id-source: derived
/delete_friend/{id}:
post:
tags:
- Friends
summary: Delete friendship
description: 'Given a friend ID, break off the friendship between the current user and the specified user.
**Note**: 200 OK does not indicate a successful response. You must check the `success` value of the response.'
parameters:
- in: path
name: id
description: User ID of the friend
schema:
type: integer
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
errors:
type: object
additionalProperties:
type: array
items:
type: string
examples:
Success:
value:
success: true
errors: []
Failure:
value:
success: false
errors:
base:
- There was an issue deleting that friendship
'401':
$ref: '#/components/responses/unauthorized'
'403':
$ref: '#/components/responses/forbidden'
'404':
$ref: '#/components/responses/not_found'
operationId: postDeleteFriendById
x-operation-id-source: derived
components:
responses:
unauthorized:
description: Invalid API key or OAuth access token
content:
application/json:
schema:
$ref: '#/components/schemas/unauthorized'
forbidden:
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/forbidden'
not_found:
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/not_found'
schemas:
forbidden:
type: object
properties:
errors:
type: object
properties:
base:
type: array
items:
type: string
example: 'Invalid API request: you do not have permission to perform that action'
user:
type: object
properties:
id:
type: integer
first_name:
type: string
example: Ada
last_name:
type:
- string
- 'null'
example: Lovelace
email:
type: string
example: ada@example.com
registration_status:
type: string
enum:
- confirmed
- dummy
- invited
picture:
type: object
properties:
small:
type: string
medium:
type: string
large:
type: string
custom_picture:
type: boolean
example: false
friend:
allOf:
- $ref: '#/components/schemas/user'
- type: object
properties:
groups:
type: array
items:
type: object
properties:
group_id:
type: integer
example: 571
balance:
type: array
items:
$ref: '#/components/schemas/balance'
balance:
type: array
items:
$ref: '#/components/schemas/balance'
updated_at:
type: string
format: date-time
unauthorized:
type: object
properties:
error:
type: string
example: 'Invalid API request: you are not logged in'
balance:
type: object
properties:
currency_code:
type: string
example: USD
amount:
type: string
example: '414.5'
not_found:
type: object
properties:
errors:
type: object
properties:
base:
type: array
items:
type: string
example: 'Invalid API Request: record not found'
securitySchemes:
OAuth:
type: oauth2
description: 'Splitwise uses OAuth 2 with the authorization code flow. To connect via OAuth 2, you''ll need to [register your app](https://secure.splitwise.com/apps). When you register, you''ll be given a key and secret.
**Note**: OAuth can be a very confusing protocol to implement correctly, and we **strongly** recommend
that you use an existing OAuth library to connect to Splitwise. You can find a list of OAuth client libraries at the
[OAuth community site](https://oauth.net/code/#client-libraries).
For more information on using OAuth, check out the following resources:
- The OAuth community [getting started guide](https://oauth.net/getting-started/)
- The oauth.com [OAuth 2.0 playground](https://www.oauth.com/playground/) (great for debugging authorization issues)
- This [old Splitwise blog post](https://blog.splitwise.com/2013/07/15/setting-up-oauth-for-the-splitwise-api/) about OAuth
'
flows:
authorizationCode:
authorizationUrl: /oauth/authorize
tokenUrl: /oauth/token
scopes: {}
ApiKeyAuth:
type: http
description: 'For speed and ease of prototyping, you can generate a personal API key on your app''s details page. You should present this key to the server via the Authorization header as a Bearer token. The API key is an access token for your personal account, so keep it as safe as you would a password.
If your key becomes compromised or you want to invalidate your existing key for any other reason, you can do so on the app details page by generating a new key.'
scheme: bearer
bearerFormat: API key